app/tools/gimpmoveoptions.[ch] applied (cleaned up version of) a patch

2004-10-30  Sven Neumann  <sven@gimp.org>

	* app/tools/gimpmoveoptions.[ch]
	* app/tools/gimpmovetool.[ch]: applied (cleaned up version of) a
	patch from Joao S. O. Bueno that adds a tool-option to restore the
	old Move tool behaviour. Fixes bug #156801.
This commit is contained in:
Sven Neumann 2004-10-30 13:52:20 +00:00 committed by Sven Neumann
parent 6eea7ef5a7
commit 9fd4ac8a6d
5 changed files with 72 additions and 14 deletions

View File

@ -1,3 +1,10 @@
2004-10-30 Sven Neumann <sven@gimp.org>
* app/tools/gimpmoveoptions.[ch]
* app/tools/gimpmovetool.[ch]: applied (cleaned up version of) a
patch from Joao S. O. Bueno that adds a tool-option to restore the
old Move tool behaviour. Fixes bug #156801.
2004-10-30 Sven Neumann <sven@gimp.org> 2004-10-30 Sven Neumann <sven@gimp.org>
* plug-ins/common/despeckle.c: applied a patch from Geert Jordaens * plug-ins/common/despeckle.c: applied a patch from Geert Jordaens

View File

@ -41,7 +41,8 @@ enum
{ {
PROP_0, PROP_0,
PROP_MOVE_TYPE, PROP_MOVE_TYPE,
PROP_MOVE_CURRENT PROP_MOVE_CURRENT,
PROP_CHANGE_ACTIVE
}; };
@ -107,6 +108,11 @@ gimp_move_options_class_init (GimpMoveOptionsClass *klass)
"move-current", NULL, "move-current", NULL,
FALSE, FALSE,
0); 0);
GIMP_CONFIG_INSTALL_PROP_BOOLEAN (object_class, PROP_CHANGE_ACTIVE,
"change-active", NULL,
TRUE,
0);
} }
static void static void
@ -125,6 +131,9 @@ gimp_move_options_set_property (GObject *object,
case PROP_MOVE_CURRENT: case PROP_MOVE_CURRENT:
options->move_current = g_value_get_boolean (value); options->move_current = g_value_get_boolean (value);
break; break;
case PROP_CHANGE_ACTIVE:
options->change_active = 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);
break; break;
@ -147,6 +156,9 @@ gimp_move_options_get_property (GObject *object,
case PROP_MOVE_CURRENT: case PROP_MOVE_CURRENT:
g_value_set_boolean (value, options->move_current); g_value_set_boolean (value, options->move_current);
break; break;
case PROP_CHANGE_ACTIVE:
g_value_set_boolean (value, options->change_active);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break; break;
@ -160,27 +172,33 @@ gimp_move_options_notify_type (GimpMoveOptions *move_options,
{ {
const gchar *false_label = NULL; const gchar *false_label = NULL;
const gchar *true_label = NULL; const gchar *true_label = NULL;
const gchar *change_active_label = NULL;
GtkWidget *button; GtkWidget *button;
GtkWidget *check;
GSList *group; GSList *group;
button = g_object_get_data (G_OBJECT (frame), "radio-button"); button = g_object_get_data (G_OBJECT (frame), "radio-button");
check = g_object_get_data (G_OBJECT (frame), "check");
switch (move_options->move_type) switch (move_options->move_type)
{ {
case GIMP_TRANSFORM_TYPE_LAYER: case GIMP_TRANSFORM_TYPE_LAYER:
false_label = _("Pick a layer or guide to Move"); false_label = _("Pick a layer or guide to Move");
true_label = _("Move the current layer"); true_label = _("Move the active layer");
change_active_label = _("Change the active layer");
break; break;
case GIMP_TRANSFORM_TYPE_SELECTION: case GIMP_TRANSFORM_TYPE_SELECTION:
false_label = _("Move selection"); false_label = _("Move selection");
true_label = _("Move selection"); true_label = _("Move selection");
change_active_label = NULL;
break; break;
case GIMP_TRANSFORM_TYPE_PATH: case GIMP_TRANSFORM_TYPE_PATH:
false_label = _("Pick a path to move"); false_label = _("Pick a path to move");
true_label = _("Move the current path"); true_label = _("Move the active path");
break; change_active_label = _("Change the active path");
break;
} }
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)); group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
@ -189,8 +207,21 @@ gimp_move_options_notify_type (GimpMoveOptions *move_options,
group = g_slist_next (group); group = g_slist_next (group);
gtk_button_set_label (GTK_BUTTON (group->data), false_label); gtk_button_set_label (GTK_BUTTON (group->data), false_label);
gtk_button_set_label (GTK_BUTTON (check), change_active_label);
gtk_widget_set_sensitive (frame, gtk_widget_set_sensitive (frame,
move_options->move_type != GIMP_TRANSFORM_TYPE_SELECTION); move_options->move_type != GIMP_TRANSFORM_TYPE_SELECTION);
gtk_widget_set_sensitive (check,
move_options->move_type != GIMP_TRANSFORM_TYPE_SELECTION);
if (move_options->move_type == GIMP_TRANSFORM_TYPE_SELECTION)
{
gtk_widget_hide (check);
}
else
{
gtk_widget_show (check);
}
} }
GtkWidget * GtkWidget *
@ -201,6 +232,7 @@ gimp_move_options_gui (GimpToolOptions *tool_options)
GtkWidget *hbox; GtkWidget *hbox;
GtkWidget *label; GtkWidget *label;
GtkWidget *frame; GtkWidget *frame;
GtkWidget *check;
gchar *title; gchar *title;
vbox = gimp_tool_options_gui (tool_options); vbox = gimp_tool_options_gui (tool_options);
@ -221,6 +253,11 @@ gimp_move_options_gui (GimpToolOptions *tool_options)
frame = gimp_prop_boolean_radio_frame_new (config, "move-current", frame = gimp_prop_boolean_radio_frame_new (config, "move-current",
title, "true", "false"); title, "true", "false");
/* change active layer */
check = gimp_prop_check_button_new (config, "change_active", "false");
g_object_set_data (G_OBJECT (frame), "check", check);
gimp_move_options_notify_type (GIMP_MOVE_OPTIONS (config), NULL, frame); gimp_move_options_notify_type (GIMP_MOVE_OPTIONS (config), NULL, frame);
g_signal_connect_object (config, "notify::move-type", g_signal_connect_object (config, "notify::move-type",
@ -230,6 +267,10 @@ gimp_move_options_gui (GimpToolOptions *tool_options)
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame); gtk_widget_show (frame);
gtk_box_pack_start (GTK_BOX (vbox), check, FALSE, FALSE, 0);
if (GIMP_MOVE_OPTIONS (config)->move_type == GIMP_TRANSFORM_TYPE_SELECTION)
gtk_widget_show (check);
g_free (title); g_free (title);
return vbox; return vbox;

View File

@ -40,6 +40,7 @@ struct _GimpMoveOptions
GimpTransformType move_type; GimpTransformType move_type;
gboolean move_current; gboolean move_current;
gboolean change_active;
}; };

View File

@ -237,6 +237,7 @@ gimp_move_tool_button_press (GimpTool *tool,
move->moving_guide = FALSE; move->moving_guide = FALSE;
move->old_active_layer = NULL; move->old_active_layer = NULL;
move->old_active_vectors = NULL; move->old_active_vectors = NULL;
move->change_active = options->change_active;
if (! options->move_current) if (! options->move_current)
{ {
@ -246,7 +247,8 @@ gimp_move_tool_button_press (GimpTool *tool,
if (gimp_draw_tool_on_vectors (GIMP_DRAW_TOOL (tool), gdisp, if (gimp_draw_tool_on_vectors (GIMP_DRAW_TOOL (tool), gdisp,
coords, 7, 7, coords, 7, 7,
NULL, NULL, NULL, NULL, NULL, &vectors)) NULL, NULL, NULL, NULL, NULL,
&vectors))
{ {
move->old_active_vectors = move->old_active_vectors =
gimp_image_get_active_vectors (gdisp->gimage); gimp_image_get_active_vectors (gdisp->gimage);
@ -256,7 +258,6 @@ gimp_move_tool_button_press (GimpTool *tool,
else else
{ {
/* no path picked */ /* no path picked */
return; return;
} }
} }
@ -457,15 +458,21 @@ gimp_move_tool_button_release (GimpTool *tool,
{ {
if (move->old_active_layer) if (move->old_active_layer)
{ {
gimp_image_set_active_layer (gdisp->gimage, if ( ! move->change_active)
move->old_active_layer); {
gimp_image_set_active_layer (gdisp->gimage,
move->old_active_layer);
}
move->old_active_layer = NULL; move->old_active_layer = NULL;
} }
if (move->old_active_vectors) if (move->old_active_vectors)
{ {
gimp_image_set_active_vectors (gdisp->gimage, if (! move->change_active)
move->old_active_vectors); {
gimp_image_set_active_vectors (gdisp->gimage,
move->old_active_vectors);
}
move->old_active_vectors = NULL; move->old_active_vectors = NULL;
} }

View File

@ -49,6 +49,8 @@ struct _GimpMoveTool
GimpLayer *old_active_layer; GimpLayer *old_active_layer;
GimpVectors *old_active_vectors; GimpVectors *old_active_vectors;
gboolean change_active;
}; };
struct _GimpMoveToolClass struct _GimpMoveToolClass