[gimp] app: in the move tool, blink type box when there's no item to move



commit c9bc3d7a09978d61cc6c2ddb8497c3116a1884f8
Author: Ell <ell_se yahoo com>
Date:   Mon Dec 10 07:34:27 2018 -0500

    app: in the move tool, blink type box when there's no item to move
    
    In the move tool, when there is no item of the selected type to
    move, blink the move-type box widget in the tool options, in
    addition to showing an error message in the status bar, to hint at
    the source of the error.

 app/tools/gimpeditselectiontool.c | 14 ++++++++------
 app/tools/gimpeditselectiontool.h |  3 ++-
 app/tools/gimpmoveoptions.c       | 17 ++++++++++-------
 app/tools/gimpmoveoptions.h       |  3 +++
 app/tools/gimpmovetool.c          | 11 ++++++-----
 5 files changed, 29 insertions(+), 19 deletions(-)
---
diff --git a/app/tools/gimpeditselectiontool.c b/app/tools/gimpeditselectiontool.c
index 42332a1663..3a5c0f33e4 100644
--- a/app/tools/gimpeditselectiontool.c
+++ b/app/tools/gimpeditselectiontool.c
@@ -1008,14 +1008,15 @@ gimp_edit_selection_tool_key_press (GimpTool    *tool,
     }
 
   return gimp_edit_selection_tool_translate (tool, kevent, translate_type,
-                                             display);
+                                             display, NULL);
 }
 
 gboolean
 gimp_edit_selection_tool_translate (GimpTool          *tool,
                                     GdkEventKey       *kevent,
                                     GimpTransformType  translate_type,
-                                    GimpDisplay       *display)
+                                    GimpDisplay       *display,
+                                    GtkWidget         *type_box)
 {
   gint               inc_x          = 0;
   gint               inc_y          = 0;
@@ -1093,6 +1094,9 @@ gimp_edit_selection_tool_translate (GimpTool          *tool,
         case GIMP_TRANSFORM_TYPE_SELECTION:
           item = GIMP_ITEM (gimp_image_get_mask (image));
 
+          if (gimp_channel_is_empty (GIMP_CHANNEL (item)))
+            item = NULL;
+
           edit_mode = GIMP_TRANSLATE_MODE_MASK;
           undo_type = GIMP_UNDO_GROUP_MASK;
 
@@ -1106,10 +1110,6 @@ gimp_edit_selection_tool_translate (GimpTool          *tool,
               /* cannot happen, don't translate this message */
               locked_message = "The selection's position is locked.";
             }
-          else if (gimp_channel_is_empty (GIMP_CHANNEL (item)))
-            {
-              locked_message = _("The selection is empty.");
-            }
           break;
 
         case GIMP_TRANSFORM_TYPE_PATH:
@@ -1189,6 +1189,8 @@ gimp_edit_selection_tool_translate (GimpTool          *tool,
   if (! item)
     {
       gimp_tool_message_literal (tool, display, null_message);
+      if (type_box)
+        gimp_widget_blink (type_box);
       return TRUE;
     }
   else if (locked_message)
diff --git a/app/tools/gimpeditselectiontool.h b/app/tools/gimpeditselectiontool.h
index a79c007cdd..b34055c1a8 100644
--- a/app/tools/gimpeditselectiontool.h
+++ b/app/tools/gimpeditselectiontool.h
@@ -43,7 +43,8 @@ gboolean   gimp_edit_selection_tool_key_press (GimpTool          *tool,
 gboolean   gimp_edit_selection_tool_translate (GimpTool          *tool,
                                                GdkEventKey       *kevent,
                                                GimpTransformType  translate_type,
-                                               GimpDisplay       *display);
+                                               GimpDisplay       *display,
+                                               GtkWidget         *type_box);
 
 
 #endif  /*  __GIMP_EDIT_SELECTION_TOOL_H__  */
diff --git a/app/tools/gimpmoveoptions.c b/app/tools/gimpmoveoptions.c
index 170b1c437a..7f76463ca4 100644
--- a/app/tools/gimpmoveoptions.c
+++ b/app/tools/gimpmoveoptions.c
@@ -179,18 +179,21 @@ gimp_move_options_notify_type (GimpMoveOptions *move_options,
 GtkWidget *
 gimp_move_options_gui (GimpToolOptions *tool_options)
 {
-  GObject   *config = G_OBJECT (tool_options);
-  GtkWidget *vbox   = gimp_tool_options_gui (tool_options);
-  GtkWidget *hbox;
-  GtkWidget *box;
-  GtkWidget *label;
-  GtkWidget *frame;
-  gchar     *title;
+  GObject         *config  = G_OBJECT (tool_options);
+  GimpMoveOptions *options = GIMP_MOVE_OPTIONS (tool_options);
+  GtkWidget       *vbox    = gimp_tool_options_gui (tool_options);
+  GtkWidget       *hbox;
+  GtkWidget       *box;
+  GtkWidget       *label;
+  GtkWidget       *frame;
+  gchar           *title;
 
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
   gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
+  options->type_box = hbox;
+
   label = gtk_label_new (_("Move:"));
   gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
   gtk_widget_show (label);
diff --git a/app/tools/gimpmoveoptions.h b/app/tools/gimpmoveoptions.h
index 60a463e046..bb2868332e 100644
--- a/app/tools/gimpmoveoptions.h
+++ b/app/tools/gimpmoveoptions.h
@@ -39,6 +39,9 @@ struct _GimpMoveOptions
 
   GimpTransformType  move_type;
   gboolean           move_current;
+
+  /*  options gui  */
+  GtkWidget         *type_box;
 };
 
 
diff --git a/app/tools/gimpmovetool.c b/app/tools/gimpmovetool.c
index 21023b0f24..393d51f903 100644
--- a/app/tools/gimpmovetool.c
+++ b/app/tools/gimpmovetool.c
@@ -272,6 +272,9 @@ gimp_move_tool_button_press (GimpTool            *tool,
       {
         active_item = GIMP_ITEM (gimp_image_get_mask (image));
 
+        if (gimp_channel_is_empty (GIMP_CHANNEL (active_item)))
+          active_item = NULL;
+
         translate_mode = GIMP_TRANSLATE_MODE_MASK;
 
         if (! active_item)
@@ -283,10 +286,6 @@ gimp_move_tool_button_press (GimpTool            *tool,
           {
             locked_message = "The selection's position is locked.";
           }
-        else if (gimp_channel_is_empty (GIMP_CHANNEL (active_item)))
-          {
-            locked_message = _("The selection is empty.");
-          }
       }
       break;
 
@@ -330,6 +329,7 @@ gimp_move_tool_button_press (GimpTool            *tool,
   if (! active_item)
     {
       gimp_tool_message_literal (tool, display, null_message);
+      gimp_widget_blink (options->type_box);
       gimp_tool_control (tool, GIMP_TOOL_ACTION_HALT, display);
       return;
     }
@@ -405,7 +405,8 @@ gimp_move_tool_key_press (GimpTool    *tool,
 
   return gimp_edit_selection_tool_translate (tool, kevent,
                                              options->move_type,
-                                             display);
+                                             display,
+                                             options->type_box);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]