mirror of https://github.com/GNOME/gimp.git
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:
parent
e390f9a4a5
commit
f03b6b6d75
40
ChangeLog
40
ChangeLog
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue