Commit 201bfe3e authored by Michael Natterer's avatar Michael Natterer 😴

app: add a "shell" property to GimpCanvasItem

and pass it to all constructors. The GimpDisplayShell is needed
because items are going to become more powerful soon.
parent 26d0035b
......@@ -305,15 +305,19 @@ gimp_canvas_arc_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_arc_new (gdouble center_x,
gdouble center_y,
gdouble radius_x,
gdouble radius_y,
gdouble start_angle,
gdouble slice_angle,
gboolean filled)
gimp_canvas_arc_new (GimpDisplayShell *shell,
gdouble center_x,
gdouble center_y,
gdouble radius_x,
gdouble radius_y,
gdouble start_angle,
gdouble slice_angle,
gboolean filled)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_ARC,
"shell", shell,
"center-x", center_x,
"center-y", center_y,
"radius-x", radius_x,
......
......@@ -49,13 +49,14 @@ struct _GimpCanvasArcClass
GType gimp_canvas_arc_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_arc_new (gdouble center_x,
gdouble center_y,
gdouble radius_x,
gdouble radius_y,
gdouble start_angle,
gdouble slice_angle,
gboolean filled);
GimpCanvasItem * gimp_canvas_arc_new (GimpDisplayShell *shell,
gdouble center_x,
gdouble center_y,
gdouble radius_x,
gdouble radius_y,
gdouble start_angle,
gdouble slice_angle,
gboolean filled);
#endif /* __GIMP_CANVAS_ARC_H__ */
......@@ -290,15 +290,19 @@ gimp_canvas_boundary_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_boundary_new (const BoundSeg *segs,
gint n_segs,
gdouble offset_x,
gdouble offset_y)
gimp_canvas_boundary_new (GimpDisplayShell *shell,
const BoundSeg *segs,
gint n_segs,
gdouble offset_x,
gdouble offset_y)
{
GimpCanvasItem *item;
GimpCanvasBoundaryPrivate *private;
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
item = g_object_new (GIMP_TYPE_CANVAS_BOUNDARY,
"shell", shell,
"offset-x", offset_x,
"offset-y", offset_y,
NULL);
......
......@@ -49,10 +49,11 @@ struct _GimpCanvasBoundaryClass
GType gimp_canvas_boundary_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_boundary_new (const BoundSeg *segs,
gint n_segs,
gdouble offset_x,
gdouble offset_y);
GimpCanvasItem * gimp_canvas_boundary_new (GimpDisplayShell *shell,
const BoundSeg *segs,
gint n_segs,
gdouble offset_x,
gdouble offset_y);
#endif /* __GIMP_CANVAS_BOUNDARY_H__ */
......@@ -427,16 +427,20 @@ gimp_canvas_corner_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_corner_new (gdouble x,
gdouble y,
gdouble width,
gdouble height,
GtkAnchorType anchor,
gint corner_width,
gint corner_height,
gboolean outside)
gimp_canvas_corner_new (GimpDisplayShell *shell,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
GtkAnchorType anchor,
gint corner_width,
gint corner_height,
gboolean outside)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_CORNER,
"shell", shell,
"x", x,
"y", y,
"width", width,
......
......@@ -49,14 +49,15 @@ struct _GimpCanvasCornerClass
GType gimp_canvas_corner_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_corner_new (gdouble x,
gdouble y,
gdouble width,
gdouble height,
GtkAnchorType anchor,
gint corner_width,
gint corner_height,
gboolean outside);
GimpCanvasItem * gimp_canvas_corner_new (GimpDisplayShell *shell,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
GtkAnchorType anchor,
gint corner_width,
gint corner_height,
gboolean outside);
#endif /* __GIMP_CANVAS_CORNER_H__ */
......@@ -224,9 +224,13 @@ gimp_canvas_group_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_group_new (void)
gimp_canvas_group_new (GimpDisplayShell *shell)
{
return g_object_new (GIMP_TYPE_CANVAS_GROUP, NULL);
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_GROUP,
"shell", shell,
NULL);
}
void
......
......@@ -48,17 +48,17 @@ struct _GimpCanvasGroupClass
GType gimp_canvas_group_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_group_new (void);
GimpCanvasItem * gimp_canvas_group_new (GimpDisplayShell *shell);
void gimp_canvas_group_add_item (GimpCanvasGroup *group,
GimpCanvasItem *item);
void gimp_canvas_group_remove_item (GimpCanvasGroup *group,
GimpCanvasItem *item);
void gimp_canvas_group_add_item (GimpCanvasGroup *group,
GimpCanvasItem *item);
void gimp_canvas_group_remove_item (GimpCanvasGroup *group,
GimpCanvasItem *item);
void gimp_canvas_group_set_group_stroking (GimpCanvasGroup *group,
gboolean group_stroking);
void gimp_canvas_group_set_group_filling (GimpCanvasGroup *group,
gboolean group_filling);
void gimp_canvas_group_set_group_stroking (GimpCanvasGroup *group,
gboolean group_stroking);
void gimp_canvas_group_set_group_filling (GimpCanvasGroup *group,
gboolean group_filling);
#endif /* __GIMP_CANVAS_GROUP_H__ */
......@@ -264,10 +264,14 @@ gimp_canvas_guide_stroke (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_guide_new (GimpOrientationType orientation,
gimp_canvas_guide_new (GimpDisplayShell *shell,
GimpOrientationType orientation,
gint position)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_GUIDE,
"shell", shell,
"orientation", orientation,
"position", position,
NULL);
......
......@@ -49,7 +49,8 @@ struct _GimpCanvasGuideClass
GType gimp_canvas_guide_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_guide_new (GimpOrientationType orientation,
GimpCanvasItem * gimp_canvas_guide_new (GimpDisplayShell *shell,
GimpOrientationType orientation,
gint position);
......
......@@ -504,14 +504,18 @@ gimp_canvas_handle_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_handle_new (GimpHandleType type,
GtkAnchorType anchor,
gdouble x,
gdouble y,
gint width,
gint height)
gimp_canvas_handle_new (GimpDisplayShell *shell,
GimpHandleType type,
GtkAnchorType anchor,
gdouble x,
gdouble y,
gint width,
gint height)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_HANDLE,
"shell", shell,
"type", type,
"anchor", anchor,
"x", x,
......
......@@ -49,7 +49,8 @@ struct _GimpCanvasHandleClass
GType gimp_canvas_handle_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_handle_new (GimpHandleType type,
GimpCanvasItem * gimp_canvas_handle_new (GimpDisplayShell *shell,
GimpHandleType type,
GtkAnchorType anchor,
gdouble x,
gdouble y,
......
......@@ -35,6 +35,7 @@
enum
{
PROP_0,
PROP_SHELL,
PROP_LINE_CAP,
PROP_HIGHLIGHT
};
......@@ -44,10 +45,11 @@ typedef struct _GimpCanvasItemPrivate GimpCanvasItemPrivate;
struct _GimpCanvasItemPrivate
{
cairo_line_cap_t line_cap;
gboolean highlight;
gint suspend_stroking;
gint suspend_filling;
GimpDisplayShell *shell;
cairo_line_cap_t line_cap;
gboolean highlight;
gint suspend_stroking;
gint suspend_filling;
};
#define GET_PRIVATE(item) \
......@@ -58,6 +60,7 @@ struct _GimpCanvasItemPrivate
/* local function prototypes */
static void gimp_canvas_item_constructed (GObject *object);
static void gimp_canvas_item_set_property (GObject *object,
guint property_id,
const GValue *value,
......@@ -91,6 +94,7 @@ gimp_canvas_item_class_init (GimpCanvasItemClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->constructed = gimp_canvas_item_constructed;
object_class->set_property = gimp_canvas_item_set_property;
object_class->get_property = gimp_canvas_item_get_property;
......@@ -99,6 +103,13 @@ gimp_canvas_item_class_init (GimpCanvasItemClass *klass)
klass->stroke = gimp_canvas_item_real_stroke;
klass->fill = gimp_canvas_item_real_fill;
g_object_class_install_property (object_class, PROP_SHELL,
g_param_spec_object ("shell",
NULL, NULL,
GIMP_TYPE_DISPLAY_SHELL,
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_LINE_CAP,
g_param_spec_int ("line-cap",
NULL, NULL,
......@@ -121,12 +132,24 @@ gimp_canvas_item_init (GimpCanvasItem *item)
{
GimpCanvasItemPrivate *private = GET_PRIVATE (item);
private->shell = NULL;
private->line_cap = CAIRO_LINE_CAP_ROUND;
private->highlight = FALSE;
private->suspend_stroking = 0;
private->suspend_filling = 0;
}
static void
gimp_canvas_item_constructed (GObject *object)
{
GimpCanvasItemPrivate *private = GET_PRIVATE (object);
g_assert (GIMP_IS_DISPLAY_SHELL (private->shell));
if (G_OBJECT_CLASS (parent_class)->constructed)
G_OBJECT_CLASS (parent_class)->constructed (object);
}
static void
gimp_canvas_item_set_property (GObject *object,
guint property_id,
......@@ -137,6 +160,9 @@ gimp_canvas_item_set_property (GObject *object,
switch (property_id)
{
case PROP_SHELL:
private->shell = g_value_get_object (value); /* don't ref */
break;
case PROP_LINE_CAP:
private->line_cap = g_value_get_int (value);
break;
......@@ -160,6 +186,9 @@ gimp_canvas_item_get_property (GObject *object,
switch (property_id)
{
case PROP_SHELL:
g_value_set_object (value, private->shell);
break;
case PROP_LINE_CAP:
g_value_set_int (value, private->line_cap);
break;
......
......@@ -251,15 +251,19 @@ gimp_canvas_line_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_line_new (gdouble x1,
gdouble y1,
gdouble x2,
gdouble y2)
gimp_canvas_line_new (GimpDisplayShell *shell,
gdouble x1,
gdouble y1,
gdouble x2,
gdouble y2)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_LINE,
"x1", x1,
"y1", y1,
"x2", x2,
"y2", y2,
"shell", shell,
"x1", x1,
"y1", y1,
"x2", x2,
"y2", y2,
NULL);
}
......@@ -49,10 +49,11 @@ struct _GimpCanvasLineClass
GType gimp_canvas_line_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_line_new (gdouble x1,
gdouble y1,
gdouble x2,
gdouble y2);
GimpCanvasItem * gimp_canvas_line_new (GimpDisplayShell *shell,
gdouble x1,
gdouble y1,
gdouble x2,
gdouble y2);
#endif /* __GIMP_CANVAS_LINE_H__ */
......@@ -263,14 +263,19 @@ gimp_canvas_polygon_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_polygon_new (const GimpVector2 *points,
gimp_canvas_polygon_new (GimpDisplayShell *shell,
const GimpVector2 *points,
gint n_points,
gboolean filled)
{
GimpCanvasItem *item;
GimpCanvasPolygonPrivate *private;
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
g_return_val_if_fail (points != NULL && n_points > 1, NULL);
item = g_object_new (GIMP_TYPE_CANVAS_POLYGON,
"shell", shell,
"filled", filled,
NULL);
private = GET_PRIVATE (item);
......@@ -283,7 +288,8 @@ gimp_canvas_polygon_new (const GimpVector2 *points,
}
GimpCanvasItem *
gimp_canvas_polygon_new_from_coords (const GimpCoords *points,
gimp_canvas_polygon_new_from_coords (GimpDisplayShell *shell,
const GimpCoords *points,
gint n_points,
gboolean filled)
{
......@@ -291,7 +297,11 @@ gimp_canvas_polygon_new_from_coords (const GimpCoords *points,
GimpCanvasPolygonPrivate *private;
gint i;
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
g_return_val_if_fail (points != NULL && n_points > 1, NULL);
item = g_object_new (GIMP_TYPE_CANVAS_POLYGON,
"shell", shell,
"filled", filled,
NULL);
private = GET_PRIVATE (item);
......
......@@ -49,10 +49,12 @@ struct _GimpCanvasPolygonClass
GType gimp_canvas_polygon_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_polygon_new (const GimpVector2 *points,
GimpCanvasItem * gimp_canvas_polygon_new (GimpDisplayShell *shell,
const GimpVector2 *points,
gint n_points,
gboolean filled);
GimpCanvasItem * gimp_canvas_polygon_new_from_coords (const GimpCoords *points,
GimpCanvasItem * gimp_canvas_polygon_new_from_coords (GimpDisplayShell *shell,
const GimpCoords *points,
gint n_points,
gboolean filled);
......
......@@ -140,9 +140,13 @@ gimp_canvas_proxy_group_get_property (GObject *object,
}
GimpCanvasItem *
gimp_canvas_proxy_group_new (void)
gimp_canvas_proxy_group_new (GimpDisplayShell *shell)
{
return g_object_new (GIMP_TYPE_CANVAS_PROXY_GROUP, NULL);
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_PROXY_GROUP,
"shell", shell,
NULL);
}
void
......
......@@ -49,7 +49,7 @@ struct _GimpCanvasProxyGroupClass
GType gimp_canvas_proxy_group_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_proxy_group_new (void);
GimpCanvasItem * gimp_canvas_proxy_group_new (GimpDisplayShell *shell);
void gimp_canvas_proxy_group_add_item (GimpCanvasProxyGroup *group,
gpointer object,
......
......@@ -322,13 +322,17 @@ gimp_canvas_rectangle_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_rectangle_new (gdouble x,
gdouble y,
gdouble width,
gdouble height,
gboolean filled)
gimp_canvas_rectangle_new (GimpDisplayShell *shell,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
gboolean filled)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_RECTANGLE,
"shell", shell,
"x", x,
"y", y,
"width", width,
......
......@@ -49,11 +49,12 @@ struct _GimpCanvasRectangleClass
GType gimp_canvas_rectangle_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_rectangle_new (gdouble x,
gdouble y,
gdouble width,
gdouble height,
gboolean filled);
GimpCanvasItem * gimp_canvas_rectangle_new (GimpDisplayShell *shell,
gdouble x,
gdouble y,
gdouble width,
gdouble height,
gboolean filled);
#endif /* __GIMP_CANVAS_RECTANGLE_H__ */
......@@ -323,11 +323,15 @@ gimp_canvas_sample_point_fill (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_sample_point_new (gint x,
gint y,
gint index)
gimp_canvas_sample_point_new (GimpDisplayShell *shell,
gint x,
gint y,
gint index)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
return g_object_new (GIMP_TYPE_CANVAS_SAMPLE_POINT,
"shell", shell,
"x", x,
"y", y,
"index", index,
......
......@@ -49,9 +49,10 @@ struct _GimpCanvasSamplePointClass
GType gimp_canvas_sample_point_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_sample_point_new (gint x,
gint y,
gint index);
GimpCanvasItem * gimp_canvas_sample_point_new (GimpDisplayShell *shell,
gint x,
gint y,
gint index);
#endif /* __GIMP_CANVAS_SAMPLE_POINT_H__ */
......@@ -294,10 +294,15 @@ gimp_canvas_text_cursor_get_extents (GimpCanvasItem *item,
}
GimpCanvasItem *
gimp_canvas_text_cursor_new (PangoRectangle *cursor,
gboolean overwrite)
gimp_canvas_text_cursor_new (GimpDisplayShell *shell,
PangoRectangle *cursor,
gboolean overwrite)
{
g_return_val_if_fail (GIMP_IS_DISPLAY_SHELL (shell), NULL);
g_return_val_if_fail (cursor != NULL, NULL);
return g_object_new (GIMP_TYPE_CANVAS_TEXT_CURSOR,
"shell", shell,
"x", cursor->x,
"y", cursor->y,
"width", cursor->width,
......
......@@ -49,8 +49,9 @@ struct _GimpCanvasTextCursorClass
GType gimp_canvas_text_cursor_get_type (void) G_GNUC_CONST;
GimpCanvasItem * gimp_canvas_text_cursor_new (PangoRectangle *cursor,
gboolean overwrite);
GimpCanvasItem * gimp_canvas_text_cursor_new (GimpDisplayShell *shell,
PangoRectangle *cursor,
gboolean overwrite);
#endif /* __GIMP_CANVAS_RECTANGLE_H__ */
......@@ -543,7 +543,8 @@ gimp_display_shell_guide_add_handler (GimpImage *image,
GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->guides);
GimpCanvasItem *item;
item = gimp_canvas_guide_new (gimp_guide_get_orientation (guide),
item = gimp_canvas_guide_new (shell,
gimp_guide_get_orientation (guide),
gimp_guide_get_position (guide));
g_object_set (item, "guide-style", TRUE, NULL);
......@@ -598,7 +599,8 @@ gimp_display_shell_sample_point_add_handler (GimpImage *image,
GList *list;
gint i;
item = gimp_canvas_sample_point_new (sample_point->x,
item = gimp_canvas_sample_point_new (shell,
sample_point->x,
sample_point->y,
0);
g_object_set (item, "sample-point-style", TRUE, NULL);
......
......@@ -291,14 +291,14 @@ gimp_display_shell_init (GimpDisplayShell *shell)
GIMP_DISPLAY_RENDER_BUF_WIDTH,
GIMP_DISPLAY_RENDER_BUF_HEIGHT);
shell->canvas_item = gimp_canvas_group_new ();
shell->canvas_item = gimp_canvas_group_new (shell);
shell->guides = gimp_canvas_proxy_group_new ();
shell->guides = gimp_canvas_proxy_group_new (shell);
gimp_canvas_group_add_item (GIMP_CANVAS_GROUP (shell->canvas_item),
shell->guides);
g_object_unref (shell->guides);
shell->sample_points = gimp_canvas_proxy_group_new ();
shell->sample_points = gimp_canvas_proxy_group_new (shell);
gimp_canvas_group_add_item (GIMP_CANVAS_GROUP (shell->canvas_item),
shell->sample_points);
g_object_unref (shell->sample_points);
......
......@@ -346,7 +346,7 @@ gimp_draw_tool_add_item (GimpDrawTool *draw_tool,
g_return_if_fail (GIMP_IS_CANVAS_ITEM (item));
if (! draw_tool->item)
draw_tool->item = gimp_canvas_group_new ();
draw_tool->item = gimp_canvas_group_new (gimp_display_get_shell (draw_tool->display));
gimp_canvas_group_add_item (GIMP_CANVAS_GROUP (draw_tool->item), item);
}
......@@ -385,7 +385,8 @@ gimp_draw_tool_add_line (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_line_new (x1, y1, x2, y2);
item = gimp_canvas_line_new (gimp_display_get_shell (draw_tool->display),
x1, y1, x2, y2);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -410,7 +411,8 @@ gimp_draw_tool_add_guide (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_guide_new (orientation, position);
item = gimp_canvas_guide_new (gimp_display_get_shell (draw_tool->display),
orientation, position);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -437,7 +439,8 @@ gimp_draw_tool_add_sample_point (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_sample_point_new (x, y, index);
item = gimp_canvas_sample_point_new (gimp_display_get_shell (draw_tool->display),
x, y, index);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -469,7 +472,8 @@ gimp_draw_tool_add_rectangle (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_rectangle_new (x, y, width, height, filled);
item = gimp_canvas_rectangle_new (gimp_display_get_shell (draw_tool->display),
x, y, width, height, filled);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -491,7 +495,8 @@ gimp_draw_tool_add_arc (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_arc_new (x + width / 2.0,
item = gimp_canvas_arc_new (gimp_display_get_shell (draw_tool->display),
x + width / 2.0,
y + height / 2.0,
width / 2.0,
height / 2.0,
......@@ -518,7 +523,8 @@ gimp_draw_tool_add_handle (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_handle_new (type, anchor, x, y, width, height);
item = gimp_canvas_handle_new (gimp_display_get_shell (draw_tool->display),
type, anchor, x, y, width, height);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -559,7 +565,8 @@ gimp_draw_tool_add_corner (GimpDrawTool *draw_tool,
g_return_val_if_fail (GIMP_IS_DRAW_TOOL (draw_tool), NULL);
item = gimp_canvas_corner_new (x1, y1, x2 - x1, y2 - y1,
item = gimp_canvas_corner_new (gimp_display_get_shell (draw_tool->display),
x1, y1, x2 - x1, y2 - y1,
anchor, width, height, put_outside);
gimp_canvas_item_set_highlight (item, highlight);
......@@ -582,7 +589,8 @@ gimp_draw_tool_add_lines (GimpDrawTool *draw_tool,
if (points == NULL || n_points < 2)
return NULL;
item = gimp_canvas_polygon_new (points, n_points, filled);
item = gimp_canvas_polygon_new (gimp_display_get_shell (draw_tool->display),
points, n_points, filled);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -603,7 +611,8 @@ gimp_draw_tool_add_strokes (GimpDrawTool *draw_tool,
if (points == NULL || n_points < 2)
return NULL;
item = gimp_canvas_polygon_new_from_coords (points, n_points, filled);
item = gimp_canvas_polygon_new_from_coords (gimp_display_get_shell (draw_tool->display),
points, n_points, filled);
gimp_draw_tool_add_item (draw_tool, item);
g_object_unref (item);
......@@ -637,7 +646,8 @@ gimp_draw_tool_add_boundary (GimpDrawTool *draw_tool,
g_return_val_if_fail (n_bound_segs > 0, NULL);
g_return_val_if_fail (bound_segs != NULL, NULL);
item = gimp_canvas_boundary_new (bound_segs, n_bound_segs,
item = gimp_canvas_boundary_new (gimp_display_get_shel