[gimp/gimp-2-10] app: unlink transform directions on tool halt; make chain button insensitive
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] app: unlink transform directions on tool halt; make chain button insensitive
- Date: Mon, 27 Apr 2020 13:56:33 +0000 (UTC)
commit a4296bb6bb64c1d78b56ac4940b6a60655b099a2
Author: Ell <ell_se yahoo com>
Date: Mon Apr 27 16:41:43 2020 +0300
app: unlink transform directions on tool halt; make chain button insensitive
In GimpTransformGridTool, keep the transform-direction chain-button
insensitive while the tool is not active, and always unlink the
button when halting the tool. This avoids the directions from
accidentally being kept linked, resulting in the tool seemingly
having no effect.
(cherry picked from commit 9f6af7dbd392fdfecd1fd160cf42bf1b0a6ba73f)
app/tools/gimptransformgridoptions.c | 17 +++++++++++------
app/tools/gimptransformgridoptions.h | 3 +++
app/tools/gimptransformgridtool.c | 30 ++++++++++++++++++++++--------
3 files changed, 36 insertions(+), 14 deletions(-)
---
diff --git a/app/tools/gimptransformgridoptions.c b/app/tools/gimptransformgridoptions.c
index d085d79422..c8d0b09dc4 100644
--- a/app/tools/gimptransformgridoptions.c
+++ b/app/tools/gimptransformgridoptions.c
@@ -100,11 +100,12 @@ gimp_transform_grid_options_class_init (GimpTransformGridOptionsClass *klass)
g_object_class_override_property (object_class, PROP_DIRECTION,
"direction");
- GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_DIRECTION_LINKED,
- "direction-linked",
- NULL, NULL,
- FALSE,
- GIMP_PARAM_STATIC_STRINGS);
+ g_object_class_install_property (object_class, PROP_DIRECTION_LINKED,
+ g_param_spec_boolean ("direction-linked",
+ NULL, NULL,
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT));
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_PREVIEW,
"show-preview",
@@ -390,7 +391,8 @@ gimp_transform_grid_options_get_property (GObject *object,
GtkWidget *
gimp_transform_grid_options_gui (GimpToolOptions *tool_options)
{
- GObject *config = G_OBJECT (tool_options);
+ GObject *config = G_OBJECT (tool_options);
+ GimpTransformGridOptions *options = GIMP_TRANSFORM_GRID_OPTIONS (tool_options);
GimpTransformGridToolClass *tg_class;
GtkWidget *vbox;
GtkWidget *vbox2;
@@ -426,6 +428,7 @@ gimp_transform_grid_options_gui (GimpToolOptions *tool_options)
button = gimp_chain_button_new (GIMP_CHAIN_RIGHT);
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+ gtk_widget_set_sensitive (button, FALSE);
gimp_chain_button_set_icon_size (GIMP_CHAIN_BUTTON (button),
GTK_ICON_SIZE_MENU);
gtk_widget_show (button);
@@ -434,6 +437,8 @@ gimp_transform_grid_options_gui (GimpToolOptions *tool_options)
button, "active",
G_BINDING_BIDIRECTIONAL |
G_BINDING_SYNC_CREATE);
+
+ options->direction_chain_button = button;
}
g_type_class_unref (tg_class);
diff --git a/app/tools/gimptransformgridoptions.h b/app/tools/gimptransformgridoptions.h
index 48d2edc0d2..e20b2e8dec 100644
--- a/app/tools/gimptransformgridoptions.h
+++ b/app/tools/gimptransformgridoptions.h
@@ -55,6 +55,9 @@ struct _GimpTransformGridOptions
gboolean frompivot_perspective;
gboolean cornersnap;
gboolean fixedpivot;
+
+ /* options gui */
+ GtkWidget *direction_chain_button;
};
struct _GimpTransformGridOptionsClass
diff --git a/app/tools/gimptransformgridtool.c b/app/tools/gimptransformgridtool.c
index 709023b4d8..cca9ba2390 100644
--- a/app/tools/gimptransformgridtool.c
+++ b/app/tools/gimptransformgridtool.c
@@ -332,12 +332,13 @@ gimp_transform_grid_tool_initialize (GimpTool *tool,
GimpDisplay *display,
GError **error)
{
- GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tool);
- GimpTransformGridTool *tg_tool = GIMP_TRANSFORM_GRID_TOOL (tool);
- GimpImage *image = gimp_display_get_image (display);
- GimpDrawable *drawable = gimp_image_get_active_drawable (image);
- GimpObject *object;
- UndoInfo *undo_info;
+ GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tool);
+ GimpTransformGridTool *tg_tool = GIMP_TRANSFORM_GRID_TOOL (tool);
+ GimpTransformGridOptions *tg_options = GIMP_TRANSFORM_GRID_TOOL_GET_OPTIONS (tool);
+ GimpImage *image = gimp_display_get_image (display);
+ GimpDrawable *drawable = gimp_image_get_active_drawable (image);
+ GimpObject *object;
+ UndoInfo *undo_info;
object = gimp_transform_tool_check_active_object (tr_tool, display, error);
@@ -384,6 +385,9 @@ gimp_transform_grid_tool_initialize (GimpTool *tool,
memcpy (undo_info->trans_infos, tg_tool->trans_infos,
sizeof (tg_tool->trans_infos));
+ if (tg_options->direction_chain_button)
+ gtk_widget_set_sensitive (tg_options->direction_chain_button, TRUE);
+
g_signal_connect (
image, "linked-items-changed",
G_CALLBACK (gimp_transform_grid_tool_image_linked_items_changed),
@@ -1149,8 +1153,9 @@ gimp_transform_grid_tool_image_linked_items_changed (GimpImage *imag
static void
gimp_transform_grid_tool_halt (GimpTransformGridTool *tg_tool)
{
- GimpTool *tool = GIMP_TOOL (tg_tool);
- GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tg_tool);
+ GimpTool *tool = GIMP_TOOL (tg_tool);
+ GimpTransformTool *tr_tool = GIMP_TRANSFORM_TOOL (tg_tool);
+ GimpTransformGridOptions *tg_options = GIMP_TRANSFORM_GRID_TOOL_GET_OPTIONS (tg_tool);
if (tool->display)
{
@@ -1188,6 +1193,15 @@ gimp_transform_grid_tool_halt (GimpTransformGridTool *tg_tool)
gimp_transform_grid_tool_show_active_object (tg_tool);
+ if (tg_options->direction_chain_button)
+ {
+ g_object_set (tg_options,
+ "direction-linked", FALSE,
+ NULL);
+
+ gtk_widget_set_sensitive (tg_options->direction_chain_button, FALSE);
+ }
+
tool->display = NULL;
tool->drawable = NULL;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]