diff --git a/app/widgets/gimpcellrendererviewable.c b/app/widgets/gimpcellrendererviewable.c index 07b6911c22..3003a95ef7 100644 --- a/app/widgets/gimpcellrendererviewable.c +++ b/app/widgets/gimpcellrendererviewable.c @@ -293,9 +293,11 @@ gimp_cell_renderer_viewable_render (GtkCellRenderer *cell, if (! (flags & GTK_CELL_RENDERER_SELECTED)) { /* this is an ugly hack. The cell state should be passed to - * the view renderer, so that it can adjust its border. - * (or something like this) */ - if (cellviewable->renderer->border_type == GIMP_VIEW_BORDER_WHITE) + * the view renderer, so that it can adjust its border. (or + * something like this) + */ + if (gimp_view_renderer_get_border_type (cellviewable->renderer) == + GIMP_VIEW_BORDER_WHITE) gimp_view_renderer_set_border_type (cellviewable->renderer, GIMP_VIEW_BORDER_BLACK); diff --git a/app/widgets/gimpviewrenderer.c b/app/widgets/gimpviewrenderer.c index 50cd03f89a..f9ebd308e4 100644 --- a/app/widgets/gimpviewrenderer.c +++ b/app/widgets/gimpviewrenderer.c @@ -64,6 +64,9 @@ enum struct _GimpViewRendererPrivate { + GimpViewBorderType border_type; + GeglColor *border_color; + cairo_pattern_t *pattern; gchar *bg_icon_name; @@ -163,13 +166,11 @@ gimp_view_renderer_init (GimpViewRenderer *renderer) { renderer->priv = gimp_view_renderer_get_instance_private (renderer); - renderer->dot_for_dot = TRUE; - - renderer->border_type = GIMP_VIEW_BORDER_STYLE_FG; - - renderer->surface_bg = GIMP_VIEW_BG_STYLE; - renderer->size = -1; + renderer->dot_for_dot = TRUE; + renderer->surface_bg = GIMP_VIEW_BG_STYLE; + renderer->size = -1; + renderer->priv->border_type = GIMP_VIEW_BORDER_STYLE_FG; renderer->priv->needs_render = TRUE; } @@ -178,14 +179,14 @@ gimp_view_renderer_dispose (GObject *object) { GimpViewRenderer *renderer = GIMP_VIEW_RENDERER (object); - g_clear_object (&renderer->border_color); - if (renderer->viewable) gimp_view_renderer_set_viewable (renderer, NULL); if (renderer->context) gimp_view_renderer_set_context (renderer, NULL); + g_clear_object (&renderer->priv->border_color); + if (renderer->priv->color_config) gimp_view_renderer_set_color_config (renderer, NULL); @@ -199,10 +200,10 @@ gimp_view_renderer_finalize (GObject *object) { GimpViewRenderer *renderer = GIMP_VIEW_RENDERER (object); - g_clear_pointer (&renderer->priv->pattern, cairo_pattern_destroy); g_clear_pointer (&renderer->surface, cairo_surface_destroy); + g_clear_pointer (&renderer->priv->pattern, cairo_pattern_destroy); g_clear_pointer (&renderer->priv->bg_icon_name, g_free); - g_clear_object (&renderer->border_color); + g_clear_object (&renderer->priv->border_color); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -496,7 +497,7 @@ gimp_view_renderer_set_border_type (GimpViewRenderer *renderer, g_return_if_fail (GIMP_IS_VIEW_RENDERER (renderer)); - renderer->border_type = border_type; + renderer->priv->border_type = border_type; switch (border_type) { @@ -521,11 +522,20 @@ gimp_view_renderer_set_border_type (GimpViewRenderer *renderer, break; } - g_set_object (&renderer->border_color, border_color); + g_set_object (&renderer->priv->border_color, border_color); gimp_view_renderer_update_idle (renderer); } +GimpViewBorderType +gimp_view_renderer_get_border_type (GimpViewRenderer *renderer) +{ + g_return_val_if_fail (GIMP_IS_VIEW_RENDERER (renderer), + GIMP_VIEW_BORDER_STYLE_FG); + + return renderer->priv->border_type; +} + void gimp_view_renderer_set_background (GimpViewRenderer *renderer, const gchar *icon_name) @@ -686,8 +696,8 @@ gimp_view_renderer_draw (GimpViewRenderer *renderer, gint height = renderer->height + renderer->border_width; gdouble x, y; - if (renderer->border_color) - color = g_object_ref (renderer->border_color); + if (renderer->priv->border_color) + color = g_object_ref (renderer->priv->border_color); else color = gimp_get_style_color (widget, GTK_STYLE_PROPERTY_COLOR); diff --git a/app/widgets/gimpviewrenderer.h b/app/widgets/gimpviewrenderer.h index 794906f5ad..2cf597fb4e 100644 --- a/app/widgets/gimpviewrenderer.h +++ b/app/widgets/gimpviewrenderer.h @@ -50,9 +50,6 @@ struct _GimpViewRenderer guint dot_for_dot : 1; guint is_popup : 1; - GimpViewBorderType border_type; - GeglColor *border_color; - /*< protected >*/ cairo_surface_t *surface; GimpViewBG surface_bg; @@ -120,8 +117,12 @@ void gimp_view_renderer_set_size_full (GimpViewRenderer *renderer, gint border_width); void gimp_view_renderer_set_dot_for_dot (GimpViewRenderer *renderer, gboolean dot_for_dot); + void gimp_view_renderer_set_border_type (GimpViewRenderer *renderer, GimpViewBorderType border_type); +GimpViewBorderType + gimp_view_renderer_get_border_type (GimpViewRenderer *renderer); + void gimp_view_renderer_set_background (GimpViewRenderer *renderer, const gchar *icon_name); void gimp_view_renderer_set_color_config (GimpViewRenderer *renderer,