mirror of
https://gitlab.gnome.org/GNOME/gimp
synced 2024-10-19 06:14:03 +00:00
app: add option to keep canvas padding in "show all" mode
Add an option to keep the normal canvas padding in "show all" mode, instead of extending the checkerboard pattern indefinitely. This is useful when wanting to show the image content beyond the canvas, while still keeping the focus on the canvas; further commits will extend this mode to behave in more view-related cases as if "show all" wasn't enabled. Add a new 'View -> Padding Color -> Keep Padding in "Show All" Mode" toggle, which controls this behavior, with a corresponding default-value option in the preferences, under "Image Windows -> Appearance".
This commit is contained in:
parent
f7798bcd9a
commit
235a20b65e
|
@ -627,6 +627,17 @@ static const GimpEnumActionEntry view_padding_color_actions[] =
|
||||||
GIMP_HELP_VIEW_PADDING_COLOR }
|
GIMP_HELP_VIEW_PADDING_COLOR }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const GimpToggleActionEntry view_padding_color_toggle_actions[] =
|
||||||
|
{
|
||||||
|
{ "view-padding-color-in-show-all", NULL,
|
||||||
|
NC_("view-padding-color", "Keep Padding in \"Show _All\" Mode"), NULL,
|
||||||
|
NC_("view-padding-color",
|
||||||
|
"Keep canvas padding when \"View -> Show All\" is enabled"),
|
||||||
|
view_padding_color_in_show_all_cmd_callback,
|
||||||
|
FALSE,
|
||||||
|
GIMP_HELP_VIEW_PADDING_COLOR }
|
||||||
|
};
|
||||||
|
|
||||||
static const GimpEnumActionEntry view_scroll_horizontal_actions[] =
|
static const GimpEnumActionEntry view_scroll_horizontal_actions[] =
|
||||||
{
|
{
|
||||||
{ "view-scroll-horizontal", NULL,
|
{ "view-scroll-horizontal", NULL,
|
||||||
|
@ -762,6 +773,10 @@ view_actions_setup (GimpActionGroup *group)
|
||||||
G_N_ELEMENTS (view_padding_color_actions),
|
G_N_ELEMENTS (view_padding_color_actions),
|
||||||
view_padding_color_cmd_callback);
|
view_padding_color_cmd_callback);
|
||||||
|
|
||||||
|
gimp_action_group_add_toggle_actions (group, "view-padding-color",
|
||||||
|
view_padding_color_toggle_actions,
|
||||||
|
G_N_ELEMENTS (view_padding_color_toggle_actions));
|
||||||
|
|
||||||
gimp_action_group_add_enum_actions (group, "view-action",
|
gimp_action_group_add_enum_actions (group, "view-action",
|
||||||
view_scroll_horizontal_actions,
|
view_scroll_horizontal_actions,
|
||||||
G_N_ELEMENTS (view_scroll_horizontal_actions),
|
G_N_ELEMENTS (view_scroll_horizontal_actions),
|
||||||
|
@ -1044,6 +1059,9 @@ view_actions_update (GimpActionGroup *group,
|
||||||
SET_SENSITIVE ("view-padding-color-custom", image);
|
SET_SENSITIVE ("view-padding-color-custom", image);
|
||||||
SET_SENSITIVE ("view-padding-color-prefs", image);
|
SET_SENSITIVE ("view-padding-color-prefs", image);
|
||||||
|
|
||||||
|
SET_SENSITIVE ("view-padding-color-in-show-all", image);
|
||||||
|
SET_ACTIVE ("view-padding-color-in-show-all", display && options->padding_in_show_all);
|
||||||
|
|
||||||
SET_SENSITIVE ("view-show-menubar", image);
|
SET_SENSITIVE ("view-show-menubar", image);
|
||||||
SET_ACTIVE ("view-show-menubar", display && options->show_menubar);
|
SET_ACTIVE ("view-show-menubar", display && options->show_menubar);
|
||||||
SET_SENSITIVE ("view-show-rulers", image);
|
SET_SENSITIVE ("view-show-rulers", image);
|
||||||
|
|
|
@ -1162,11 +1162,30 @@ view_padding_color_cmd_callback (GimpAction *action,
|
||||||
gimp_display_shell_set_padding (shell,
|
gimp_display_shell_set_padding (shell,
|
||||||
default_options->padding_mode,
|
default_options->padding_mode,
|
||||||
&default_options->padding_color);
|
&default_options->padding_color);
|
||||||
|
gimp_display_shell_set_padding_in_show_all (shell,
|
||||||
|
default_options->padding_in_show_all);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
view_padding_color_in_show_all_cmd_callback (GimpAction *action,
|
||||||
|
GVariant *value,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GimpDisplayShell *shell;
|
||||||
|
gboolean active;
|
||||||
|
return_if_no_shell (shell, data);
|
||||||
|
|
||||||
|
active = g_variant_get_boolean (value);
|
||||||
|
|
||||||
|
if (active != gimp_display_shell_get_padding_in_show_all (shell))
|
||||||
|
{
|
||||||
|
gimp_display_shell_set_padding_in_show_all (shell, active);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
view_shrink_wrap_cmd_callback (GimpAction *action,
|
view_shrink_wrap_cmd_callback (GimpAction *action,
|
||||||
GVariant *value,
|
GVariant *value,
|
||||||
|
|
|
@ -166,6 +166,9 @@ void view_snap_to_vectors_cmd_callback (GimpAction *action,
|
||||||
void view_padding_color_cmd_callback (GimpAction *action,
|
void view_padding_color_cmd_callback (GimpAction *action,
|
||||||
GVariant *value,
|
GVariant *value,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
void view_padding_color_in_show_all_cmd_callback (GimpAction *action,
|
||||||
|
GVariant *value,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
void view_shrink_wrap_cmd_callback (GimpAction *action,
|
void view_shrink_wrap_cmd_callback (GimpAction *action,
|
||||||
GVariant *value,
|
GVariant *value,
|
||||||
|
|
|
@ -56,7 +56,8 @@ enum
|
||||||
PROP_SNAP_TO_CANVAS,
|
PROP_SNAP_TO_CANVAS,
|
||||||
PROP_SNAP_TO_PATH,
|
PROP_SNAP_TO_PATH,
|
||||||
PROP_PADDING_MODE,
|
PROP_PADDING_MODE,
|
||||||
PROP_PADDING_COLOR
|
PROP_PADDING_COLOR,
|
||||||
|
PROP_PADDING_IN_SHOW_ALL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -219,6 +220,13 @@ gimp_display_options_class_init (GimpDisplayOptionsClass *klass)
|
||||||
CANVAS_PADDING_COLOR_BLURB,
|
CANVAS_PADDING_COLOR_BLURB,
|
||||||
FALSE, &white,
|
FALSE, &white,
|
||||||
GIMP_PARAM_STATIC_STRINGS);
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_PADDING_IN_SHOW_ALL,
|
||||||
|
"padding-in-show-all",
|
||||||
|
"Keep padding in \"Show All\" mode",
|
||||||
|
CANVAS_PADDING_IN_SHOW_ALL_BLURB,
|
||||||
|
FALSE,
|
||||||
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -344,6 +352,13 @@ gimp_display_options_fullscreen_class_init (GimpDisplayOptionsFullscreenClass *k
|
||||||
CANVAS_PADDING_COLOR_BLURB,
|
CANVAS_PADDING_COLOR_BLURB,
|
||||||
FALSE, &black,
|
FALSE, &black,
|
||||||
GIMP_PARAM_STATIC_STRINGS);
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
|
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_PADDING_IN_SHOW_ALL,
|
||||||
|
"padding-in-show-all",
|
||||||
|
"Keep padding in \"Show All\" mode",
|
||||||
|
CANVAS_PADDING_IN_SHOW_ALL_BLURB,
|
||||||
|
FALSE,
|
||||||
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -503,6 +518,9 @@ gimp_display_options_set_property (GObject *object,
|
||||||
case PROP_PADDING_COLOR:
|
case PROP_PADDING_COLOR:
|
||||||
options->padding_color = *(GimpRGB *) g_value_get_boxed (value);
|
options->padding_color = *(GimpRGB *) g_value_get_boxed (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_PADDING_IN_SHOW_ALL:
|
||||||
|
options->padding_in_show_all = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
@ -568,6 +586,9 @@ gimp_display_options_get_property (GObject *object,
|
||||||
case PROP_PADDING_COLOR:
|
case PROP_PADDING_COLOR:
|
||||||
g_value_set_boxed (value, &options->padding_color);
|
g_value_set_boxed (value, &options->padding_color);
|
||||||
break;
|
break;
|
||||||
|
case PROP_PADDING_IN_SHOW_ALL:
|
||||||
|
g_value_set_boolean (value, options->padding_in_show_all);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
|
|
@ -61,6 +61,7 @@ struct _GimpDisplayOptions
|
||||||
GimpCanvasPaddingMode padding_mode;
|
GimpCanvasPaddingMode padding_mode;
|
||||||
GimpRGB padding_color;
|
GimpRGB padding_color;
|
||||||
gboolean padding_mode_set;
|
gboolean padding_mode_set;
|
||||||
|
gboolean padding_in_show_all;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GimpDisplayOptionsClass
|
struct _GimpDisplayOptionsClass
|
||||||
|
|
|
@ -33,6 +33,10 @@ _("Sets the dynamics search path.")
|
||||||
_("Sets the canvas padding color used if the padding mode is set to " \
|
_("Sets the canvas padding color used if the padding mode is set to " \
|
||||||
"custom color.")
|
"custom color.")
|
||||||
|
|
||||||
|
#define CANVAS_PADDING_IN_SHOW_ALL_BLURB \
|
||||||
|
_("Specifies whether to keep the canvas padding when \"View -> Show All\" " \
|
||||||
|
"is enabled.")
|
||||||
|
|
||||||
#define CANVAS_PADDING_MODE_BLURB \
|
#define CANVAS_PADDING_MODE_BLURB \
|
||||||
_("Specifies how the area around the image should be drawn.")
|
_("Specifies how the area around the image should be drawn.")
|
||||||
|
|
||||||
|
|
|
@ -1010,6 +1010,10 @@ prefs_display_options_frame_add (Gimp *gimp,
|
||||||
g_signal_connect (button, "color-changed",
|
g_signal_connect (button, "color-changed",
|
||||||
G_CALLBACK (prefs_canvas_padding_color_changed),
|
G_CALLBACK (prefs_canvas_padding_color_changed),
|
||||||
combo);
|
combo);
|
||||||
|
|
||||||
|
prefs_check_button_add (object, "padding-in-show-all",
|
||||||
|
_("_Keep canvas padding in \"Show All\" mode"),
|
||||||
|
GTK_BOX (vbox));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "gimpdisplayshell.h"
|
#include "gimpdisplayshell.h"
|
||||||
#include "gimpdisplayshell-actions.h"
|
#include "gimpdisplayshell-actions.h"
|
||||||
#include "gimpdisplayshell-appearance.h"
|
#include "gimpdisplayshell-appearance.h"
|
||||||
|
#include "gimpdisplayshell-expose.h"
|
||||||
#include "gimpdisplayshell-selection.h"
|
#include "gimpdisplayshell-selection.h"
|
||||||
#include "gimpimagewindow.h"
|
#include "gimpimagewindow.h"
|
||||||
#include "gimpstatusbar.h"
|
#include "gimpstatusbar.h"
|
||||||
|
@ -91,6 +92,8 @@ gimp_display_shell_appearance_update (GimpDisplayShell *shell)
|
||||||
gimp_display_shell_set_padding (shell,
|
gimp_display_shell_set_padding (shell,
|
||||||
options->padding_mode,
|
options->padding_mode,
|
||||||
&options->padding_color);
|
&options->padding_color);
|
||||||
|
gimp_display_shell_set_padding_in_show_all (shell,
|
||||||
|
options->padding_in_show_all);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -523,6 +526,37 @@ gimp_display_shell_get_padding (GimpDisplayShell *shell,
|
||||||
*padding_color = options->padding_color;
|
*padding_color = options->padding_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_display_shell_set_padding_in_show_all (GimpDisplayShell *shell,
|
||||||
|
gboolean keep)
|
||||||
|
{
|
||||||
|
GimpDisplayOptions *options;
|
||||||
|
|
||||||
|
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
|
||||||
|
|
||||||
|
options = appearance_get_options (shell);
|
||||||
|
|
||||||
|
if (options->padding_in_show_all != keep)
|
||||||
|
{
|
||||||
|
g_object_set (options, "padding-in-show-all", keep, NULL);
|
||||||
|
|
||||||
|
if (shell->display)
|
||||||
|
gimp_display_shell_expose_full (shell);
|
||||||
|
|
||||||
|
gimp_display_shell_set_action_active (shell,
|
||||||
|
"view-padding-color-in-show-all",
|
||||||
|
keep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gimp_display_shell_get_padding_in_show_all (GimpDisplayShell *shell)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), FALSE);
|
||||||
|
|
||||||
|
return appearance_get_options (shell)->padding_in_show_all;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* private functions */
|
/* private functions */
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,9 @@ void gimp_display_shell_set_padding (GimpDisplayShell *sh
|
||||||
void gimp_display_shell_get_padding (GimpDisplayShell *shell,
|
void gimp_display_shell_get_padding (GimpDisplayShell *shell,
|
||||||
GimpCanvasPaddingMode *mode,
|
GimpCanvasPaddingMode *mode,
|
||||||
GimpRGB *color);
|
GimpRGB *color);
|
||||||
|
void gimp_display_shell_set_padding_in_show_all (GimpDisplayShell *shell,
|
||||||
|
gboolean keep);
|
||||||
|
gboolean gimp_display_shell_get_padding_in_show_all (GimpDisplayShell *shell);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_DISPLAY_SHELL_APPEARANCE_H__ */
|
#endif /* __GIMP_DISPLAY_SHELL_APPEARANCE_H__ */
|
||||||
|
|
|
@ -485,6 +485,7 @@ gimp_display_shell_canvas_draw_image (GimpDisplayShell *shell,
|
||||||
cairo_rectangle_list_t *clip_rectangles;
|
cairo_rectangle_list_t *clip_rectangles;
|
||||||
GeglRectangle image_rect;
|
GeglRectangle image_rect;
|
||||||
GeglRectangle rotated_image_rect;
|
GeglRectangle rotated_image_rect;
|
||||||
|
GeglRectangle canvas_rect;
|
||||||
cairo_matrix_t matrix;
|
cairo_matrix_t matrix;
|
||||||
gdouble x1, y1;
|
gdouble x1, y1;
|
||||||
gdouble x2, y2;
|
gdouble x2, y2;
|
||||||
|
@ -496,6 +497,13 @@ gimp_display_shell_canvas_draw_image (GimpDisplayShell *shell,
|
||||||
&image_rect.width,
|
&image_rect.width,
|
||||||
&image_rect.height);
|
&image_rect.height);
|
||||||
|
|
||||||
|
gimp_display_shell_scale_get_image_unrotated_bounds (
|
||||||
|
shell,
|
||||||
|
&canvas_rect.x,
|
||||||
|
&canvas_rect.y,
|
||||||
|
&canvas_rect.width,
|
||||||
|
&canvas_rect.height);
|
||||||
|
|
||||||
/* first, draw the background
|
/* first, draw the background
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -516,7 +524,19 @@ gimp_display_shell_canvas_draw_image (GimpDisplayShell *shell,
|
||||||
if (shell->show_all)
|
if (shell->show_all)
|
||||||
{
|
{
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
|
|
||||||
|
if (gimp_display_shell_get_padding_in_show_all (shell))
|
||||||
|
{
|
||||||
|
cairo_rectangle (cr,
|
||||||
|
canvas_rect.x,
|
||||||
|
canvas_rect.y,
|
||||||
|
canvas_rect.width,
|
||||||
|
canvas_rect.height);
|
||||||
|
cairo_clip (cr);
|
||||||
|
}
|
||||||
|
|
||||||
gimp_display_shell_draw_checkerboard (shell, cr);
|
gimp_display_shell_draw_checkerboard (shell, cr);
|
||||||
|
|
||||||
cairo_restore (cr);
|
cairo_restore (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -351,6 +351,8 @@
|
||||||
<menuitem action="view-padding-color-dark-check" />
|
<menuitem action="view-padding-color-dark-check" />
|
||||||
<menuitem action="view-padding-color-custom" />
|
<menuitem action="view-padding-color-custom" />
|
||||||
<separator />
|
<separator />
|
||||||
|
<menuitem action="view-padding-color-in-show-all" />
|
||||||
|
<separator />
|
||||||
<menuitem action="view-padding-color-prefs" />
|
<menuitem action="view-padding-color-prefs" />
|
||||||
</menu>
|
</menu>
|
||||||
<menuitem action="view-show-menubar" />
|
<menuitem action="view-show-menubar" />
|
||||||
|
|
Loading…
Reference in a new issue