[Xfce4-commits] <xfce4-appfinder:nick/xfrun4-merge> Idle entry-changed filtering.
Nick Schermer
noreply at xfce.org
Sun Jun 26 22:10:03 CEST 2011
Updating branch refs/heads/nick/xfrun4-merge
to 162f490c36011fb3f6bfd4110c756ce2bcac1672 (commit)
from ed37f1f0d0e156ff7eb3cf0afd6dbdd2a7164d0d (commit)
commit 162f490c36011fb3f6bfd4110c756ce2bcac1672
Author: Nick Schermer <nick at xfce.org>
Date: Sun Jun 26 22:08:34 2011 +0200
Idle entry-changed filtering.
src/appfinder-window.c | 46 +++++++++++++++++++++++++++++++++++++++-------
1 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/src/appfinder-window.c b/src/appfinder-window.c
index 202a4f3..2af5e3d 100644
--- a/src/appfinder-window.c
+++ b/src/appfinder-window.c
@@ -113,6 +113,8 @@ struct _XfceAppfinderWindow
GarconMenuDirectory *filter_category;
gchar *filter_text;
+ guint idle_entry_changed_id;
+
gint last_window_height;
};
@@ -351,6 +353,9 @@ xfce_appfinder_window_finalize (GObject *object)
{
XfceAppfinderWindow *window = XFCE_APPFINDER_WINDOW (object);
+ if (window->idle_entry_changed_id != 0)
+ g_source_remove (window->idle_entry_changed_id);
+
g_object_unref (G_OBJECT (window->model));
g_object_unref (G_OBJECT (window->category_model));
g_object_unref (G_OBJECT (window->completion));
@@ -427,14 +432,16 @@ xfce_appfinder_window_set_padding (GtkWidget *entry,
-/* TODO idle */
-static void
-xfce_appfinder_window_entry_changed (XfceAppfinderWindow *window)
+static gboolean
+xfce_appfinder_window_entry_changed_idle (gpointer data)
{
- const gchar *text;
- GdkPixbuf *pixbuf;
- gchar *normalized;
- GtkTreeModel *model;
+ XfceAppfinderWindow *window = XFCE_APPFINDER_WINDOW (data);
+ const gchar *text;
+ GdkPixbuf *pixbuf;
+ gchar *normalized;
+ GtkTreeModel *model;
+
+ GDK_THREADS_ENTER ();
text = gtk_entry_get_text (GTK_ENTRY (window->entry));
@@ -466,6 +473,31 @@ xfce_appfinder_window_entry_changed (XfceAppfinderWindow *window)
if (pixbuf != NULL)
g_object_unref (G_OBJECT (pixbuf));
}
+
+ GDK_THREADS_LEAVE ();
+
+ return FALSE;
+}
+
+
+
+static void
+xfce_appfinder_window_entry_changed_idle_destroyed (gpointer data)
+{
+ XFCE_APPFINDER_WINDOW (data)->idle_entry_changed_id = 0;
+}
+
+
+
+static void
+xfce_appfinder_window_entry_changed (XfceAppfinderWindow *window)
+{
+ if (window->idle_entry_changed_id != 0)
+ g_source_remove (window->idle_entry_changed_id);
+
+ window->idle_entry_changed_id =
+ g_idle_add_full (G_PRIORITY_LOW, xfce_appfinder_window_entry_changed_idle,
+ window, xfce_appfinder_window_entry_changed_idle_destroyed);
}
More information about the Xfce4-commits
mailing list