[gimp/metadata-browser] app: add a canvas group for tool items



commit fb5ce31745d2ddfd3a0091a99affaae8d420e352
Author: Michael Natterer <mitch gimp org>
Date:   Wed Nov 16 21:10:43 2011 +0100

    app: add a canvas group for tool items
    
    so we can control where in the canvas item stack they appear.
    Put the group right below the software cursor.

 app/display/gimpdisplayshell-items.c |   24 ++++++++++++++++++++++++
 app/display/gimpdisplayshell-items.h |   17 +++++++++++------
 app/display/gimpdisplayshell.h       |    1 +
 app/tools/gimpdrawtool.c             |    4 ++--
 app/tools/gimpsourcetool.c           |   20 ++++++++++----------
 app/tools/gimptool-progress.c        |    4 ++--
 6 files changed, 50 insertions(+), 20 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-items.c b/app/display/gimpdisplayshell-items.c
index c0338f9..3500984 100644
--- a/app/display/gimpdisplayshell-items.c
+++ b/app/display/gimpdisplayshell-items.c
@@ -78,6 +78,10 @@ gimp_display_shell_items_init (GimpDisplayShell *shell)
   gimp_display_shell_add_item (shell, shell->layer_boundary);
   g_object_unref (shell->layer_boundary);
 
+  shell->tool_items = gimp_canvas_group_new (shell);
+  gimp_display_shell_add_item (shell, shell->tool_items);
+  g_object_unref (shell->tool_items);
+
   shell->cursor = gimp_canvas_cursor_new (shell);
   gimp_canvas_item_set_visible (shell->cursor, FALSE);
   gimp_display_shell_add_item (shell, shell->cursor);
@@ -132,6 +136,26 @@ gimp_display_shell_remove_item (GimpDisplayShell *shell,
   gimp_canvas_group_remove_item (GIMP_CANVAS_GROUP (shell->canvas_item), item);
 }
 
+void
+gimp_display_shell_add_tool_item (GimpDisplayShell *shell,
+                                  GimpCanvasItem   *item)
+{
+  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+  g_return_if_fail (GIMP_IS_CANVAS_ITEM (item));
+
+  gimp_canvas_group_add_item (GIMP_CANVAS_GROUP (shell->tool_items), item);
+}
+
+void
+gimp_display_shell_remove_tool_item (GimpDisplayShell *shell,
+                                     GimpCanvasItem   *item)
+{
+  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+  g_return_if_fail (GIMP_IS_CANVAS_ITEM (item));
+
+  gimp_canvas_group_remove_item (GIMP_CANVAS_GROUP (shell->tool_items), item);
+}
+
 
 /*  private functions  */
 
diff --git a/app/display/gimpdisplayshell-items.h b/app/display/gimpdisplayshell-items.h
index 4b5b9b3..61f5f34 100644
--- a/app/display/gimpdisplayshell-items.h
+++ b/app/display/gimpdisplayshell-items.h
@@ -22,13 +22,18 @@
 #define __GIMP_DISPLAY_SHELL_ITEMS_H__
 
 
-void   gimp_display_shell_items_init  (GimpDisplayShell *shell);
-void   gimp_display_shell_items_free  (GimpDisplayShell *shell);
+void   gimp_display_shell_items_init       (GimpDisplayShell *shell);
+void   gimp_display_shell_items_free       (GimpDisplayShell *shell);
 
-void   gimp_display_shell_add_item    (GimpDisplayShell *shell,
-                                       GimpCanvasItem   *item);
-void   gimp_display_shell_remove_item (GimpDisplayShell *shell,
-                                       GimpCanvasItem   *item);
+void   gimp_display_shell_add_item         (GimpDisplayShell *shell,
+                                            GimpCanvasItem   *item);
+void   gimp_display_shell_remove_item      (GimpDisplayShell *shell,
+                                            GimpCanvasItem   *item);
+
+void   gimp_display_shell_add_tool_item    (GimpDisplayShell *shell,
+                                            GimpCanvasItem   *item);
+void   gimp_display_shell_remove_tool_item (GimpDisplayShell *shell,
+                                            GimpCanvasItem   *item);
 
 
 #endif /* __GIMP_DISPLAY_SHELL_ITEMS_H__ */
diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h
index 6b7b247..a780849 100644
--- a/app/display/gimpdisplayshell.h
+++ b/app/display/gimpdisplayshell.h
@@ -125,6 +125,7 @@ struct _GimpDisplayShell
   GimpCanvasItem    *guides;           /*  item proxies of guides             */
   GimpCanvasItem    *sample_points;    /*  item proxies of sample points      */
   GimpCanvasItem    *layer_boundary;   /*  item for the layer boundary        */
+  GimpCanvasItem    *tool_items;       /*  tools items, below the cursor      */
   GimpCanvasItem    *cursor;           /*  item for the software cursor       */
 
   guint              title_idle_id;    /*  title update idle ID               */
diff --git a/app/tools/gimpdrawtool.c b/app/tools/gimpdrawtool.c
index e7b6568..09dd7d5 100644
--- a/app/tools/gimpdrawtool.c
+++ b/app/tools/gimpdrawtool.c
@@ -212,7 +212,7 @@ gimp_draw_tool_draw (GimpDrawTool *draw_tool)
         {
           GimpDisplayShell *shell = gimp_display_get_shell (draw_tool->display);
 
-          gimp_display_shell_add_item (shell, draw_tool->item);
+          gimp_display_shell_add_tool_item (shell, draw_tool->item);
         }
     }
 }
@@ -224,7 +224,7 @@ gimp_draw_tool_undraw (GimpDrawTool *draw_tool)
     {
       GimpDisplayShell *shell = gimp_display_get_shell (draw_tool->display);
 
-      gimp_display_shell_remove_item (shell, draw_tool->item);
+      gimp_display_shell_remove_tool_item (shell, draw_tool->item);
       g_object_unref (draw_tool->item);
       draw_tool->item = NULL;
     }
diff --git a/app/tools/gimpsourcetool.c b/app/tools/gimpsourcetool.c
index 6944ce7..561730f 100644
--- a/app/tools/gimpsourcetool.c
+++ b/app/tools/gimpsourcetool.c
@@ -383,8 +383,8 @@ gimp_source_tool_draw (GimpDrawTool *draw_tool)
 
       if (source_tool->src_outline)
         {
-          gimp_display_shell_remove_item (src_shell,
-                                          source_tool->src_outline);
+          gimp_display_shell_remove_tool_item (src_shell,
+                                               source_tool->src_outline);
           source_tool->src_outline = NULL;
         }
 
@@ -399,8 +399,8 @@ gimp_source_tool_draw (GimpDrawTool *draw_tool)
 
           if (source_tool->src_outline)
             {
-              gimp_display_shell_add_item (src_shell,
-                                           source_tool->src_outline);
+              gimp_display_shell_add_tool_item (src_shell,
+                                                source_tool->src_outline);
               g_object_unref (source_tool->src_outline);
             }
         }
@@ -415,8 +415,8 @@ gimp_source_tool_draw (GimpDrawTool *draw_tool)
                                     source_tool->src_y + off_y,
                                     GIMP_TOOL_HANDLE_SIZE_CROSS,
                                     GIMP_TOOL_HANDLE_SIZE_CROSS);
-          gimp_display_shell_add_item (src_shell,
-                                       source_tool->src_handle);
+          gimp_display_shell_add_tool_item (src_shell,
+                                            source_tool->src_handle);
           g_object_unref (source_tool->src_handle);
         }
       else
@@ -442,15 +442,15 @@ gimp_source_tool_set_src_display (GimpSourceTool *source_tool,
 
           if (source_tool->src_handle)
             {
-              gimp_display_shell_remove_item (src_shell,
-                                              source_tool->src_handle);
+              gimp_display_shell_remove_tool_item (src_shell,
+                                                   source_tool->src_handle);
               source_tool->src_handle = NULL;
             }
 
           if (source_tool->src_outline)
             {
-              gimp_display_shell_remove_item (src_shell,
-                                              source_tool->src_outline);
+              gimp_display_shell_remove_tool_item (src_shell,
+                                                   source_tool->src_outline);
               source_tool->src_outline = NULL;
             }
         }
diff --git a/app/tools/gimptool-progress.c b/app/tools/gimptool-progress.c
index d2ab917..e69009d 100644
--- a/app/tools/gimptool-progress.c
+++ b/app/tools/gimptool-progress.c
@@ -97,7 +97,7 @@ gimp_tool_progress_start (GimpProgress *progress,
   tool->progress = gimp_canvas_progress_new (shell,
                                              GIMP_HANDLE_ANCHOR_CENTER,
                                              x + w / 2, y + h / 2);
-  gimp_display_shell_add_item (shell, tool->progress);
+  gimp_display_shell_add_tool_item (shell, tool->progress);
   g_object_unref (tool->progress);
 
   gimp_progress_start (GIMP_PROGRESS (tool->progress),
@@ -119,7 +119,7 @@ gimp_tool_progress_end (GimpProgress *progress)
       GimpDisplayShell *shell = gimp_display_get_shell (tool->progress_display);
 
       gimp_progress_end (GIMP_PROGRESS (tool->progress));
-      gimp_display_shell_remove_item (shell, tool->progress);
+      gimp_display_shell_remove_tool_item (shell, tool->progress);
 
       tool->progress         = NULL;
       tool->progress_display = NULL;



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