Changed menubar showing/hiding to work like rulers and statusbar:

2002-12-14  Michael Natterer  <mitch@gimp.org>

	Changed menubar showing/hiding to work like rulers and statusbar:

	* app/config/gimpconfig-blurbs.h
	* app/config/gimpdisplayconfig.[ch]: renamed "menu_bar_per_display"
	to "show_menubar". Removed GIMP_PARAM_RESTART flag.

	* app/display/gimpdisplayshell.[ch]: chaged shell->item_factory to
	shell->menubar_factory plus shell->popup_factory and always create
	both of them. Added "gboolean update_popup" to
	gimp_display_shell_set_menu_sensitivity() and call it recursively
	with update_popup == TRUE if the display it is called for is the
	active one.

	* app/display/gimpdisplay.c
	* app/display/gimpdisplayshell-callbacks.c: changed accordinly.

	* app/gui/gui.c: ditto. Set the menu sensitivity of new displays.

	* app/gui/menus.c: added "<Image>/View/Toggle Menubar" menu item.
	Moved some factory initialization code from gimpdisplayshell.c
	here.

	* app/gui/view-commands.[ch]: added
	view_toggle_menubar_cmd_callback(). Update the menu sensitivity
	manually in all callbacks which don't call gimp_image_flush().

	* app/gui/preferences-dialog.c (prefs_dialog_new): moved the "Show
	Menubar" toggle to the "Appearance" frame of the "Image Windows"
	page. Added an own frame for the display zoom/scaling settings.

	(preferences_dialog_create): Attach config_copy and config_orig
	using g_object_set_data_full() instead of just g_object_set_data()
	plus a g_object_weak_ref().

	(prefs_default_resolution_callback): set the resolution for both
	fields of the "size_sizeentry" instead of setting it for "x"
	twice.
This commit is contained in:
Michael Natterer 2002-12-14 14:13:54 +00:00 committed by Michael Natterer
parent e390f9a4a5
commit f03b6b6d75
20 changed files with 410 additions and 310 deletions

View File

@ -1,3 +1,43 @@
2002-12-14 Michael Natterer <mitch@gimp.org>
Changed menubar showing/hiding to work like rulers and statusbar:
* app/config/gimpconfig-blurbs.h
* app/config/gimpdisplayconfig.[ch]: renamed "menu_bar_per_display"
to "show_menubar". Removed GIMP_PARAM_RESTART flag.
* app/display/gimpdisplayshell.[ch]: chaged shell->item_factory to
shell->menubar_factory plus shell->popup_factory and always create
both of them. Added "gboolean update_popup" to
gimp_display_shell_set_menu_sensitivity() and call it recursively
with update_popup == TRUE if the display it is called for is the
active one.
* app/display/gimpdisplay.c
* app/display/gimpdisplayshell-callbacks.c: changed accordinly.
* app/gui/gui.c: ditto. Set the menu sensitivity of new displays.
* app/gui/menus.c: added "<Image>/View/Toggle Menubar" menu item.
Moved some factory initialization code from gimpdisplayshell.c
here.
* app/gui/view-commands.[ch]: added
view_toggle_menubar_cmd_callback(). Update the menu sensitivity
manually in all callbacks which don't call gimp_image_flush().
* app/gui/preferences-dialog.c (prefs_dialog_new): moved the "Show
Menubar" toggle to the "Appearance" frame of the "Image Windows"
page. Added an own frame for the display zoom/scaling settings.
(preferences_dialog_create): Attach config_copy and config_orig
using g_object_set_data_full() instead of just g_object_set_data()
plus a g_object_weak_ref().
(prefs_default_resolution_callback): set the resolution for both
fields of the "size_sizeentry" instead of setting it for "x"
twice.
2002-12-14 Maurits Rijk <lpeek.mrijk@consunet.nl>
* plug-ins/imagemap/imap_preferences.c: make sure that undo level

View File

@ -202,6 +202,33 @@ view_toggle_layer_boundary_cmd_callback (GtkWidget *widget,
}
}
void
view_toggle_menubar_cmd_callback (GtkWidget *widget,
gpointer data)
{
GimpDisplay *gdisp;
GimpDisplayShell *shell;
GtkWidget *menubar;
return_if_no_display (gdisp, data);
shell = GIMP_DISPLAY_SHELL (gdisp->shell);
menubar = GTK_ITEM_FACTORY (shell->menubar_factory)->widget;
if (! GTK_CHECK_MENU_ITEM (widget)->active)
{
if (GTK_WIDGET_VISIBLE (menubar))
gtk_widget_hide (menubar);
}
else
{
if (! GTK_WIDGET_VISIBLE (menubar))
gtk_widget_show (menubar);
}
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
void
view_toggle_rulers_cmd_callback (GtkWidget *widget,
gpointer data)
@ -217,11 +244,9 @@ view_toggle_rulers_cmd_callback (GtkWidget *widget,
if (! GTK_CHECK_MENU_ITEM (widget)->active)
{
if (GTK_WIDGET_VISIBLE (shell->hrule))
if (GTK_WIDGET_VISIBLE (shell->origin))
{
if (! config->menu_bar_per_display)
gtk_widget_hide (shell->origin);
gtk_widget_hide (shell->origin);
gtk_widget_hide (shell->hrule);
gtk_widget_hide (shell->vrule);
@ -230,17 +255,17 @@ view_toggle_rulers_cmd_callback (GtkWidget *widget,
}
else
{
if (! GTK_WIDGET_VISIBLE (shell->hrule))
if (! GTK_WIDGET_VISIBLE (shell->origin))
{
if (! config->menu_bar_per_display)
gtk_widget_show (shell->origin);
gtk_widget_show (shell->origin);
gtk_widget_show (shell->hrule);
gtk_widget_show (shell->vrule);
gtk_widget_queue_resize (GTK_WIDGET (shell->origin->parent));
}
}
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
void
@ -263,6 +288,8 @@ view_toggle_statusbar_cmd_callback (GtkWidget *widget,
if (! GTK_WIDGET_VISIBLE (shell->statusbar))
gtk_widget_show (shell->statusbar);
}
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
void
@ -291,6 +318,9 @@ view_snap_to_guides_cmd_callback (GtkWidget *widget,
return_if_no_display (gdisp, data);
gdisp->snap_to_guides = GTK_CHECK_MENU_ITEM (widget)->active;
gimp_display_shell_set_menu_sensitivity (GIMP_DISPLAY_SHELL (gdisp->shell),
gdisp->gimage->gimp, FALSE);
}
void

View File

@ -41,6 +41,8 @@ void view_toggle_selection_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_layer_boundary_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_menubar_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_rulers_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_statusbar_cmd_callback (GtkWidget *widget,

View File

@ -127,13 +127,17 @@
#define PREVIEW_SIZE_BLURB \
"Set the default preview size."
#define SHOW_MENUBAR_BLURB \
"Set the menubar visibility. This can also be toggled with the "\
"View->Toggle Menubar command."
#define SHOW_RULERS_BLURB \
"Set the ruler visibility. This can also be toggled with the "\
"View->Toggle Rulers command or Shift+Control+R."
"View->Toggle Rulers command."
#define SHOW_STATUSBAR_BLURB \
"Controlling statusbar visibility. This can also be toggled with "\
"the View->Toggle Statusbar command or Shift+Control+S."
"the View->Toggle Statusbar command."
#define INTERPOLATION_TYPE_BLURB \
"Set the level of interpolation used for scaling and other transformations."
@ -249,7 +253,6 @@
#define NAVIGATION_PREVIEW_SIZE_BLURB NULL
#define CANVAS_PADDING_MODE_BLURB NULL
#define CANVAS_PADDING_COLOR_BLURB NULL
#define MENU_BAR_PER_DISPLAY_BLURB NULL
#define HELP_BROWSER_BLURB NULL
#define MAX_NEW_IMAGE_SIZE_BLURB NULL

View File

@ -64,6 +64,7 @@ enum
PROP_CURSOR_UPDATING,
PROP_IMAGE_TITLE_FORMAT,
PROP_IMAGE_STATUS_FORMAT,
PROP_SHOW_MENUBAR,
PROP_SHOW_RULERS,
PROP_SHOW_STATUSBAR,
PROP_CONFIRM_ON_CLOSE,
@ -72,8 +73,7 @@ enum
PROP_MONITOR_RES_FROM_GDK,
PROP_NAV_PREVIEW_SIZE,
PROP_CANVAS_PADDING_MODE,
PROP_CANVAS_PADDING_COLOR,
PROP_MENU_BAR_PER_DISPLAY
PROP_CANVAS_PADDING_COLOR
};
static GObjectClass *parent_class = NULL;
@ -170,6 +170,10 @@ gimp_display_config_class_init (GimpDisplayConfigClass *klass)
IMAGE_STATUS_FORMAT_BLURB,
DEFAULT_IMAGE_STATUS_FORMAT,
0);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_SHOW_MENUBAR,
"show-menubar", SHOW_MENUBAR_BLURB,
FALSE,
0);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_SHOW_RULERS,
"show-rulers", SHOW_RULERS_BLURB,
TRUE,
@ -214,11 +218,6 @@ gimp_display_config_class_init (GimpDisplayConfigClass *klass)
CANVAS_PADDING_COLOR_BLURB,
&white,
0);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_MENU_BAR_PER_DISPLAY,
"menu-bar-per-display",
MENU_BAR_PER_DISPLAY_BLURB,
FALSE,
GIMP_PARAM_RESTART);
}
static void
@ -278,6 +277,9 @@ gimp_display_config_set_property (GObject *object,
g_free (display_config->image_status_format);
display_config->image_status_format = g_value_dup_string (value);
break;
case PROP_SHOW_MENUBAR:
display_config->show_menubar = g_value_get_boolean (value);
break;
case PROP_SHOW_RULERS:
display_config->show_rulers = g_value_get_boolean (value);
break;
@ -305,9 +307,6 @@ gimp_display_config_set_property (GObject *object,
case PROP_CANVAS_PADDING_COLOR:
display_config->canvas_padding_color = *(GimpRGB *) g_value_get_boxed (value);
break;
case PROP_MENU_BAR_PER_DISPLAY:
display_config->menu_bar_per_display = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@ -357,6 +356,9 @@ gimp_display_config_get_property (GObject *object,
case PROP_IMAGE_STATUS_FORMAT:
g_value_set_string (value, display_config->image_status_format);
break;
case PROP_SHOW_MENUBAR:
g_value_set_boolean (value, display_config->show_menubar);
break;
case PROP_SHOW_RULERS:
g_value_set_boolean (value, display_config->show_rulers);
break;
@ -384,9 +386,6 @@ gimp_display_config_get_property (GObject *object,
case PROP_CANVAS_PADDING_COLOR:
g_value_set_boxed (value, &display_config->canvas_padding_color);
break;
case PROP_MENU_BAR_PER_DISPLAY:
g_value_set_boolean (value, display_config->menu_bar_per_display);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);

View File

@ -50,6 +50,7 @@ struct _GimpDisplayConfig
gboolean cursor_updating;
gchar *image_title_format;
gchar *image_status_format;
gboolean show_menubar;
gboolean show_rulers;
gboolean show_statusbar;
gboolean confirm_on_close;
@ -59,7 +60,6 @@ struct _GimpDisplayConfig
GimpPreviewSize nav_preview_size;
GimpDisplayPaddingMode canvas_padding_mode;
GimpRGB canvas_padding_color;
gboolean menu_bar_per_display;
};
struct _GimpDisplayConfigClass

View File

@ -471,12 +471,9 @@ gimp_display_flush_whenever (GimpDisplay *gdisp,
/* Next the displays... */
gimp_display_shell_flush (shell);
/* ensure the consistency of the tear-off menus */
if (! now && gimp_context_get_display (gimp_get_user_context
(gdisp->gimage->gimp)) == gdisp)
{
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp);
}
/* ensure the consistency of the menus */
if (! now)
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
static void

View File

@ -115,16 +115,12 @@ preferences_dialog_create (Gimp *gimp)
g_object_add_weak_pointer (G_OBJECT (prefs_dialog),
(gpointer *) &prefs_dialog);
g_object_weak_ref (G_OBJECT (prefs_dialog),
(GWeakNotify) g_object_unref,
config_copy);
g_object_weak_ref (G_OBJECT (prefs_dialog),
(GWeakNotify) g_object_unref,
config_orig);
g_object_set_data (G_OBJECT (prefs_dialog), "gimp", gimp);
g_object_set_data (G_OBJECT (prefs_dialog), "gimp", gimp);
g_object_set_data (G_OBJECT (prefs_dialog), "config-copy", config_copy);
g_object_set_data (G_OBJECT (prefs_dialog), "config-orig", config_orig);
g_object_set_data_full (G_OBJECT (prefs_dialog), "config-copy", config_copy,
(GDestroyNotify) g_object_unref);
g_object_set_data_full (G_OBJECT (prefs_dialog), "config-orig", config_orig,
(GDestroyNotify) g_object_unref);
return prefs_dialog;
}
@ -350,7 +346,7 @@ prefs_default_resolution_callback (GtkWidget *widget,
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_sizeentry), 0,
xres, FALSE);
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_sizeentry), 0,
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_sizeentry), 1,
yres, FALSE);
}
@ -364,23 +360,24 @@ prefs_res_source_callback (GtkWidget *widget,
gimp_toggle_button_sensitive_update (GTK_TOGGLE_BUTTON (widget));
gui_get_screen_resolution (&xres, &yres);
from_gdk = TRUE;
from_gdk = GTK_TOGGLE_BUTTON (widget)->active;
if (! GTK_TOGGLE_BUTTON (widget)->active)
if (from_gdk)
{
gui_get_screen_resolution (&xres, &yres);
}
else
{
GimpSizeEntry *sizeentry;
sizeentry = g_object_get_data (G_OBJECT (widget),
"monitor_resolution_sizeentry");
if (sizeentry)
{
xres = gimp_size_entry_get_refval (sizeentry, 0);
yres = gimp_size_entry_get_refval (sizeentry, 1);
}
from_gdk = FALSE;
}
g_object_set (config,
@ -1147,9 +1144,6 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (config, "tearoff-menus",
_("Enable _Tearoff Menus"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "menu-bar-per-display",
_("Menu _Bar Per Display"),
GTK_BOX (vbox2));
/* Window Positions */
vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE);
@ -1334,11 +1328,8 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (config, "default-dot-for-dot",
_("Use \"_Dot for Dot\" by default"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "resize-windows-on-zoom",
_("Resize Window on _Zoom"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "resize-windows-on-resize",
_("Resize Window on Image _Size Change"),
prefs_check_button_add (config, "show-menubar",
_("Show Menubar"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "show-rulers",
_("Show _Rulers"),
@ -1368,6 +1359,17 @@ prefs_dialog_new (Gimp *gimp,
gimp_color_panel_set_context (GIMP_COLOR_PANEL (button),
gimp_get_user_context (gimp));
/* Zoom & Resize Behaviour */
vbox2 = prefs_frame_new (_("Zoom & Resize Behaviour"),
GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (config, "resize-windows-on-zoom",
_("Resize Window on _Zoom"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "resize-windows-on-resize",
_("Resize Window on Image _Size Change"),
GTK_BOX (vbox2));
/* Pointer Movement Feedback */
vbox2 = prefs_frame_new (_("Pointer Movement Feedback"),
GTK_CONTAINER (vbox), FALSE);

View File

@ -471,12 +471,9 @@ gimp_display_flush_whenever (GimpDisplay *gdisp,
/* Next the displays... */
gimp_display_shell_flush (shell);
/* ensure the consistency of the tear-off menus */
if (! now && gimp_context_get_display (gimp_get_user_context
(gdisp->gimage->gimp)) == gdisp)
{
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp);
}
/* ensure the consistency of the menus */
if (! now)
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
static void

View File

@ -121,7 +121,7 @@ gimp_display_shell_events (GtkWidget *widget,
GdkEventKey *kevent;
case GDK_KEY_PRESS:
if (! GIMP_DISPLAY_CONFIG (gimp->config)->menu_bar_per_display)
if (! GTK_WIDGET_VISIBLE (GTK_ITEM_FACTORY (shell->menubar_factory)->widget))
{
gchar *accel = NULL;
@ -607,10 +607,9 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas,
case 3:
state |= GDK_BUTTON3_MASK;
if (! GIMP_DISPLAY_CONFIG (gimage->gimp->config)->menu_bar_per_display)
gimp_item_factory_popup_with_data (shell->item_factory,
gimage,
NULL);
gimp_item_factory_popup_with_data (shell->popup_factory,
gimage,
NULL);
return_val = TRUE;
break;
@ -1568,7 +1567,7 @@ gimp_display_shell_origin_menu_popup (GimpDisplayShell *shell,
GtkItemFactory *factory;
gint x, y;
factory = GTK_ITEM_FACTORY (shell->item_factory);
factory = GTK_ITEM_FACTORY (shell->popup_factory);
gimp_display_shell_origin_menu_position (GTK_MENU (factory->widget),
&x, &y,

View File

@ -210,7 +210,8 @@ static void
gimp_display_shell_init (GimpDisplayShell *shell)
{
shell->gdisp = NULL;
shell->item_factory = NULL;
shell->menubar_factory = NULL;
shell->popup_factory = NULL;
shell->scale = 0;
shell->dot_for_dot = TRUE;
@ -340,12 +341,14 @@ gimp_display_shell_destroy (GtkObject *object)
gimp_display_shell_disconnect (shell);
}
if (shell->item_factory)
if (shell->menubar_factory)
{
g_object_unref (shell->item_factory);
shell->item_factory = NULL;
g_object_unref (shell->menubar_factory);
shell->menubar_factory = NULL;
}
shell->popup_factory = NULL;
if (shell->select)
{
gimp_display_shell_selection_free (shell->select);
@ -418,6 +421,7 @@ gimp_display_shell_new (GimpDisplay *gdisp,
GtkWidget *inner_table;
GtkWidget *arrow;
GtkWidget *image;
GtkWidget *menubar;
gint image_width, image_height;
gint n_width, n_height;
gint s_width, s_height;
@ -468,25 +472,16 @@ gimp_display_shell_new (GimpDisplay *gdisp,
shell->scale = (scaledest << 8) + scalesrc;
if (config->menu_bar_per_display)
{
shell->item_factory =
menus_get_new_image_factory (shell->gdisp->gimage->gimp,
shell->gdisp,
TRUE);
}
else
{
shell->item_factory =
menus_get_new_image_factory (shell->gdisp->gimage->gimp,
shell->gdisp->gimage->gimp,
FALSE);
g_object_ref (shell->item_factory);
}
shell->menubar_factory =
menus_get_new_image_factory (shell->gdisp->gimage->gimp,
shell->gdisp,
TRUE);
shell->popup_factory = gimp_item_factory_from_path ("<Image>");
/* The accelerator table for images */
gimp_window_add_accel_group (GTK_WINDOW (shell),
GTK_ITEM_FACTORY (shell->item_factory),
GTK_ITEM_FACTORY (shell->menubar_factory),
gimp_display_shell_get_accel_context,
shell);
@ -529,49 +524,33 @@ gimp_display_shell_new (GimpDisplay *gdisp,
/* the vbox containing all widgets */
if (config->menu_bar_per_display)
{
GtkWidget *menu_bar;
main_vbox = gtk_vbox_new (FALSE, 0);
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (shell->item_factory),
"/tearoff1", FALSE);
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (shell->item_factory),
"/filters-separator", FALSE);
menu_bar = GTK_ITEM_FACTORY (shell->item_factory)->widget;
gtk_box_pack_start (GTK_BOX (main_vbox), menu_bar, FALSE, FALSE, 0);
gtk_widget_show (menu_bar);
/* active display callback */
g_signal_connect (G_OBJECT (menu_bar), "button_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menu_bar), "button_release_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menu_bar), "key_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
}
else
{
main_vbox = gtk_vbox_new (FALSE, 2);
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 2);
}
main_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (shell), main_vbox);
menubar = GTK_ITEM_FACTORY (shell->menubar_factory)->widget;
gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, FALSE, 0);
if (config->show_menubar)
gtk_widget_show (menubar);
/* active display callback */
g_signal_connect (G_OBJECT (menubar), "button_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menubar), "button_release_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menubar), "key_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
/* another vbox for everything except the statusbar */
disp_vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (disp_vbox), 2);
gtk_box_pack_start (GTK_BOX (main_vbox), disp_vbox, TRUE, TRUE, 0);
gtk_widget_show (disp_vbox);
if (config->menu_bar_per_display)
gtk_container_set_border_width (GTK_CONTAINER (disp_vbox), 2);
/* a hbox for the inner_table and the vertical scrollbar */
upper_hbox = gtk_hbox_new (FALSE, 1);
gtk_box_pack_start (GTK_BOX (disp_vbox), upper_hbox, TRUE, TRUE, 0);
@ -805,9 +784,7 @@ gimp_display_shell_new (GimpDisplay *gdisp,
if (config->show_rulers)
{
if (! config->menu_bar_per_display)
gtk_widget_show (shell->origin);
gtk_widget_show (shell->origin);
gtk_widget_show (shell->hrule);
gtk_widget_show (shell->vrule);
}
@ -822,9 +799,7 @@ gimp_display_shell_new (GimpDisplay *gdisp,
gtk_widget_show (shell->nav_ebox);
if (config->show_statusbar)
{
gtk_widget_show (shell->statusbar);
}
gtk_widget_show (shell->statusbar);
gtk_widget_show (main_vbox);
@ -1090,27 +1065,28 @@ gimp_display_shell_untransform_xy_f (GimpDisplayShell *shell,
void
gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
Gimp *gimp)
Gimp *gimp,
gboolean update_popup)
{
GtkItemFactory *item_factory;
GimpDisplay *gdisp = NULL;
GimpImage *gimage = NULL;
GimpImageType type = -1;
GimpDrawable *drawable = NULL;
GimpLayer *layer = NULL;
GtkItemFactory *item_factory = NULL;
GimpDisplay *gdisp = NULL;
GimpImage *gimage = NULL;
GimpImageType type = -1;
GimpDrawable *drawable = NULL;
GimpLayer *layer = NULL;
GimpRGB fg;
GimpRGB bg;
gboolean is_rgb = FALSE;
gboolean is_gray = FALSE;
gboolean is_indexed = FALSE;
gboolean fs = FALSE;
gboolean aux = FALSE;
gboolean lm = FALSE;
gboolean lp = FALSE;
gboolean sel = FALSE;
gboolean alpha = FALSE;
gint lind = -1;
gint lnum = -1;
gboolean is_rgb = FALSE;
gboolean is_gray = FALSE;
gboolean is_indexed = FALSE;
gboolean fs = FALSE;
gboolean aux = FALSE;
gboolean lm = FALSE;
gboolean lp = FALSE;
gboolean sel = FALSE;
gboolean alpha = FALSE;
gint lind = -1;
gint lnum = -1;
g_return_if_fail (! shell || GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (GIMP_IS_GIMP (gimp));
@ -1118,19 +1094,17 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
if (shell)
{
gdisp = shell->gdisp;
item_factory = GTK_ITEM_FACTORY (shell->item_factory);
if (update_popup)
item_factory = GTK_ITEM_FACTORY (shell->popup_factory);
else
item_factory = GTK_ITEM_FACTORY (shell->menubar_factory);
}
else
else if (update_popup)
{
item_factory = GTK_ITEM_FACTORY (gimp_item_factory_from_path ("<Image>"));
}
if (! item_factory)
{
plug_in_set_menu_sensitivity (NULL, type);
return;
}
if (gdisp)
{
GimpImageBaseType base_type;
@ -1273,13 +1247,17 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
SET_SENSITIVE ("/View/Snap to Guides", gdisp);
SET_ACTIVE ("/View/Snap to Guides", gdisp && gdisp->snap_to_guides);
SET_SENSITIVE ("/View/Toggle Menubar", gdisp);
SET_ACTIVE ("/View/Toggle Menubar",
gdisp && GTK_WIDGET_VISIBLE (GTK_ITEM_FACTORY (shell->menubar_factory)->widget));
SET_SENSITIVE ("/View/Toggle Rulers", gdisp);
SET_ACTIVE ("/View/Toggle Rulers",
gdisp && GTK_WIDGET_VISIBLE (shell->hrule) ? 1 : 0);
gdisp && GTK_WIDGET_VISIBLE (shell->hrule));
SET_SENSITIVE ("/View/Toggle Statusbar", gdisp);
SET_ACTIVE ("/View/Toggle Statusbar",
gdisp && GTK_WIDGET_VISIBLE (shell->statusbar) ? 1 : 0);
gdisp && GTK_WIDGET_VISIBLE (shell->statusbar));
SET_SENSITIVE ("/View/New View", gdisp);
SET_SENSITIVE ("/View/Shrink Wrap", gdisp);
@ -1351,6 +1329,20 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
#undef SET_SENSITIVE
plug_in_set_menu_sensitivity (GIMP_ITEM_FACTORY (item_factory), type);
/* update the popup menu if this is the active display */
if (shell && ! update_popup)
{
GimpContext *user_context;
user_context = gimp_get_user_context (gdisp->gimage->gimp);
if (gimp_context_get_display (user_context) == gdisp)
{
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp,
TRUE);
}
}
}
GimpGuide *

View File

@ -73,7 +73,8 @@ struct _GimpDisplayShell
GimpDisplay *gdisp;
GimpItemFactory *item_factory;
GimpItemFactory *menubar_factory;
GimpItemFactory *popup_factory;
gdouble monitor_xres;
gdouble monitor_yres;
@ -207,7 +208,8 @@ void gimp_display_shell_untransform_xy_f (GimpDisplayShell *shell,
gboolean use_offsets);
void gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
Gimp *gimp);
Gimp *gimp,
gboolean update_popup);
GimpGuide * gimp_display_shell_find_guide (GimpDisplayShell *shell,
gdouble x,

View File

@ -210,7 +210,8 @@ static void
gimp_display_shell_init (GimpDisplayShell *shell)
{
shell->gdisp = NULL;
shell->item_factory = NULL;
shell->menubar_factory = NULL;
shell->popup_factory = NULL;
shell->scale = 0;
shell->dot_for_dot = TRUE;
@ -340,12 +341,14 @@ gimp_display_shell_destroy (GtkObject *object)
gimp_display_shell_disconnect (shell);
}
if (shell->item_factory)
if (shell->menubar_factory)
{
g_object_unref (shell->item_factory);
shell->item_factory = NULL;
g_object_unref (shell->menubar_factory);
shell->menubar_factory = NULL;
}
shell->popup_factory = NULL;
if (shell->select)
{
gimp_display_shell_selection_free (shell->select);
@ -418,6 +421,7 @@ gimp_display_shell_new (GimpDisplay *gdisp,
GtkWidget *inner_table;
GtkWidget *arrow;
GtkWidget *image;
GtkWidget *menubar;
gint image_width, image_height;
gint n_width, n_height;
gint s_width, s_height;
@ -468,25 +472,16 @@ gimp_display_shell_new (GimpDisplay *gdisp,
shell->scale = (scaledest << 8) + scalesrc;
if (config->menu_bar_per_display)
{
shell->item_factory =
menus_get_new_image_factory (shell->gdisp->gimage->gimp,
shell->gdisp,
TRUE);
}
else
{
shell->item_factory =
menus_get_new_image_factory (shell->gdisp->gimage->gimp,
shell->gdisp->gimage->gimp,
FALSE);
g_object_ref (shell->item_factory);
}
shell->menubar_factory =
menus_get_new_image_factory (shell->gdisp->gimage->gimp,
shell->gdisp,
TRUE);
shell->popup_factory = gimp_item_factory_from_path ("<Image>");
/* The accelerator table for images */
gimp_window_add_accel_group (GTK_WINDOW (shell),
GTK_ITEM_FACTORY (shell->item_factory),
GTK_ITEM_FACTORY (shell->menubar_factory),
gimp_display_shell_get_accel_context,
shell);
@ -529,49 +524,33 @@ gimp_display_shell_new (GimpDisplay *gdisp,
/* the vbox containing all widgets */
if (config->menu_bar_per_display)
{
GtkWidget *menu_bar;
main_vbox = gtk_vbox_new (FALSE, 0);
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (shell->item_factory),
"/tearoff1", FALSE);
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (shell->item_factory),
"/filters-separator", FALSE);
menu_bar = GTK_ITEM_FACTORY (shell->item_factory)->widget;
gtk_box_pack_start (GTK_BOX (main_vbox), menu_bar, FALSE, FALSE, 0);
gtk_widget_show (menu_bar);
/* active display callback */
g_signal_connect (G_OBJECT (menu_bar), "button_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menu_bar), "button_release_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menu_bar), "key_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
}
else
{
main_vbox = gtk_vbox_new (FALSE, 2);
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 2);
}
main_vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (shell), main_vbox);
menubar = GTK_ITEM_FACTORY (shell->menubar_factory)->widget;
gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, FALSE, 0);
if (config->show_menubar)
gtk_widget_show (menubar);
/* active display callback */
g_signal_connect (G_OBJECT (menubar), "button_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menubar), "button_release_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (G_OBJECT (menubar), "key_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
/* another vbox for everything except the statusbar */
disp_vbox = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (disp_vbox), 2);
gtk_box_pack_start (GTK_BOX (main_vbox), disp_vbox, TRUE, TRUE, 0);
gtk_widget_show (disp_vbox);
if (config->menu_bar_per_display)
gtk_container_set_border_width (GTK_CONTAINER (disp_vbox), 2);
/* a hbox for the inner_table and the vertical scrollbar */
upper_hbox = gtk_hbox_new (FALSE, 1);
gtk_box_pack_start (GTK_BOX (disp_vbox), upper_hbox, TRUE, TRUE, 0);
@ -805,9 +784,7 @@ gimp_display_shell_new (GimpDisplay *gdisp,
if (config->show_rulers)
{
if (! config->menu_bar_per_display)
gtk_widget_show (shell->origin);
gtk_widget_show (shell->origin);
gtk_widget_show (shell->hrule);
gtk_widget_show (shell->vrule);
}
@ -822,9 +799,7 @@ gimp_display_shell_new (GimpDisplay *gdisp,
gtk_widget_show (shell->nav_ebox);
if (config->show_statusbar)
{
gtk_widget_show (shell->statusbar);
}
gtk_widget_show (shell->statusbar);
gtk_widget_show (main_vbox);
@ -1090,27 +1065,28 @@ gimp_display_shell_untransform_xy_f (GimpDisplayShell *shell,
void
gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
Gimp *gimp)
Gimp *gimp,
gboolean update_popup)
{
GtkItemFactory *item_factory;
GimpDisplay *gdisp = NULL;
GimpImage *gimage = NULL;
GimpImageType type = -1;
GimpDrawable *drawable = NULL;
GimpLayer *layer = NULL;
GtkItemFactory *item_factory = NULL;
GimpDisplay *gdisp = NULL;
GimpImage *gimage = NULL;
GimpImageType type = -1;
GimpDrawable *drawable = NULL;
GimpLayer *layer = NULL;
GimpRGB fg;
GimpRGB bg;
gboolean is_rgb = FALSE;
gboolean is_gray = FALSE;
gboolean is_indexed = FALSE;
gboolean fs = FALSE;
gboolean aux = FALSE;
gboolean lm = FALSE;
gboolean lp = FALSE;
gboolean sel = FALSE;
gboolean alpha = FALSE;
gint lind = -1;
gint lnum = -1;
gboolean is_rgb = FALSE;
gboolean is_gray = FALSE;
gboolean is_indexed = FALSE;
gboolean fs = FALSE;
gboolean aux = FALSE;
gboolean lm = FALSE;
gboolean lp = FALSE;
gboolean sel = FALSE;
gboolean alpha = FALSE;
gint lind = -1;
gint lnum = -1;
g_return_if_fail (! shell || GIMP_IS_DISPLAY_SHELL (shell));
g_return_if_fail (GIMP_IS_GIMP (gimp));
@ -1118,19 +1094,17 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
if (shell)
{
gdisp = shell->gdisp;
item_factory = GTK_ITEM_FACTORY (shell->item_factory);
if (update_popup)
item_factory = GTK_ITEM_FACTORY (shell->popup_factory);
else
item_factory = GTK_ITEM_FACTORY (shell->menubar_factory);
}
else
else if (update_popup)
{
item_factory = GTK_ITEM_FACTORY (gimp_item_factory_from_path ("<Image>"));
}
if (! item_factory)
{
plug_in_set_menu_sensitivity (NULL, type);
return;
}
if (gdisp)
{
GimpImageBaseType base_type;
@ -1273,13 +1247,17 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
SET_SENSITIVE ("/View/Snap to Guides", gdisp);
SET_ACTIVE ("/View/Snap to Guides", gdisp && gdisp->snap_to_guides);
SET_SENSITIVE ("/View/Toggle Menubar", gdisp);
SET_ACTIVE ("/View/Toggle Menubar",
gdisp && GTK_WIDGET_VISIBLE (GTK_ITEM_FACTORY (shell->menubar_factory)->widget));
SET_SENSITIVE ("/View/Toggle Rulers", gdisp);
SET_ACTIVE ("/View/Toggle Rulers",
gdisp && GTK_WIDGET_VISIBLE (shell->hrule) ? 1 : 0);
gdisp && GTK_WIDGET_VISIBLE (shell->hrule));
SET_SENSITIVE ("/View/Toggle Statusbar", gdisp);
SET_ACTIVE ("/View/Toggle Statusbar",
gdisp && GTK_WIDGET_VISIBLE (shell->statusbar) ? 1 : 0);
gdisp && GTK_WIDGET_VISIBLE (shell->statusbar));
SET_SENSITIVE ("/View/New View", gdisp);
SET_SENSITIVE ("/View/Shrink Wrap", gdisp);
@ -1351,6 +1329,20 @@ gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
#undef SET_SENSITIVE
plug_in_set_menu_sensitivity (GIMP_ITEM_FACTORY (item_factory), type);
/* update the popup menu if this is the active display */
if (shell && ! update_popup)
{
GimpContext *user_context;
user_context = gimp_get_user_context (gdisp->gimage->gimp);
if (gimp_context_get_display (user_context) == gdisp)
{
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp,
TRUE);
}
}
}
GimpGuide *

View File

@ -73,7 +73,8 @@ struct _GimpDisplayShell
GimpDisplay *gdisp;
GimpItemFactory *item_factory;
GimpItemFactory *menubar_factory;
GimpItemFactory *popup_factory;
gdouble monitor_xres;
gdouble monitor_yres;
@ -207,7 +208,8 @@ void gimp_display_shell_untransform_xy_f (GimpDisplayShell *shell,
gboolean use_offsets);
void gimp_display_shell_set_menu_sensitivity (GimpDisplayShell *shell,
Gimp *gimp);
Gimp *gimp,
gboolean update_popup);
GimpGuide * gimp_display_shell_find_guide (GimpDisplayShell *shell,
gdouble x,

View File

@ -416,22 +416,21 @@ static GimpObject *
gui_display_new (GimpImage *gimage,
guint scale)
{
GimpDisplay *gdisp;
GimpDisplay *gdisp;
GimpDisplayShell *shell;
gdisp = gimp_display_new (gimage, scale);
shell = GIMP_DISPLAY_SHELL (gdisp->shell);
gimp_display_shell_set_menu_sensitivity (shell, gimage->gimp, FALSE);
gimp_context_set_display (gimp_get_user_context (gimage->gimp), gdisp);
if (double_speed)
{
GimpDisplayShell *shell;
shell = GIMP_DISPLAY_SHELL (gdisp->shell);
g_signal_connect_after (G_OBJECT (shell->canvas), "expose_event",
G_CALLBACK (gui_rotate_the_shield_harmonics),
NULL);
}
g_signal_connect_after (G_OBJECT (shell->canvas), "expose_event",
G_CALLBACK (gui_rotate_the_shield_harmonics),
NULL);
return GIMP_OBJECT (gdisp);
}
@ -629,7 +628,7 @@ gui_display_changed (GimpContext *context,
if (display)
shell = GIMP_DISPLAY_SHELL (display->shell);
gimp_display_shell_set_menu_sensitivity (shell, gimp);
gimp_display_shell_set_menu_sensitivity (shell, gimp, TRUE);
}
static void

View File

@ -638,6 +638,10 @@ static GimpItemFactoryEntry image_entries[] =
SEPARATOR ("/View/---"),
{ { N_("/View/Toggle Menubar"), NULL,
view_toggle_menubar_cmd_callback, 0, "<ToggleItem>" },
NULL,
"view/toggle_menubar.html", NULL },
{ { N_("/View/Toggle Rulers"), "<control><shift>R",
view_toggle_rulers_cmd_callback, 0, "<ToggleItem>" },
NULL,
@ -2069,14 +2073,6 @@ menus_get_new_image_factory (Gimp *gimp,
{
GimpItemFactory *image_factory;
if (! GIMP_DISPLAY_CONFIG (gimp->config)->menu_bar_per_display)
{
image_factory = gimp_item_factory_from_path ("<Image>");
if (image_factory)
return image_factory;
}
image_factory = gimp_item_factory_new (gimp,
menu_bar ?
GTK_TYPE_MENU_BAR : GTK_TYPE_MENU,
@ -2086,6 +2082,15 @@ menus_get_new_image_factory (Gimp *gimp,
image_entries,
callback_data,
TRUE);
if (menu_bar)
{
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (image_factory),
"/tearoff1", FALSE);
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (image_factory),
"/filters-separator", FALSE);
}
menus_last_opened_add (image_factory, gimp);
/* create tool menu items */

View File

@ -115,16 +115,12 @@ preferences_dialog_create (Gimp *gimp)
g_object_add_weak_pointer (G_OBJECT (prefs_dialog),
(gpointer *) &prefs_dialog);
g_object_weak_ref (G_OBJECT (prefs_dialog),
(GWeakNotify) g_object_unref,
config_copy);
g_object_weak_ref (G_OBJECT (prefs_dialog),
(GWeakNotify) g_object_unref,
config_orig);
g_object_set_data (G_OBJECT (prefs_dialog), "gimp", gimp);
g_object_set_data (G_OBJECT (prefs_dialog), "gimp", gimp);
g_object_set_data (G_OBJECT (prefs_dialog), "config-copy", config_copy);
g_object_set_data (G_OBJECT (prefs_dialog), "config-orig", config_orig);
g_object_set_data_full (G_OBJECT (prefs_dialog), "config-copy", config_copy,
(GDestroyNotify) g_object_unref);
g_object_set_data_full (G_OBJECT (prefs_dialog), "config-orig", config_orig,
(GDestroyNotify) g_object_unref);
return prefs_dialog;
}
@ -350,7 +346,7 @@ prefs_default_resolution_callback (GtkWidget *widget,
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_sizeentry), 0,
xres, FALSE);
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_sizeentry), 0,
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_sizeentry), 1,
yres, FALSE);
}
@ -364,23 +360,24 @@ prefs_res_source_callback (GtkWidget *widget,
gimp_toggle_button_sensitive_update (GTK_TOGGLE_BUTTON (widget));
gui_get_screen_resolution (&xres, &yres);
from_gdk = TRUE;
from_gdk = GTK_TOGGLE_BUTTON (widget)->active;
if (! GTK_TOGGLE_BUTTON (widget)->active)
if (from_gdk)
{
gui_get_screen_resolution (&xres, &yres);
}
else
{
GimpSizeEntry *sizeentry;
sizeentry = g_object_get_data (G_OBJECT (widget),
"monitor_resolution_sizeentry");
if (sizeentry)
{
xres = gimp_size_entry_get_refval (sizeentry, 0);
yres = gimp_size_entry_get_refval (sizeentry, 1);
}
from_gdk = FALSE;
}
g_object_set (config,
@ -1147,9 +1144,6 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (config, "tearoff-menus",
_("Enable _Tearoff Menus"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "menu-bar-per-display",
_("Menu _Bar Per Display"),
GTK_BOX (vbox2));
/* Window Positions */
vbox2 = prefs_frame_new (_("Window Positions"), GTK_CONTAINER (vbox), FALSE);
@ -1334,11 +1328,8 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add (config, "default-dot-for-dot",
_("Use \"_Dot for Dot\" by default"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "resize-windows-on-zoom",
_("Resize Window on _Zoom"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "resize-windows-on-resize",
_("Resize Window on Image _Size Change"),
prefs_check_button_add (config, "show-menubar",
_("Show Menubar"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "show-rulers",
_("Show _Rulers"),
@ -1368,6 +1359,17 @@ prefs_dialog_new (Gimp *gimp,
gimp_color_panel_set_context (GIMP_COLOR_PANEL (button),
gimp_get_user_context (gimp));
/* Zoom & Resize Behaviour */
vbox2 = prefs_frame_new (_("Zoom & Resize Behaviour"),
GTK_CONTAINER (vbox), FALSE);
prefs_check_button_add (config, "resize-windows-on-zoom",
_("Resize Window on _Zoom"),
GTK_BOX (vbox2));
prefs_check_button_add (config, "resize-windows-on-resize",
_("Resize Window on Image _Size Change"),
GTK_BOX (vbox2));
/* Pointer Movement Feedback */
vbox2 = prefs_frame_new (_("Pointer Movement Feedback"),
GTK_CONTAINER (vbox), FALSE);

View File

@ -202,6 +202,33 @@ view_toggle_layer_boundary_cmd_callback (GtkWidget *widget,
}
}
void
view_toggle_menubar_cmd_callback (GtkWidget *widget,
gpointer data)
{
GimpDisplay *gdisp;
GimpDisplayShell *shell;
GtkWidget *menubar;
return_if_no_display (gdisp, data);
shell = GIMP_DISPLAY_SHELL (gdisp->shell);
menubar = GTK_ITEM_FACTORY (shell->menubar_factory)->widget;
if (! GTK_CHECK_MENU_ITEM (widget)->active)
{
if (GTK_WIDGET_VISIBLE (menubar))
gtk_widget_hide (menubar);
}
else
{
if (! GTK_WIDGET_VISIBLE (menubar))
gtk_widget_show (menubar);
}
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
void
view_toggle_rulers_cmd_callback (GtkWidget *widget,
gpointer data)
@ -217,11 +244,9 @@ view_toggle_rulers_cmd_callback (GtkWidget *widget,
if (! GTK_CHECK_MENU_ITEM (widget)->active)
{
if (GTK_WIDGET_VISIBLE (shell->hrule))
if (GTK_WIDGET_VISIBLE (shell->origin))
{
if (! config->menu_bar_per_display)
gtk_widget_hide (shell->origin);
gtk_widget_hide (shell->origin);
gtk_widget_hide (shell->hrule);
gtk_widget_hide (shell->vrule);
@ -230,17 +255,17 @@ view_toggle_rulers_cmd_callback (GtkWidget *widget,
}
else
{
if (! GTK_WIDGET_VISIBLE (shell->hrule))
if (! GTK_WIDGET_VISIBLE (shell->origin))
{
if (! config->menu_bar_per_display)
gtk_widget_show (shell->origin);
gtk_widget_show (shell->origin);
gtk_widget_show (shell->hrule);
gtk_widget_show (shell->vrule);
gtk_widget_queue_resize (GTK_WIDGET (shell->origin->parent));
}
}
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
void
@ -263,6 +288,8 @@ view_toggle_statusbar_cmd_callback (GtkWidget *widget,
if (! GTK_WIDGET_VISIBLE (shell->statusbar))
gtk_widget_show (shell->statusbar);
}
gimp_display_shell_set_menu_sensitivity (shell, gdisp->gimage->gimp, FALSE);
}
void
@ -291,6 +318,9 @@ view_snap_to_guides_cmd_callback (GtkWidget *widget,
return_if_no_display (gdisp, data);
gdisp->snap_to_guides = GTK_CHECK_MENU_ITEM (widget)->active;
gimp_display_shell_set_menu_sensitivity (GIMP_DISPLAY_SHELL (gdisp->shell),
gdisp->gimage->gimp, FALSE);
}
void

View File

@ -41,6 +41,8 @@ void view_toggle_selection_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_layer_boundary_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_menubar_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_rulers_cmd_callback (GtkWidget *widget,
gpointer data);
void view_toggle_statusbar_cmd_callback (GtkWidget *widget,

View File

@ -638,6 +638,10 @@ static GimpItemFactoryEntry image_entries[] =
SEPARATOR ("/View/---"),
{ { N_("/View/Toggle Menubar"), NULL,
view_toggle_menubar_cmd_callback, 0, "<ToggleItem>" },
NULL,
"view/toggle_menubar.html", NULL },
{ { N_("/View/Toggle Rulers"), "<control><shift>R",
view_toggle_rulers_cmd_callback, 0, "<ToggleItem>" },
NULL,
@ -2069,14 +2073,6 @@ menus_get_new_image_factory (Gimp *gimp,
{
GimpItemFactory *image_factory;
if (! GIMP_DISPLAY_CONFIG (gimp->config)->menu_bar_per_display)
{
image_factory = gimp_item_factory_from_path ("<Image>");
if (image_factory)
return image_factory;
}
image_factory = gimp_item_factory_new (gimp,
menu_bar ?
GTK_TYPE_MENU_BAR : GTK_TYPE_MENU,
@ -2086,6 +2082,15 @@ menus_get_new_image_factory (Gimp *gimp,
image_entries,
callback_data,
TRUE);
if (menu_bar)
{
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (image_factory),
"/tearoff1", FALSE);
gimp_item_factory_set_visible (GTK_ITEM_FACTORY (image_factory),
"/filters-separator", FALSE);
}
menus_last_opened_add (image_factory, gimp);
/* create tool menu items */