[Xfce4-commits] <mousepad:master> * 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).

Nick Schermer noreply at xfce.org
Sat May 5 21:30:45 CEST 2012


Updating branch refs/heads/master
         to 2d17e63c32d75fb9fb7f98e8660b4980ec24af7d (commit)
       from 8a4f2f2e71d3fa064295bbbe0ca4697e562878f3 (commit)

commit 2d17e63c32d75fb9fb7f98e8660b4980ec24af7d
Author: Nick Schermer <nick at xfce.org>
Date:   Wed Oct 17 11:02:46 2007 +0000

    * 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).
    
    
    (Old svn revision: 26141)

 ChangeLog                  |    6 ++++++
 mousepad/mousepad-window.c |   24 ++++++++++++++----------
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 213e47c..d5e4762 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
 2007-10-17      Nick Schermer <nick at xfce.org>
+    * 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 <nick at xfce.org>
     * mousepad/mousepad-{window,util}.c: Fix compiler warnings.
 
 
diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
index e8f3605..578582b 100644
--- a/mousepad/mousepad-window.c
+++ b/mousepad/mousepad-window.c
@@ -511,8 +511,7 @@ mousepad_window_init (MousepadWindow *window)
   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 @@ static void
 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 @@ mousepad_window_recent_menu_idle_destroy (gpointer user_data)
 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 @@ mousepad_window_action_close (GtkAction      *action,
 
           /* 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 */
 }


More information about the Xfce4-commits mailing list