From 1992088cff57ee69a66ac9b185198db9b15502c2 Mon Sep 17 00:00:00 2001 From: David Hampton Date: Sun, 29 Jan 2006 23:19:34 +0000 Subject: [PATCH] =?UTF-8?q?Andreas=20K=C3=B6hler's=20patch=20to=20fix=20a?= =?UTF-8?q?=20problem=20where=20switching=20windows=20repeatedly=20confusi?= =?UTF-8?q?ng=20the=20Windows=20menu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13039 57a11ea4-9604-0410-9ed3-97b8803252fd --- ChangeLog | 6 +++++- src/gnome-utils/gnc-main-window.c | 24 ++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15acf95943..88d6d4ff39 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,11 @@ 2006-01-29 David Hampton + * src/gnome-utils/gnc-main-window.c: Andreas Köhler's patch to fix + a problem where switching windows repeatedly confusing the + Windows menu. Fixes #327943. + * gnc-tree-model-commodity.c: Andreas Köhler's patch to fix - commodity editor warnings/crash. + commodity editor warnings/crash. Fixes #328788. 2006-01-29 Joshua Sled diff --git a/src/gnome-utils/gnc-main-window.c b/src/gnome-utils/gnc-main-window.c index 9a890668aa..6504f2e759 100644 --- a/src/gnome-utils/gnc-main-window.c +++ b/src/gnome-utils/gnc-main-window.c @@ -1123,12 +1123,12 @@ gnc_main_window_update_radio_button (GncMainWindow *window) * bottom) on the screen */ action_list = gtk_radio_action_get_group(GTK_RADIO_ACTION(action)); first_action = g_slist_last(action_list)->data; - g_signal_handlers_block_by_func(first_action, - gnc_main_window_cmd_window_raise, window); + g_signal_handlers_block_by_func(G_OBJECT(first_action), + G_CALLBACK(gnc_main_window_cmd_window_raise), window); DEBUG("blocked signal on %p, set %p active, window %p", first_action, action, window); gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), TRUE); - g_signal_handlers_unblock_by_func(first_action, - gnc_main_window_cmd_window_raise, window); + g_signal_handlers_unblock_by_func(G_OBJECT(first_action), + G_CALLBACK(gnc_main_window_cmd_window_raise), window); g_free(action_name); LEAVE(" "); } @@ -2775,19 +2775,23 @@ gnc_main_window_cmd_window_move_page (GtkAction *action, GncMainWindow *window) static void gnc_main_window_cmd_window_raise (GtkAction *action, GtkRadioAction *current, - GncMainWindow *unused) + GncMainWindow *old_window) { - GncMainWindow *window; + GncMainWindow *new_window; gint value; g_return_if_fail(GTK_IS_ACTION(action)); g_return_if_fail(GTK_IS_RADIO_ACTION(current)); - g_return_if_fail(GNC_IS_MAIN_WINDOW(unused)); + g_return_if_fail(GNC_IS_MAIN_WINDOW(old_window)); - ENTER("action %p, current %p, window %p", action, current, unused); + ENTER("action %p, current %p, window %p", action, current, old_window); value = gtk_radio_action_get_current_value(current); - window = g_list_nth_data(active_windows, value); - gtk_window_present(GTK_WINDOW(window)); + new_window = g_list_nth_data(active_windows, value); + gtk_window_present(GTK_WINDOW(new_window)); + + /* revert the change in the radio group + * impossible while handling "changed" (G_SIGNAL_NO_RECURSE) */ + g_idle_add((GSourceFunc)gnc_main_window_update_radio_button, old_window); LEAVE(" "); }