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

Diego Ongaro ongardie at xfce.org
Mon Apr 7 01:10:07 CEST 2008


Author: ongardie
Date: 2008-04-06 23:10:07 +0000 (Sun, 06 Apr 2008)
New Revision: 4526

Modified:
   xfce4-places-plugin/trunk/panel-plugin/view.c
Log:
A perfect solution (read: huge hack) to fix the TODOs introduced previously for bug 3871


Modified: xfce4-places-plugin/trunk/panel-plugin/view.c
===================================================================
--- xfce4-places-plugin/trunk/panel-plugin/view.c	2008-04-06 23:09:54 UTC (rev 4525)
+++ xfce4-places-plugin/trunk/panel-plugin/view.c	2008-04-06 23:10:07 UTC (rev 4526)
@@ -507,6 +507,19 @@
 {
     if(view->menu != NULL){
         gtk_menu_shell_deactivate(GTK_MENU_SHELL(view->menu));
+
+#ifdef USE_RECENT_DOCUMENTS
+        if (2 != g_signal_handlers_disconnect_matched(gtk_recent_manager_get_default(), 
+                                                      G_SIGNAL_MATCH_FUNC,
+                                                      g_signal_lookup("changed", gtk_recent_manager_get_type()),
+                                                      0,
+                                                      NULL, 
+                                                      pview_cb_recent_changed,
+                                                      NULL)) {
+            DBG("Warning: did not disconnect two pview_cb_recent_changed handlers");
+        }
+#endif
+
         gtk_widget_destroy(view->menu);
         view->menu = NULL;
     }
@@ -680,7 +693,6 @@
             separator = gtk_separator_menu_item_new();
             gtk_menu_shell_append(GTK_MENU_SHELL(recent_menu), 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);
    
@@ -694,7 +706,6 @@
 
             gtk_menu_shell_append(GTK_MENU_SHELL(recent_menu), 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);
 




More information about the Goodies-commits mailing list