[Xfce4-commits] <xfce4-settings:master> Fix menu reloading.

Nick Schermer noreply at xfce.org
Fri Jan 27 21:58:01 CET 2012


Updating branch refs/heads/master
         to 3b28c1f9f28943e2c060b5be986d7a07b0e054ab (commit)
       from 7b97ce5c7043243c341df39fc7a81b722123fa79 (commit)

commit 3b28c1f9f28943e2c060b5be986d7a07b0e054ab
Author: Nick Schermer <nick at xfce.org>
Date:   Fri Jan 27 21:57:19 2012 +0100

    Fix menu reloading.

 .../xfce-settings-manager-dialog.c                 |   22 +++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/xfce4-settings-manager/xfce-settings-manager-dialog.c b/xfce4-settings-manager/xfce-settings-manager-dialog.c
index 4361993..c6c5ced 100644
--- a/xfce4-settings-manager/xfce-settings-manager-dialog.c
+++ b/xfce4-settings-manager/xfce-settings-manager-dialog.c
@@ -993,7 +993,10 @@ xfce_settings_manager_start_search (GtkWidget                 *iconview,
 static void
 xfce_settings_manager_dialog_category_free (gpointer data)
 {
-    DialogCategory *category = data;
+    DialogCategory            *category = data;
+    XfceSettingsManagerDialog *dialog = category->dialog;
+
+    dialog->categories = g_list_remove (dialog->categories, category);
 
     g_object_unref (G_OBJECT (category->directory));
     g_slice_free (DialogCategory, category);
@@ -1147,16 +1150,33 @@ xfce_settings_manager_dialog_menu_reload (XfceSettingsManagerDialog *dialog)
 {
     GError              *error = NULL;
     GList               *elements, *li;
+    GList               *lnext;
     GarconMenuDirectory *directory;
     GList               *items, *lp;
     gint                 i = 0;
     gchar               *item_text;
     gchar               *normalized;
     gchar               *filter_text;
+    DialogCategory      *cateogry;
 
     g_return_if_fail (XFCE_IS_SETTINGS_MANAGER_DIALOG (dialog));
     g_return_if_fail (GARCON_IS_MENU (dialog->menu));
 
+    if (dialog->categories != NULL)
+    {
+        for (li = dialog->categories; li != NULL; li = lnext)
+        {
+            lnext = li->next;
+            cateogry = li->data;
+
+            gtk_widget_destroy (cateogry->box);
+        }
+
+        g_assert (dialog->categories == NULL);
+
+        gtk_list_store_clear (GTK_LIST_STORE (dialog->store));
+    }
+
     if (garcon_menu_load (dialog->menu, NULL, &error))
     {
         /* get all menu elements (preserve layout) */


More information about the Xfce4-commits mailing list