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:
@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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 *
|
||||||
|
|||||||
@ -30,13 +30,15 @@ G_BEGIN_DECLS
|
|||||||
#define GTK_IS_RENDERER_CELL_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_RENDERER_CELL_ACCESSIBLE))
|
#define GTK_IS_RENDERER_CELL_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_RENDERER_CELL_ACCESSIBLE))
|
||||||
#define GTK_RENDERER_CELL_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_RENDERER_CELL_ACCESSIBLE, GtkRendererCellAccessibleClass))
|
#define GTK_RENDERER_CELL_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_RENDERER_CELL_ACCESSIBLE, GtkRendererCellAccessibleClass))
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@ -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", >k_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", >k_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)
|
||||||
return;
|
{
|
||||||
|
g_object_unref (gtk_renderer);
|
||||||
|
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", >k_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)
|
||||||
|
|||||||
Reference in New Issue
Block a user