GtkRendererCellAccessible: add a private struct

Move instance fields to a private struct, in preparation
for installing a11y headers.
This also required removing access to GtkRendererCellAccessible innards
from various cell accessible implementations.
This commit is contained in:
Matthias Clasen
2012-10-14 21:07:46 -04:00
parent 06542b2b59
commit 8b667e006a
5 changed files with 44 additions and 18 deletions

View File

@ -105,11 +105,14 @@ gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell)
GtkBooleanCellAccessible *boolean_cell = GTK_BOOLEAN_CELL_ACCESSIBLE (cell); GtkBooleanCellAccessible *boolean_cell = GTK_BOOLEAN_CELL_ACCESSIBLE (cell);
gboolean active; gboolean active;
gboolean sensitive; gboolean sensitive;
GtkCellRenderer *renderer;
g_object_get (G_OBJECT (GTK_RENDERER_CELL_ACCESSIBLE (cell)->renderer), g_object_get (cell, "renderer", &renderer, NULL);
g_object_get (renderer,
"active", &active, "active", &active,
"sensitive", &sensitive, "sensitive", &sensitive,
NULL); NULL);
g_object_unref (renderer);
if (boolean_cell->priv->cell_value != active) if (boolean_cell->priv->cell_value != active)
{ {

View File

@ -101,10 +101,11 @@ gtk_image_cell_accessible_get_image_size (AtkImage *image,
*width = 0; *width = 0;
*height = 0; *height = 0;
cell_renderer = GTK_RENDERER_CELL_ACCESSIBLE (cell)->renderer; g_object_get (cell, "renderer", &cell_renderer, NULL);
g_object_get (GTK_CELL_RENDERER_PIXBUF (cell_renderer), g_object_get (cell_renderer,
"pixbuf", &pixbuf, "pixbuf", &pixbuf,
NULL); NULL);
g_object_unref (cell_renderer);
if (pixbuf) if (pixbuf)
{ {

View File

@ -21,6 +21,10 @@
#include "gtkrenderercellaccessible.h" #include "gtkrenderercellaccessible.h"
#include "gtkintl.h" #include "gtkintl.h"
struct _GtkRendererCellAccessiblePrivate
{
GtkCellRenderer *renderer;
};
enum { enum {
PROP_0, PROP_0,
@ -40,7 +44,7 @@ gtk_renderer_cell_accessible_set_property (GObject *object,
switch (prop_id) switch (prop_id)
{ {
case PROP_RENDERER: case PROP_RENDERER:
accessible->renderer = g_value_dup_object (value); accessible->priv->renderer = g_value_dup_object (value);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -59,7 +63,7 @@ gtk_renderer_cell_accessible_get_property (GObject *object,
switch (prop_id) switch (prop_id)
{ {
case PROP_RENDERER: case PROP_RENDERER:
g_value_set_object (value, accessible->renderer); g_value_set_object (value, accessible->priv->renderer);
break; break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -72,8 +76,8 @@ gtk_renderer_cell_accessible_finalize (GObject *object)
{ {
GtkRendererCellAccessible *renderer_cell = GTK_RENDERER_CELL_ACCESSIBLE (object); GtkRendererCellAccessible *renderer_cell = GTK_RENDERER_CELL_ACCESSIBLE (object);
if (renderer_cell->renderer) if (renderer_cell->priv->renderer)
g_object_unref (renderer_cell->renderer); g_object_unref (renderer_cell->priv->renderer);
G_OBJECT_CLASS (_gtk_renderer_cell_accessible_parent_class)->finalize (object); G_OBJECT_CLASS (_gtk_renderer_cell_accessible_parent_class)->finalize (object);
} }
@ -94,11 +98,16 @@ _gtk_renderer_cell_accessible_class_init (GtkRendererCellAccessibleClass *klass)
P_("The cell renderer represented by this accessible"), P_("The cell renderer represented by this accessible"),
GTK_TYPE_CELL_RENDERER, GTK_TYPE_CELL_RENDERER,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
g_type_class_add_private (klass, sizeof (GtkRendererCellAccessiblePrivate));
} }
static void static void
_gtk_renderer_cell_accessible_init (GtkRendererCellAccessible *renderer_cell) _gtk_renderer_cell_accessible_init (GtkRendererCellAccessible *renderer_cell)
{ {
renderer_cell->priv = G_TYPE_INSTANCE_GET_PRIVATE (renderer_cell,
GTK_TYPE_RENDERER_CELL_ACCESSIBLE,
GtkRendererCellAccessiblePrivate);
} }
AtkObject * AtkObject *

View File

@ -32,11 +32,13 @@ G_BEGIN_DECLS
typedef struct _GtkRendererCellAccessible GtkRendererCellAccessible; typedef struct _GtkRendererCellAccessible GtkRendererCellAccessible;
typedef struct _GtkRendererCellAccessibleClass GtkRendererCellAccessibleClass; typedef struct _GtkRendererCellAccessibleClass GtkRendererCellAccessibleClass;
typedef struct _GtkRendererCellAccessiblePrivate GtkRendererCellAccessiblePrivate;
struct _GtkRendererCellAccessible struct _GtkRendererCellAccessible
{ {
GtkCellAccessible parent; GtkCellAccessible parent;
GtkCellRenderer *renderer;
GtkRendererCellAccessiblePrivate *priv;
}; };
struct _GtkRendererCellAccessibleClass struct _GtkRendererCellAccessibleClass

View File

@ -126,10 +126,13 @@ gtk_text_cell_accessible_update_cache (GtkCellAccessible *cell)
gboolean rv = FALSE; gboolean rv = FALSE;
gint temp_length; gint temp_length;
gchar *text; gchar *text;
GtkCellRenderer *renderer;
g_object_get (G_OBJECT (GTK_RENDERER_CELL_ACCESSIBLE (cell)->renderer), g_object_get (cell, "renderer", &renderer, NULL);
g_object_get (renderer,
"text", &text, "text", &text,
NULL); NULL);
g_object_unref (renderer);
if (text_cell->cell_text) if (text_cell->cell_text)
{ {
@ -392,7 +395,7 @@ create_pango_layout (GtkTextCellAccessible *text)
GtkCellRendererText *gtk_renderer; GtkCellRendererText *gtk_renderer;
gail_renderer = GTK_RENDERER_CELL_ACCESSIBLE (text); gail_renderer = GTK_RENDERER_CELL_ACCESSIBLE (text);
gtk_renderer = GTK_CELL_RENDERER_TEXT (gail_renderer->renderer); g_object_get (gail_renderer, "renderer", &gtk_renderer, NULL);
g_object_get (gtk_renderer, g_object_get (gtk_renderer,
"text", &renderer_text, "text", &renderer_text,
@ -409,6 +412,7 @@ create_pango_layout (GtkTextCellAccessible *text)
"rise-set", &rise_set, "rise-set", &rise_set,
"rise", &rise, "rise", &rise,
NULL); NULL);
g_object_unref (gtk_renderer);
layout = gtk_widget_create_pango_layout (get_widget (text), renderer_text); layout = gtk_widget_create_pango_layout (get_widget (text), renderer_text);
@ -539,11 +543,14 @@ gtk_text_cell_accessible_get_character_extents (AtkText *text,
return; return;
} }
gail_renderer = GTK_RENDERER_CELL_ACCESSIBLE (text); gail_renderer = GTK_RENDERER_CELL_ACCESSIBLE (text);
gtk_renderer = GTK_CELL_RENDERER_TEXT (gail_renderer->renderer); g_object_get (gail_renderer, "renderer", &gtk_renderer, NULL);
g_object_get (gtk_renderer, "text", &renderer_text, NULL); g_object_get (gtk_renderer, "text", &renderer_text, NULL);
g_object_unref (gtk_renderer);
if (renderer_text == NULL) if (renderer_text == NULL)
{
g_object_unref (gtk_renderer);
return; return;
}
parent = atk_object_get_parent (ATK_OBJECT (text)); parent = atk_object_get_parent (ATK_OBJECT (text));
if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (parent)) if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (parent))
@ -569,7 +576,7 @@ gtk_text_cell_accessible_get_character_extents (AtkText *text,
index = g_utf8_offset_to_pointer (renderer_text, offset) - renderer_text; index = g_utf8_offset_to_pointer (renderer_text, offset) - renderer_text;
pango_layout_index_to_pos (layout, index, &char_rect); pango_layout_index_to_pos (layout, index, &char_rect);
gtk_cell_renderer_get_padding (gail_renderer->renderer, &xpad, &ypad); gtk_cell_renderer_get_padding (GTK_CELL_RENDERER (gtk_renderer), &xpad, &ypad);
get_origins (widget, &x_window, &y_window, &x_toplevel, &y_toplevel); get_origins (widget, &x_window, &y_window, &x_toplevel, &y_toplevel);
@ -593,6 +600,7 @@ gtk_text_cell_accessible_get_character_extents (AtkText *text,
g_free (renderer_text); g_free (renderer_text);
g_object_unref (layout); g_object_unref (layout);
g_object_unref (gtk_renderer);
} }
static gint static gint
@ -620,12 +628,13 @@ gtk_text_cell_accessible_get_offset_at_point (AtkText *text,
return -1; return -1;
gail_renderer = GTK_RENDERER_CELL_ACCESSIBLE (text); gail_renderer = GTK_RENDERER_CELL_ACCESSIBLE (text);
gtk_renderer = GTK_CELL_RENDERER_TEXT (gail_renderer->renderer); g_object_get (gail_renderer, "renderer", &gtk_renderer, NULL);
parent = atk_object_get_parent (ATK_OBJECT (text)); parent = atk_object_get_parent (ATK_OBJECT (text));
g_object_get (gtk_renderer, "text", &renderer_text, NULL); g_object_get (gtk_renderer, "text", &renderer_text, NULL);
if (text == NULL) if (text == NULL)
{ {
g_object_unref (gtk_renderer);
g_free (renderer_text); g_free (renderer_text);
return -1; return -1;
} }
@ -651,7 +660,7 @@ gtk_text_cell_accessible_get_offset_at_point (AtkText *text,
layout = create_pango_layout (GTK_TEXT_CELL_ACCESSIBLE (text)); layout = create_pango_layout (GTK_TEXT_CELL_ACCESSIBLE (text));
gtk_cell_renderer_get_padding (gail_renderer->renderer, &xpad, &ypad); gtk_cell_renderer_get_padding (GTK_CELL_RENDERER (gtk_renderer), &xpad, &ypad);
get_origins (widget, &x_window, &y_window, &x_toplevel, &y_toplevel); get_origins (widget, &x_window, &y_window, &x_toplevel, &y_toplevel);
@ -678,6 +687,8 @@ gtk_text_cell_accessible_get_offset_at_point (AtkText *text,
} }
g_object_unref (layout); g_object_unref (layout);
g_object_unref (gtk_renderer);
if (index == -1) if (index == -1)
{ {
if (coords == ATK_XY_WINDOW || coords == ATK_XY_SCREEN) if (coords == ATK_XY_WINDOW || coords == ATK_XY_SCREEN)