diff --git a/app/config/gimpcoreconfig.c b/app/config/gimpcoreconfig.c index 3d3ab88c87..382f4e7796 100644 --- a/app/config/gimpcoreconfig.c +++ b/app/config/gimpcoreconfig.c @@ -94,6 +94,7 @@ enum PROP_GLOBAL_PALETTE, PROP_GLOBAL_GRADIENT, PROP_GLOBAL_FONT, + PROP_GLOBAL_EXPAND, PROP_DEFAULT_IMAGE, PROP_DEFAULT_GRID, PROP_UNDO_LEVELS, @@ -536,6 +537,13 @@ gimp_core_config_class_init (GimpCoreConfigClass *klass) TRUE, GIMP_PARAM_STATIC_STRINGS); + GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_EXPAND, + "global-expand", + "Global expand", + GLOBAL_EXPAND_BLURB, + TRUE, + GIMP_PARAM_STATIC_STRINGS); + GIMP_CONFIG_PROP_OBJECT (object_class, PROP_DEFAULT_IMAGE, "default-image", "Default image", @@ -1057,6 +1065,9 @@ gimp_core_config_set_property (GObject *object, case PROP_GLOBAL_FONT: core_config->global_font = g_value_get_boolean (value); break; + case PROP_GLOBAL_EXPAND: + core_config->global_expand = g_value_get_boolean (value); + break; case PROP_DEFAULT_IMAGE: if (g_value_get_object (value)) gimp_config_sync (g_value_get_object (value) , @@ -1333,6 +1344,9 @@ gimp_core_config_get_property (GObject *object, case PROP_GLOBAL_FONT: g_value_set_boolean (value, core_config->global_font); break; + case PROP_GLOBAL_EXPAND: + g_value_set_boolean (value, core_config->global_expand); + break; case PROP_DEFAULT_IMAGE: g_value_set_object (value, core_config->default_image); break; diff --git a/app/config/gimpcoreconfig.h b/app/config/gimpcoreconfig.h index 3ebc62bea9..10afd86bb6 100644 --- a/app/config/gimpcoreconfig.h +++ b/app/config/gimpcoreconfig.h @@ -78,6 +78,7 @@ struct _GimpCoreConfig gboolean global_palette; gboolean global_gradient; gboolean global_font; + gboolean global_expand; GimpTemplate *default_image; GimpGrid *default_grid; gint levels_of_undo; diff --git a/app/config/gimprc-blurbs.h b/app/config/gimprc-blurbs.h index dc7445c888..ccacd1c52d 100644 --- a/app/config/gimprc-blurbs.h +++ b/app/config/gimprc-blurbs.h @@ -181,6 +181,9 @@ _("When enabled, the selected pattern will be used for all tools.") #define GLOBAL_PALETTE_BLURB \ "When enabled, the selected palette will be used for all tools." +#define GLOBAL_EXPAND_BLURB \ +"When enabled, the selected auto expand layer settings will be used for all tools." + #define GRADIENT_PATH_BLURB \ "Sets the gradient search path." diff --git a/app/core/core-enums.h b/app/core/core-enums.h index d08540e9de..d53a4aa18e 100644 --- a/app/core/core-enums.h +++ b/app/core/core-enums.h @@ -711,6 +711,7 @@ typedef enum /*< pdb-skip, skip >*/ GIMP_CONTEXT_PROP_BUFFER = 18, GIMP_CONTEXT_PROP_IMAGEFILE = 19, GIMP_CONTEXT_PROP_TEMPLATE = 20, + GIMP_CONTEXT_PROP_EXPAND = 21, GIMP_CONTEXT_PROP_LAST = GIMP_CONTEXT_PROP_TEMPLATE } GimpContextPropType; @@ -737,6 +738,7 @@ typedef enum /*< pdb-skip, skip >*/ GIMP_CONTEXT_PROP_MASK_BUFFER = 1 << 18, GIMP_CONTEXT_PROP_MASK_IMAGEFILE = 1 << 19, GIMP_CONTEXT_PROP_MASK_TEMPLATE = 1 << 20, + GIMP_CONTEXT_PROP_MASK_EXPAND = 1 << 21, /* aliases */ GIMP_CONTEXT_PROP_MASK_PAINT = (GIMP_CONTEXT_PROP_MASK_FOREGROUND | @@ -746,7 +748,8 @@ typedef enum /*< pdb-skip, skip >*/ GIMP_CONTEXT_PROP_MASK_BRUSH | GIMP_CONTEXT_PROP_MASK_DYNAMICS | GIMP_CONTEXT_PROP_MASK_PATTERN | - GIMP_CONTEXT_PROP_MASK_GRADIENT), + GIMP_CONTEXT_PROP_MASK_GRADIENT | + GIMP_CONTEXT_PROP_MASK_EXPAND), GIMP_CONTEXT_PROP_MASK_ALL = (GIMP_CONTEXT_PROP_MASK_IMAGE | GIMP_CONTEXT_PROP_MASK_DISPLAY | diff --git a/app/dialogs/preferences-dialog.c b/app/dialogs/preferences-dialog.c index 0ac7eabed2..75f3769fc3 100644 --- a/app/dialogs/preferences-dialog.c +++ b/app/dialogs/preferences-dialog.c @@ -1852,6 +1852,9 @@ prefs_dialog_new (Gimp *gimp, prefs_check_button_add_with_icon (object, "global-gradient", _("_Gradient"), GIMP_ICON_GRADIENT, GTK_BOX (vbox2), size_group); + prefs_check_button_add_with_icon (object, "global-expand", + _("E_xpand Layers"), GIMP_ICON_TOOL_SCALE, + GTK_BOX (vbox2), size_group); /* Move Tool */ vbox2 = prefs_frame_new (_("Move Tool"), diff --git a/app/paint/gimppaintoptions.c b/app/paint/gimppaintoptions.c index 28666dcce2..c230152097 100644 --- a/app/paint/gimppaintoptions.c +++ b/app/paint/gimppaintoptions.c @@ -1283,9 +1283,18 @@ static const gchar *gradient_props[] = "gradient-repeat" }; +static const gchar *expand_props[] = +{ + "expand-use", + "expand-amount", + "expand-fill-type", + "expand-mask-fill-type", +}; + static const gint max_n_props = (G_N_ELEMENTS (brush_props) + G_N_ELEMENTS (dynamics_props) + - G_N_ELEMENTS (gradient_props)); + G_N_ELEMENTS (gradient_props) + + G_N_ELEMENTS (expand_props)); gboolean gimp_paint_options_is_prop (const gchar *prop_name, @@ -1316,6 +1325,13 @@ gimp_paint_options_is_prop (const gchar *prop_name, return TRUE; } + if (prop_mask & GIMP_CONTEXT_PROP_MASK_EXPAND) + { + for (i = 0; i < G_N_ELEMENTS (expand_props); i++) + if (! strcmp (prop_name, expand_props[i])) + return TRUE; + } + return FALSE; } @@ -1350,6 +1366,12 @@ gimp_paint_options_copy_props (GimpPaintOptions *src, names[n_props++] = gradient_props[i]; } + if (prop_mask & GIMP_CONTEXT_PROP_MASK_EXPAND) + { + for (i = 0; i < G_N_ELEMENTS (expand_props); i++) + names[n_props++] = expand_props[i]; + } + if (n_props > 0) { g_object_getv (G_OBJECT (src), n_props, names, values); diff --git a/app/tools/gimp-tool-options-manager.c b/app/tools/gimp-tool-options-manager.c index c1e5f55eb0..fdc9b49ced 100644 --- a/app/tools/gimp-tool-options-manager.c +++ b/app/tools/gimp-tool-options-manager.c @@ -166,6 +166,9 @@ gimp_tool_options_manager_init (Gimp *gimp) g_signal_connect (gimp->config, "notify::global-font", G_CALLBACK (tool_options_manager_global_notify), manager); + g_signal_connect (gimp->config, "notify::global-expand", + G_CALLBACK (tool_options_manager_global_notify), + manager); g_signal_connect (user_context, "tool-changed", G_CALLBACK (tool_options_manager_tool_changed), @@ -250,6 +253,8 @@ tool_options_manager_get_global_props (GimpCoreConfig *config) global_props |= GIMP_CONTEXT_PROP_MASK_GRADIENT; if (config->global_font) global_props |= GIMP_CONTEXT_PROP_MASK_FONT; + if (config->global_expand) + global_props |= GIMP_CONTEXT_PROP_MASK_EXPAND; return global_props; } @@ -354,6 +359,12 @@ tool_options_manager_paint_options_notify (GimpPaintOptions *src, prop_mask |= GIMP_CONTEXT_PROP_MASK_GRADIENT; } + if ((active || config->global_expand) && + tool_info->context_props & GIMP_CONTEXT_PROP_MASK_EXPAND) + { + prop_mask |= GIMP_CONTEXT_PROP_MASK_EXPAND; + } + if (gimp_paint_options_is_prop (pspec->name, prop_mask)) { GValue value = G_VALUE_INIT; diff --git a/app/tools/gimpairbrushtool.c b/app/tools/gimpairbrushtool.c index 6f0c8a6b33..4af632f0ca 100644 --- a/app/tools/gimpairbrushtool.c +++ b/app/tools/gimpairbrushtool.c @@ -62,6 +62,7 @@ gimp_airbrush_tool_register (GimpToolRegisterCallback callback, GIMP_TYPE_AIRBRUSH_OPTIONS, gimp_airbrush_options_gui, GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND | GIMP_CONTEXT_PROP_MASK_GRADIENT, "gimp-airbrush-tool", _("Airbrush"), diff --git a/app/tools/gimpclonetool.c b/app/tools/gimpclonetool.c index 0bc1dfa60a..08205965f3 100644 --- a/app/tools/gimpclonetool.c +++ b/app/tools/gimpclonetool.c @@ -57,6 +57,7 @@ gimp_clone_tool_register (GimpToolRegisterCallback callback, GIMP_TYPE_CLONE_OPTIONS, gimp_clone_options_gui, GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND | GIMP_CONTEXT_PROP_MASK_PATTERN, "gimp-clone-tool", _("Clone"), diff --git a/app/tools/gimpconvolvetool.c b/app/tools/gimpconvolvetool.c index 47240374a2..4780cadb74 100644 --- a/app/tools/gimpconvolvetool.c +++ b/app/tools/gimpconvolvetool.c @@ -69,7 +69,8 @@ gimp_convolve_tool_register (GimpToolRegisterCallback callback, (* callback) (GIMP_TYPE_CONVOLVE_TOOL, GIMP_TYPE_CONVOLVE_OPTIONS, gimp_convolve_options_gui, - GIMP_PAINT_OPTIONS_CONTEXT_MASK, + GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND, "gimp-convolve-tool", _("Blur / Sharpen"), _("Blur / Sharpen Tool: Selective blurring or unblurring using a brush"), diff --git a/app/tools/gimphealtool.c b/app/tools/gimphealtool.c index 16acf60573..2dfb5bd562 100644 --- a/app/tools/gimphealtool.c +++ b/app/tools/gimphealtool.c @@ -48,7 +48,8 @@ gimp_heal_tool_register (GimpToolRegisterCallback callback, (* callback) (GIMP_TYPE_HEAL_TOOL, GIMP_TYPE_SOURCE_OPTIONS, gimp_heal_options_gui, - GIMP_PAINT_OPTIONS_CONTEXT_MASK, + GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND, "gimp-heal-tool", _("Healing"), _("Healing Tool: Heal image irregularities"), diff --git a/app/tools/gimpinktool.c b/app/tools/gimpinktool.c index 94cf10996d..a2c4a904a1 100644 --- a/app/tools/gimpinktool.c +++ b/app/tools/gimpinktool.c @@ -64,7 +64,8 @@ gimp_ink_tool_register (GimpToolRegisterCallback callback, GIMP_CONTEXT_PROP_MASK_FOREGROUND | GIMP_CONTEXT_PROP_MASK_BACKGROUND | GIMP_CONTEXT_PROP_MASK_OPACITY | - GIMP_CONTEXT_PROP_MASK_PAINT_MODE, + GIMP_CONTEXT_PROP_MASK_PAINT_MODE | + GIMP_CONTEXT_PROP_MASK_EXPAND, "gimp-ink-tool", _("Ink"), _("Ink Tool: Calligraphy-style painting"), diff --git a/app/tools/gimpmybrushtool.c b/app/tools/gimpmybrushtool.c index f8175ef845..6f5ea9d05d 100644 --- a/app/tools/gimpmybrushtool.c +++ b/app/tools/gimpmybrushtool.c @@ -68,7 +68,8 @@ gimp_mybrush_tool_register (GimpToolRegisterCallback callback, GIMP_CONTEXT_PROP_MASK_BACKGROUND | GIMP_CONTEXT_PROP_MASK_OPACITY | GIMP_CONTEXT_PROP_MASK_PAINT_MODE | - GIMP_CONTEXT_PROP_MASK_MYBRUSH, + GIMP_CONTEXT_PROP_MASK_MYBRUSH | + GIMP_CONTEXT_PROP_MASK_EXPAND, "gimp-mypaint-brush-tool", _("MyPaint Brush"), _("MyPaint Brush Tool: Use MyPaint brushes in GIMP"), diff --git a/app/tools/gimppaintbrushtool.c b/app/tools/gimppaintbrushtool.c index a8aefe8dd5..2b11da84a6 100644 --- a/app/tools/gimppaintbrushtool.c +++ b/app/tools/gimppaintbrushtool.c @@ -52,6 +52,7 @@ gimp_paintbrush_tool_register (GimpToolRegisterCallback callback, GIMP_TYPE_PAINT_OPTIONS, gimp_paint_options_gui, GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND | GIMP_CONTEXT_PROP_MASK_GRADIENT, "gimp-paintbrush-tool", _("Paintbrush"), diff --git a/app/tools/gimppenciltool.c b/app/tools/gimppenciltool.c index 70dd1ce14d..81b5356eaa 100644 --- a/app/tools/gimppenciltool.c +++ b/app/tools/gimppenciltool.c @@ -46,6 +46,7 @@ gimp_pencil_tool_register (GimpToolRegisterCallback callback, GIMP_TYPE_PENCIL_OPTIONS, gimp_paint_options_gui, GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND | GIMP_CONTEXT_PROP_MASK_GRADIENT, "gimp-pencil-tool", _("Pencil"), diff --git a/app/tools/gimpsmudgetool.c b/app/tools/gimpsmudgetool.c index c361966519..1600a37a14 100644 --- a/app/tools/gimpsmudgetool.c +++ b/app/tools/gimpsmudgetool.c @@ -50,6 +50,7 @@ gimp_smudge_tool_register (GimpToolRegisterCallback callback, GIMP_TYPE_SMUDGE_OPTIONS, gimp_smudge_options_gui, GIMP_PAINT_OPTIONS_CONTEXT_MASK | + GIMP_CONTEXT_PROP_MASK_EXPAND | GIMP_CONTEXT_PROP_MASK_GRADIENT, "gimp-smudge-tool", _("Smudge"),