diff options
author | Alexander Larsson <alexl@redhat.com> | 2004-11-22 14:15:11 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2004-11-22 14:15:11 +0000 |
commit | 0f31e824f2028f5c8991b66ab67bc69bfba15772 (patch) | |
tree | 0ff9a3848b22cb1c3458f176cb95c148d3044b9a | |
parent | c476807d42acf3bda613c1e45ed0cbf8fd60aec8 (diff) | |
download | nautilus-bonobo-slay-branch.tar.gz |
Don't reenter action callback when switching views.bonobo-slay-branch
2004-11-22 Alexander Larsson <alexl@redhat.com>
* src/nautilus-window.c: (action_view_as_callback),
(nautilus_window_synch_view_as_menus):
Don't reenter action callback when switching views.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | src/nautilus-window.c | 33 |
2 files changed, 31 insertions, 8 deletions
@@ -1,3 +1,9 @@ +2004-11-22 Alexander Larsson <alexl@redhat.com> + + * src/nautilus-window.c: (action_view_as_callback), + (nautilus_window_synch_view_as_menus): + Don't reenter action callback when switching views. + 2004-11-19 Dave Camp <dave@novell.com> * src/file-manager/fm-directory-view.c: (reset_open_with_menu), diff --git a/src/nautilus-window.c b/src/nautilus-window.c index 96cc59b74..6cd1e8d77 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -108,8 +108,15 @@ enum { static guint signals[LAST_SIGNAL] = { 0 }; -static void cancel_view_as_callback (NautilusWindow *window); +typedef struct { + NautilusWindow *window; + char *id; +} ActivateViewData; + +static void cancel_view_as_callback (NautilusWindow *window); static void nautilus_window_info_iface_init (NautilusWindowInfoIface *iface); +static void action_view_as_callback (GtkAction *action, + ActivateViewData *data); static GList *history_list; @@ -636,11 +643,6 @@ nautilus_window_size_request (GtkWidget *widget, * Main API */ -typedef struct { - NautilusWindow *window; - char *id; -} ActivateViewData; - static void free_activate_view_data (gpointer data) { @@ -656,8 +658,10 @@ static void action_view_as_callback (GtkAction *action, ActivateViewData *data) { - nautilus_window_set_content_view (data->window, - data->id); + if (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))) { + nautilus_window_set_content_view (data->window, + data->id); + } } static GtkRadioAction * @@ -826,7 +830,20 @@ nautilus_window_synch_view_as_menus (NautilusWindow *window) action_name); g_free (action_name); + /* Don't trigger the action callback when we're synchronizing */ + g_signal_handlers_block_matched (action, + G_SIGNAL_MATCH_FUNC, + 0, 0, + NULL, + action_view_as_callback, + NULL); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); + g_signal_handlers_unblock_matched (action, + G_SIGNAL_MATCH_FUNC, + 0, 0, + NULL, + action_view_as_callback, + NULL); } static void |