[Xfce4-commits] <xfce4-appfinder:master> Avoid unneeded category refilter.

Nick Schermer noreply at xfce.org
Sat Jul 9 16:18:22 CEST 2011


Updating branch refs/heads/master
         to b6f1f951eb0cd98f3bc02fa32ba71ea0d3f173d3 (commit)
       from 84fbf8384cfdae3e46b3cccc2155dc57a0ea087b (commit)

commit b6f1f951eb0cd98f3bc02fa32ba71ea0d3f173d3
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Jul 3 22:34:48 2011 +0200

    Avoid unneeded category refilter.

 src/appfinder-window.c |   30 ++++++++++++++++++------------
 1 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/appfinder-window.c b/src/appfinder-window.c
index 1bdd5a1..fbb9719 100644
--- a/src/appfinder-window.c
+++ b/src/appfinder-window.c
@@ -634,23 +634,29 @@ xfce_appfinder_window_category_changed (GtkTreeSelection    *selection,
                           XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_DIRECTORY, &category,
                           XFCE_APPFINDER_CATEGORY_MODEL_COLUMN_NAME, &name, -1);
 
-      if (window->filter_category != NULL)
-        g_object_unref (G_OBJECT (window->filter_category));
+      if (window->filter_category != category)
+        {
+          if (window->filter_category != NULL)
+            g_object_unref (G_OBJECT (window->filter_category));
 
-      if (category == NULL)
-        window->filter_category = NULL;
-      else
-        window->filter_category = category;
+          if (category == NULL)
+            window->filter_category = NULL;
+          else
+            window->filter_category = g_object_ref (G_OBJECT (category));
 
-      APPFINDER_DEBUG ("refilter category");
+          APPFINDER_DEBUG ("refilter category");
 
-      /* update visible items */
-      model = gtk_tree_view_get_model (GTK_TREE_VIEW (window->treeview));
-      gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (model));
+          /* update visible items */
+          model = gtk_tree_view_get_model (GTK_TREE_VIEW (window->treeview));
+          gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (model));
+
+          /* store last category */
+          xfconf_channel_set_string (window->channel, "/LastCategory", name);
+        }
 
-      /* store last category */
-      xfconf_channel_set_string (window->channel, "/LastCategory", name);
       g_free (name);
+      if (category != NULL)
+        g_object_unref (G_OBJECT (category));
     }
 }
 



More information about the Xfce4-commits mailing list