app: make GimpViewRenderer::border_type and ::border_color private

This commit is contained in:
Michael Natterer 2025-08-21 08:15:08 +02:00
parent da16988ee0
commit 6eaf357af9
3 changed files with 33 additions and 20 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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,