--- gimp-painter-_old/app/actions/tool-options-commands.c Mon Sep 1 02:46:54 2008 +++ gimp-painter--2.4.7/app/actions/tool-options-commands.c Wed Aug 27 13:09:21 2008 @@ -53,6 +53,9 @@ static void tool_options_rename_callback (GtkWidget *widget, const gchar *name, gpointer data); +static void tool_options_sync (GObject *src, + GObject *dest, + GParamFlags flags); /* public functions */ @@ -116,9 +119,22 @@ options = gimp_tool_presets_get_options (tool_info->presets, value); if (options) - gimp_config_sync (G_OBJECT (options), - G_OBJECT (tool_info->tool_options), - GIMP_CONFIG_PARAM_SERIALIZE); + { + GdkModifierType state; + guint flags = GIMP_CONFIG_PARAM_DONT_RESTORE; + + if (gtk_get_current_event_state (&state)) + { + if (state & GDK_SHIFT_MASK && ! (state & GDK_CONTROL_MASK)) + flags = 0; + else if (state & GDK_CONTROL_MASK && ! (state & GDK_SHIFT_MASK)) + flags |= GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY; + } + + tool_options_sync (G_OBJECT (options), + G_OBJECT (tool_info->tool_options), + flags); + } } void @@ -262,4 +278,41 @@ gimp_object_set_name (GIMP_OBJECT (options), name); else gimp_object_set_static_name (GIMP_OBJECT (options), _("Saved Options")); +} + +static void +tool_options_sync (GObject *src, + GObject *dest, + GParamFlags flags) +{ + GParamSpec **param_specs; + guint n_param_specs; + gint i; + + g_return_val_if_fail (G_IS_OBJECT (src), FALSE); + g_return_val_if_fail (G_IS_OBJECT (dest), FALSE); + + param_specs = g_object_class_list_properties (G_OBJECT_GET_CLASS (src), + &n_param_specs); + + for (i = 0; i < n_param_specs; i++) + { + GParamSpec *prop_spec = param_specs[i]; + + if ((prop_spec->flags & GIMP_CONFIG_PARAM_SERIALIZE) && ! (prop_spec->flags & (flags | G_PARAM_CONSTRUCT_ONLY))) + { + GValue value = { 0, }; + + g_value_init (&value, prop_spec->value_type); + + g_object_get_property (src, prop_spec->name, &value); + g_object_set_property (dest, prop_spec->name, &value); + + g_value_unset (&value); + } + } + + g_free (param_specs); + + return; } --- gimp-painter-_old/app/core/gimpcontext.c Mon Sep 1 02:46:54 2008 +++ gimp-painter--2.4.7/app/core/gimpcontext.c Wed Aug 27 13:09:21 2008 @@ -582,13 +582,13 @@ gimp_context_prop_names[GIMP_CONTEXT_PROP_FOREGROUND], NULL, FALSE, &black, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); GIMP_CONFIG_INSTALL_PROP_RGB (object_class, GIMP_CONTEXT_PROP_BACKGROUND, gimp_context_prop_names[GIMP_CONTEXT_PROP_BACKGROUND], NULL, FALSE, &white, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, GIMP_CONTEXT_PROP_OPACITY, gimp_context_prop_names[GIMP_CONTEXT_PROP_OPACITY], @@ -603,37 +603,37 @@ NULL, GIMP_TYPE_LAYER_MODE_EFFECTS, GIMP_NORMAL_MODE, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_BRUSH, gimp_context_prop_names[GIMP_CONTEXT_PROP_BRUSH], NULL, GIMP_TYPE_BRUSH, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_PATTERN, gimp_context_prop_names[GIMP_CONTEXT_PROP_PATTERN], NULL, GIMP_TYPE_PATTERN, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_GRADIENT, gimp_context_prop_names[GIMP_CONTEXT_PROP_GRADIENT], NULL, GIMP_TYPE_GRADIENT, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_PALETTE, gimp_context_prop_names[GIMP_CONTEXT_PROP_PALETTE], NULL, GIMP_TYPE_PALETTE, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); GIMP_CONFIG_INSTALL_PROP_OBJECT (object_class, GIMP_CONTEXT_PROP_FONT, gimp_context_prop_names[GIMP_CONTEXT_PROP_FONT], NULL, GIMP_TYPE_FONT, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); g_object_class_install_property (object_class, GIMP_CONTEXT_PROP_BUFFER, g_param_spec_object (gimp_context_prop_names[GIMP_CONTEXT_PROP_BUFFER], --- gimp-painter-_old/app/core/gimpcontext.h Mon Sep 1 02:46:54 2008 +++ gimp-painter--2.4.7/app/core/gimpcontext.h Wed Aug 27 13:09:21 2008 @@ -26,6 +26,11 @@ #include "gimpobject.h" +/* Definitions of special GParamFlags for restoring the tool presets */ +#define GIMP_CONFIG_PARAM_DONT_RESTORE (1 << (6 + G_PARAM_USER_SHIFT)) +#define GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY (1 << (7 + G_PARAM_USER_SHIFT)) + + #define GIMP_TYPE_CONTEXT (gimp_context_get_type ()) #define GIMP_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_CONTEXT, GimpContext)) #define GIMP_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass, GIMP_TYPE_CONTEXT, GimpContextClass)) --- gimp-painter-_old/app/dialogs/about-dialog.c Mon Sep 1 02:47:27 2008 +++ gimp-painter--2.4.7/app/dialogs/about-dialog.c Mon Sep 1 00:31:53 2008 @@ -611,7 +611,7 @@ gtk_widget_show (label); #endif - label = gtk_label_new (_("gimp-painter- (release 080824)")); + label = gtk_label_new (_("gimp-painter- (release 080901)")); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (vbox), label, 2); gtk_widget_show (label); --- gimp-painter-_old/app/paint/gimppaintoptions.c Mon Sep 1 02:47:27 2008 +++ gimp-painter--2.4.7/app/paint/gimppaintoptions.c Wed Aug 27 13:09:21 2008 @@ -277,28 +277,28 @@ GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_REDUCE_UPDATE_FREQ, "reduce-update-frequency", NULL, DEFAULT_REDUCE_UPDATE_FREQ, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_UPDATE_FREQ_S_THRESHOLD, "update-freq-size-threshold", NULL, 0.1, 100.0, DEFAULT_UPDATE_FREQ_S_THRESHOLD, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_UPDATE_FREQ_V_THRESHOLD, "update-freq-velo-threshold", NULL, 0.001, 0.1, DEFAULT_UPDATE_FREQ_V_THRESHOLD, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_UPDATE_FREQ_GAMMA, "update-freq-gamma", NULL, 0.1, 2.5, DEFAULT_UPDATE_FREQ_GAMMA, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_INT (object_class, PROP_UPDATE_FREQ_MAX_N_DABS, "update-freq-max-n-dabs", NULL, 5, 40, DEFAULT_UPDATE_FREQ_MAX_N_DABS, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE_SECONDARY); GIMP_CONFIG_INSTALL_PROP_DOUBLE (object_class, PROP_MAX_COORD_SMOOTH, "paint-max-coord-smooth", NULL, 0.0, 1.0, DEFAULT_MAX_COORD_SMOOTH, - GIMP_PARAM_STATIC_STRINGS); + GIMP_PARAM_STATIC_STRINGS | GIMP_CONFIG_PARAM_DONT_RESTORE); g_object_class_override_property (object_class, PROP_MAX_COORD_SMOOTH, "max-coord-smooth"); }