[gimp] app: use image and rect_tool utility functions instead of duplicating them



commit 468ea629a65bc274c868ece9c22b48e97e7a26f4
Author: Michael Natterer <mitch gimp org>
Date:   Thu Feb 18 09:12:26 2010 +0100

    app: use image and rect_tool utility functions instead of duplicating them
    
    and some random cleanups

 app/tools/gimptexttool.c |  149 +++++++++++++++++++++-------------------------
 1 files changed, 67 insertions(+), 82 deletions(-)
---
diff --git a/app/tools/gimptexttool.c b/app/tools/gimptexttool.c
index 0d75505..9124b10 100644
--- a/app/tools/gimptexttool.c
+++ b/app/tools/gimptexttool.c
@@ -378,9 +378,9 @@ gimp_text_tool_button_press (GimpTool            *tool,
 {
   GimpTextTool      *text_tool = GIMP_TEXT_TOOL (tool);
   GimpRectangleTool *rect_tool = GIMP_RECTANGLE_TOOL (tool);
+  GimpImage         *image     = gimp_display_get_image (display);
   GimpText          *text      = text_tool->text;
   GtkTextBuffer     *buffer    = text_tool->text_buffer;
-  GimpDrawable      *drawable;
 
   gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
 
@@ -428,95 +428,88 @@ gimp_text_tool_button_press (GimpTool            *tool,
         }
     }
 
-  drawable = gimp_image_get_active_drawable (gimp_display_get_image (display));
-
-  if (GIMP_IS_LAYER (drawable))
+  if (gimp_image_coords_in_active_pickable (image, coords, FALSE, FALSE))
     {
-      GimpItem *item = GIMP_ITEM (drawable);
-      gdouble   x    = coords->x - gimp_item_get_offset_x (item);
-      gdouble   y    = coords->y - gimp_item_get_offset_y (item);
+      GimpDrawable *drawable = gimp_image_get_active_drawable (image);
+      GimpItem     *item     = GIMP_ITEM (drawable);
+      gdouble       x        = coords->x - gimp_item_get_offset_x (item);
+      gdouble       y        = coords->y - gimp_item_get_offset_y (item);
 
-      if (x >= 0 && x < gimp_item_get_width (item) &&
-          y >= 0 && y < gimp_item_get_height (item))
+      /*  did the user click on a text layer?  */
+      if (gimp_text_tool_set_drawable (text_tool, drawable, TRUE))
         {
-          /*  did the user click on a text layer?  */
-          if (gimp_text_tool_set_drawable (text_tool, drawable, TRUE))
+          /*  if we clicked on a text layer while the tool was idle
+           *  (didn't show a rectangle), frame the layer and switch to
+           *  selecting instead of drawing a new rectangle
+           */
+          if (gimp_rectangle_tool_get_function (rect_tool) ==
+              GIMP_RECTANGLE_TOOL_CREATING)
             {
-              /*  if we clicked on a text layer while the tool was idle
-               *  (didn't show a rectangle), frame the layer and switch
-               *  to selecting instead of drawing a new rectangle
-               */
-              if (gimp_rectangle_tool_get_function (rect_tool) ==
-                  GIMP_RECTANGLE_TOOL_CREATING)
-                {
-                  text_tool->selecting = TRUE;
-
-                  gimp_rectangle_tool_set_function (rect_tool,
-                                                    GIMP_RECTANGLE_TOOL_DEAD);
+              text_tool->selecting = TRUE;
 
-                  gimp_text_tool_frame_item (text_tool);
+              gimp_rectangle_tool_set_function (rect_tool,
+                                                GIMP_RECTANGLE_TOOL_DEAD);
 
-                }
+              gimp_text_tool_frame_item (text_tool);
+            }
 
-              if (press_type == GIMP_BUTTON_PRESS_NORMAL)
+          if (press_type == GIMP_BUTTON_PRESS_NORMAL)
+            {
+              if (text_tool->text && text_tool->text != text)
                 {
-                  /* enable keyboard-handling for the text */
-                  if (text_tool->text && text_tool->text != text)
-                    {
-                      gimp_text_tool_editor_start (text_tool);
-                    }
+                  gimp_text_tool_editor_start (text_tool);
                 }
+            }
 
-              if (text_tool->layout && ! text_tool->moving)
-                {
-                  GtkTextIter cursor;
-                  GtkTextIter selection;
-                  gint        offset;
+          if (text_tool->layout && ! text_tool->moving)
+            {
+              GtkTextIter cursor;
+              GtkTextIter selection;
+              gint        offset;
 
-                  offset = gimp_text_tool_xy_to_offset (text_tool, x, y);
+              offset = gimp_text_tool_xy_to_offset (text_tool, x, y);
 
-                  gtk_text_buffer_get_iter_at_offset (buffer, &cursor, offset);
+              gtk_text_buffer_get_iter_at_offset (buffer, &cursor, offset);
 
-                  selection = cursor;
+              selection = cursor;
 
-                  text_tool->select_start_offset = offset;
-                  text_tool->select_words        = FALSE;
-                  text_tool->select_lines        = FALSE;
+              text_tool->select_start_offset = offset;
+              text_tool->select_words        = FALSE;
+              text_tool->select_lines        = FALSE;
 
-                  switch (press_type)
-                    {
-                    case GIMP_BUTTON_PRESS_NORMAL:
-                      gtk_text_buffer_place_cursor (buffer, &cursor);
-                      break;
+              switch (press_type)
+                {
+                case GIMP_BUTTON_PRESS_NORMAL:
+                  gtk_text_buffer_place_cursor (buffer, &cursor);
+                  break;
 
-                    case GIMP_BUTTON_PRESS_DOUBLE:
-                      text_tool->select_words = TRUE;
+                case GIMP_BUTTON_PRESS_DOUBLE:
+                  text_tool->select_words = TRUE;
 
-                      if (! gtk_text_iter_starts_word (&cursor))
-                        gtk_text_iter_backward_visible_word_starts (&cursor, 1);
+                  if (! gtk_text_iter_starts_word (&cursor))
+                    gtk_text_iter_backward_visible_word_starts (&cursor, 1);
 
-                      if (! gtk_text_iter_ends_word (&selection) &&
-                          ! gtk_text_iter_forward_visible_word_ends (&selection, 1))
-                        gtk_text_iter_forward_to_line_end (&selection);
+                  if (! gtk_text_iter_ends_word (&selection) &&
+                      ! gtk_text_iter_forward_visible_word_ends (&selection, 1))
+                    gtk_text_iter_forward_to_line_end (&selection);
 
-                      gtk_text_buffer_select_range (buffer, &cursor, &selection);
-                      break;
+                  gtk_text_buffer_select_range (buffer, &cursor, &selection);
+                  break;
 
-                    case GIMP_BUTTON_PRESS_TRIPLE:
-                      text_tool->select_lines = TRUE;
+                case GIMP_BUTTON_PRESS_TRIPLE:
+                  text_tool->select_lines = TRUE;
 
-                      gtk_text_iter_set_line_offset (&cursor, 0);
-                      gtk_text_iter_forward_to_line_end (&selection);
+                  gtk_text_iter_set_line_offset (&cursor, 0);
+                  gtk_text_iter_forward_to_line_end (&selection);
 
-                      gtk_text_buffer_select_range (buffer, &cursor, &selection);
-                      break;
-                    }
+                  gtk_text_buffer_select_range (buffer, &cursor, &selection);
+                  break;
                 }
+            }
 
-              gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
+          gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
 
-              return;
-            }
+          return;
         }
     }
 
@@ -803,18 +796,10 @@ gimp_text_tool_get_popup (GimpTool         *tool,
                           const gchar     **ui_path)
 {
   GimpTextTool *text_tool = GIMP_TEXT_TOOL (tool);
-  gint          x1, y1;
-  gint          x2, y2;
 
-  g_object_get (text_tool,
-                "x1", &x1,
-                "y1", &y1,
-                "x2", &x2,
-                "y2", &y2,
-                NULL);
-
-  if (coords->x >= x1 && coords->x < x2 &&
-      coords->y >= y1 && coords->y < y2)
+  if (gimp_rectangle_tool_point_in_rectangle (GIMP_RECTANGLE_TOOL (text_tool),
+                                              coords->x,
+                                              coords->y))
     {
       if (! text_tool->ui_manager)
         {
@@ -1497,7 +1482,7 @@ gimp_text_tool_apply (GimpTextTool *text_tool)
 
   g_object_freeze_notify (dest);
 
-  for (; list; list = list->next)
+  for (; list; list = g_list_next (list))
     {
       GValue value = { 0, };
 
@@ -1768,18 +1753,16 @@ gimp_text_tool_set_image (GimpTextTool *text_tool,
 
       g_object_remove_weak_pointer (G_OBJECT (text_tool->image),
                                     (gpointer) &text_tool->image);
-      text_tool->image = NULL;
     }
 
+  text_tool->image = image;
+
   if (image)
     {
       GimpTextOptions *options = GIMP_TEXT_TOOL_GET_OPTIONS (text_tool);
       gdouble          xres;
       gdouble          yres;
 
-      gimp_image_get_resolution (image, &xres, &yres);
-
-      text_tool->image = image;
       g_object_add_weak_pointer (G_OBJECT (text_tool->image),
                                  (gpointer) &text_tool->image);
 
@@ -1787,6 +1770,7 @@ gimp_text_tool_set_image (GimpTextTool *text_tool,
                                G_CALLBACK (gimp_text_tool_layer_changed),
                                text_tool, 0);
 
+      gimp_image_get_resolution (image, &xres, &yres);
       gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (options->size_entry), 0,
                                       yres, FALSE);
     }
@@ -2103,9 +2087,10 @@ gimp_text_tool_create_vectors_warped (GimpTextTool *text_tool)
 
   gimp_vectors_warp_vectors (vectors0, vectors, 0.5 * box_height);
 
+  gimp_item_set_visible (GIMP_ITEM (vectors), TRUE, FALSE);
+
   gimp_image_add_vectors (text_tool->image, vectors,
                           GIMP_IMAGE_ACTIVE_PARENT, -1, TRUE);
-  gimp_item_set_visible (GIMP_ITEM (vectors), TRUE, FALSE);
 
   gimp_image_flush (text_tool->image);
 }



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