void dock_actions_update (GimpActionGroup *group, gpointer data) { GtkWidget *widget = action_data_get_widget (data); GtkWidget *toplevel = NULL; if (widget) toplevel = gtk_widget_get_toplevel (widget); #define SET_ACTIVE(action,active) \ gimp_action_group_set_action_active (group, action, (active) != 0) #define SET_VISIBLE(action,active) \ gimp_action_group_set_action_visible (group, action, (active) != 0) if (GIMP_IS_DOCK_WINDOW (toplevel)) { GimpDockWindow *dock_window = GIMP_DOCK_WINDOW (toplevel); gboolean show_image_menu = ! gimp_dock_window_has_toolbox (dock_window); if (show_image_menu) { SET_VISIBLE ("dock-show-image-menu", TRUE); SET_VISIBLE ("dock-auto-follow-active", TRUE); SET_ACTIVE ("dock-show-image-menu", gimp_dock_window_get_show_image_menu (dock_window)); SET_ACTIVE ("dock-auto-follow-active", gimp_dock_window_get_auto_follow_active (dock_window)); } else { SET_VISIBLE ("dock-show-image-menu", FALSE); SET_VISIBLE ("dock-auto-follow-active", FALSE); } /* update the window actions only in the context of their * own window (not in the context of some display or NULL) * (see view-actions.c) */ window_actions_update (group, toplevel); } else if (GIMP_IS_IMAGE_WINDOW (toplevel)) { SET_VISIBLE ("dock-show-image-menu", FALSE); SET_VISIBLE ("dock-auto-follow-active", FALSE); } #undef SET_ACTIVE #undef SET_VISIBLE }
GtkWidget * dialogs_get_toolbox (void) { GList *list; g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (gimp_dialog_factory_get_singleton ()), NULL); for (list = gimp_dialog_factory_get_open_dialogs (gimp_dialog_factory_get_singleton ()); list; list = g_list_next (list)) { if (GIMP_IS_DOCK_WINDOW (list->data) && gimp_dock_window_has_toolbox (list->data)) return list->data; } return NULL; }