[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