[gimp/metadata-browser] app: add a canvas group for tool items
- From: Roman Joost <romanofski src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/metadata-browser] app: add a canvas group for tool items
- Date: Wed, 12 Sep 2012 22:14:15 +0000 (UTC)
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]