diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-07-31 14:36:11 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-07-31 14:36:11 +0200 |
commit | 6f6f19847c045271ae2d39f330576d92a88c1667 (patch) | |
tree | 4cf043f001c766507962afc1d0302e6d62affee6 | |
parent | 37abbf405c4a0315591847056eee5608489c66de (diff) | |
download | experiment-player-6f6f19847c045271ae2d39f330576d92a88c1667.tar.gz |
prevent recursive quickopen_item_on_activate() invocations (fixes issue #1)
-rw-r--r-- | src/quick-open.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/quick-open.c b/src/quick-open.c index d55fe50..ce47a6d 100644 --- a/src/quick-open.c +++ b/src/quick-open.c @@ -220,9 +220,17 @@ refresh_quickopen_menu(GtkMenu *menu) static void reconfigure_all_check_menu_items_cb(GtkWidget *widget, gpointer user_data) { - if (GTK_IS_CHECK_MENU_ITEM(widget)) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), - widget == GTK_WIDGET(user_data)); + if (!GTK_IS_CHECK_MENU_ITEM(widget)) + return; + + g_signal_handlers_block_matched(widget, G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, + quickopen_item_on_activate, NULL); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), + widget == GTK_WIDGET(user_data)); + g_signal_handlers_unblock_matched(widget, G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, + quickopen_item_on_activate, NULL); } static void |