Author: nick
Date: 2007-10-17 11:02:46 +0000 (Wed, 17 Oct 2007)
New Revision: 26141

Modified:
   mousepad/branches/nick_0_3/ChangeLog
   mousepad/branches/nick_0_3/mousepad/mousepad-window.c
Log:
* mousepad/mousepad-window.c: Decrease the menu lock when a window
  is closed and disconnect the recent manager handler (this is a
  bug since 2.12 because the manager is a floating object).


Modified: mousepad/branches/nick_0_3/ChangeLog
===================================================================
--- mousepad/branches/nick_0_3/ChangeLog        2007-10-17 09:48:30 UTC (rev 
26140)
+++ mousepad/branches/nick_0_3/ChangeLog        2007-10-17 11:02:46 UTC (rev 
26141)
@@ -1,4 +1,10 @@
 2007-10-17      Nick Schermer <[EMAIL PROTECTED]>
+    * mousepad/mousepad-window.c: Decrease the menu lock when a window
+      is closed and disconnect the recent manager handler (this is a
+      bug since 2.12 because the manager is a floating object).
+
+
+2007-10-17      Nick Schermer <[EMAIL PROTECTED]>
     * mousepad/mousepad-{window,util}.c: Fix compiler warnings.
 
 

Modified: mousepad/branches/nick_0_3/mousepad/mousepad-window.c
===================================================================
--- mousepad/branches/nick_0_3/mousepad/mousepad-window.c       2007-10-17 
09:48:30 UTC (rev 26140)
+++ mousepad/branches/nick_0_3/mousepad/mousepad-window.c       2007-10-17 
11:02:46 UTC (rev 26141)
@@ -511,8 +511,7 @@
   window->recent_manager = gtk_recent_manager_get_default ();
   window->recent_actions = gtk_action_group_new ("RecentActions");
   gtk_ui_manager_insert_action_group (window->ui_manager, 
window->recent_actions, -1);
-  g_signal_connect_swapped (G_OBJECT (window->recent_manager), "changed",
-                            G_CALLBACK (mousepad_window_recent_menu), window);
+  g_signal_connect_swapped (G_OBJECT (window->recent_manager), "changed", 
G_CALLBACK (mousepad_window_recent_menu), window);
 
   /* create the recent menu */
   mousepad_window_recent_menu (window);
@@ -610,6 +609,9 @@
 mousepad_window_dispose (GObject *object)
 {
   MousepadWindow *window = MOUSEPAD_WINDOW (object);
+  
+  /* disconnect recent manager signal */
+  g_signal_handlers_disconnect_by_func (G_OBJECT (window->recent_manager), 
mousepad_window_recent_menu, window);
 
   /* destroy the save geometry timer source */
   if (G_UNLIKELY (window->save_geometry_timer_id != 0))
@@ -1923,12 +1925,14 @@
 static void
 mousepad_window_recent_menu (MousepadWindow *window)
 {
+  _mousepad_return_if_fail (MOUSEPAD_IS_WINDOW (window));
+  
   /* leave when we're updating multiple files or there is this an idle 
function pending */
-  if (lock_menu_updates && window->update_recent_menu_id != 0)
+  if (lock_menu_updates > 0 || window->update_recent_menu_id != 0)
     return;
 
   /* schedule a recent menu update */
-  window->update_recent_menu_id = g_idle_add_full (G_PRIORITY_LOW, 
(GSourceFunc) mousepad_window_recent_menu_idle,
+  window->update_recent_menu_id = g_idle_add_full (G_PRIORITY_LOW, 
mousepad_window_recent_menu_idle,
                                                    window, 
mousepad_window_recent_menu_idle_destroy);
 }
 
@@ -2539,18 +2543,18 @@
 
           /* ask user what to do, break when he/she hits the cancel button */
           if (!mousepad_window_close_document (window, MOUSEPAD_DOCUMENT 
(document)))
-            {
-              /* allow updates again */
-              lock_menu_updates--;
-
+            {        
               /* update the go menu */
               mousepad_window_update_gomenu (window);
 
-              /* leave the close function */
-              return;
+              /* leave the loop */
+              break;
             }
         }
     }
+    
+  /* allow updates again */
+  lock_menu_updates--;
 
   /* window will close it self when it contains to tabs */
 }

_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to