[Goodies-commits] r4525 - xfce4-places-plugin/trunk/panel-plugin

Diego Ongaro ongardie at xfce.org
Mon Apr 7 01:09:55 CEST 2008


Author: ongardie
Date: 2008-04-06 23:09:54 +0000 (Sun, 06 Apr 2008)
New Revision: 4525

Modified:
   xfce4-places-plugin/trunk/panel-plugin/view.c
Log:
For bug 3871, don't allow Recent Documents Clear when there's nothing there


Modified: xfce4-places-plugin/trunk/panel-plugin/view.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/view.c	2008-04-06 22:25:55 UTC (rev 4524)
+++ xfce4-places-plugin/trunk/panel-plugin/view.c	2008-04-06 23:09:54 UTC (rev 4525)
@@ -483,6 +483,20 @@
     return pview_cb_recent_items_clear(clear_item, recent_menu);
 }
 
+static void
+pview_cb_recent_changed(GtkRecentManager *recent_manager, GtkWidget *clear_item)
+{
+    int recent_count;
+    g_object_get(recent_manager,
+                 "size", &recent_count,
+                 NULL);
+
+    if (recent_count > 0)
+        gtk_widget_show(clear_item);
+    else
+        gtk_widget_hide(clear_item);
+}
+
 #endif
 
 
@@ -575,6 +589,7 @@
     GtkWidget *recent_menu;
     GtkWidget *clear_item;
     GtkWidget *recent_item;
+    GtkRecentManager *recent_manager = gtk_recent_manager_get_default();
 #endif
 
     DBG("destroy menu");
@@ -664,7 +679,10 @@
 
             separator = gtk_separator_menu_item_new();
             gtk_menu_shell_append(GTK_MENU_SHELL(recent_menu), separator);
-            gtk_widget_show(separator);
+            pview_cb_recent_changed(recent_manager, separator);
+            /* TODO: this leaks a pointer to separator, which may be destroyed later */
+            g_signal_connect(recent_manager, "changed",
+                             G_CALLBACK(pview_cb_recent_changed), separator);
    
             if(pd->cfg->show_icons){
                 clear_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLEAR, NULL);
@@ -675,7 +693,10 @@
             }
 
             gtk_menu_shell_append(GTK_MENU_SHELL(recent_menu), clear_item);
-            gtk_widget_show(clear_item);
+            pview_cb_recent_changed(recent_manager, clear_item);
+            /* TODO: this leaks a pointer to clear_item, which may be destroyed later */
+            g_signal_connect(recent_manager, "changed",
+                             G_CALLBACK(pview_cb_recent_changed), clear_item);
 
             /* try button-release-event to catch mouse clicks and not hide the menu after */
             g_signal_connect(clear_item, "button-release-event",




More information about the Goodies-commits mailing list