diff --git a/app/display/gimpdisplayshell-callbacks.c b/app/display/gimpdisplayshell-callbacks.c index ba3064ac22..b8834a3e5d 100644 --- a/app/display/gimpdisplayshell-callbacks.c +++ b/app/display/gimpdisplayshell-callbacks.c @@ -306,9 +306,16 @@ gimp_display_shell_quick_mask_toggled (GtkWidget *widget, if (active != gimp_image_get_quick_mask_state (image)) { - gimp_image_set_quick_mask_state (image, active); + GimpImageWindow *window = gimp_display_shell_get_window (shell); - gimp_image_flush (image); + if (window) + { + GimpUIManager *manager = gimp_image_window_get_ui_manager (window); + + gimp_ui_manager_toggle_action (manager, + "quick-mask", "quick-mask-toggle", + active); + } } } diff --git a/app/widgets/gimpuimanager.c b/app/widgets/gimpuimanager.c index a66f3dc585..7c26e29942 100644 --- a/app/widgets/gimpuimanager.c +++ b/app/widgets/gimpuimanager.c @@ -522,6 +522,25 @@ gimp_ui_manager_activate_action (GimpUIManager *manager, return (action != NULL); } +gboolean +gimp_ui_manager_toggle_action (GimpUIManager *manager, + const gchar *group_name, + const gchar *action_name, + gboolean active) +{ + GtkAction *action; + + g_return_val_if_fail (GIMP_IS_UI_MANAGER (manager), FALSE); + g_return_val_if_fail (action_name != NULL, FALSE); + + action = gimp_ui_manager_find_action (manager, group_name, action_name); + + if (GTK_IS_TOGGLE_ACTION (action)) + gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), + active ? TRUE : FALSE); + + return GTK_IS_TOGGLE_ACTION (action); +} void gimp_ui_manager_ui_register (GimpUIManager *manager, diff --git a/app/widgets/gimpuimanager.h b/app/widgets/gimpuimanager.h index 712cd50be2..252de05df3 100644 --- a/app/widgets/gimpuimanager.h +++ b/app/widgets/gimpuimanager.h @@ -89,6 +89,10 @@ GtkAction * gimp_ui_manager_find_action (GimpUIManager *manager, gboolean gimp_ui_manager_activate_action (GimpUIManager *manager, const gchar *group_name, const gchar *action_name); +gboolean gimp_ui_manager_toggle_action (GimpUIManager *manager, + const gchar *group_name, + const gchar *action_name, + gboolean active); void gimp_ui_manager_ui_register (GimpUIManager *manager, const gchar *ui_path,