summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-10-14 15:11:17 -0400
committerMatthias Clasen <mclasen@redhat.com>2012-10-14 15:56:46 -0400
commit978f336aa469ceb64d275e0db3e2699abf638a07 (patch)
treeb4aa9e9cd53e5438b876d1ee41f023f0a29b361c
parent95f3fadcbd9cb7bbb961df3d727a116f0670005f (diff)
downloadgtk+-978f336aa469ceb64d275e0db3e2699abf638a07.tar.gz
GtkContainerAccessible: add a private struct
Move instance fields to a private struct, in preparation for installing a11y headers. This also required removing access to GtkContainerAccessible innards from the GtkMenuItemAccessible implementation.
-rw-r--r--gtk/a11y/gtkcontaineraccessible.c30
-rw-r--r--gtk/a11y/gtkcontaineraccessible.h7
-rw-r--r--gtk/a11y/gtkmenuitemaccessible.c35
3 files changed, 26 insertions, 46 deletions
diff --git a/gtk/a11y/gtkcontaineraccessible.c b/gtk/a11y/gtkcontaineraccessible.c
index 423cdf43ed..6f32898c6a 100644
--- a/gtk/a11y/gtkcontaineraccessible.c
+++ b/gtk/a11y/gtkcontaineraccessible.c
@@ -20,6 +20,10 @@
#include <gtk/gtk.h>
#include "gtkcontaineraccessible.h"
+struct _GtkContainerAccessiblePrivate
+{
+ GList *children;
+};
G_DEFINE_TYPE (GtkContainerAccessible, _gtk_container_accessible, GTK_TYPE_WIDGET_ACCESSIBLE)
@@ -34,7 +38,7 @@ gtk_container_accessible_get_n_children (AtkObject* obj)
if (widget == NULL)
return 0;
- children = gtk_container_get_children (GTK_CONTAINER(widget));
+ children = gtk_container_get_children (GTK_CONTAINER (widget));
count = g_list_length (children);
g_list_free (children);
@@ -115,9 +119,9 @@ gtk_container_accessible_real_add_gtk (GtkContainer *container,
accessible = GTK_CONTAINER_ACCESSIBLE (atk_parent);
g_object_notify (G_OBJECT (atk_child), "accessible-parent");
- g_list_free (accessible->children);
- accessible->children = gtk_container_get_children (container);
- index = g_list_index (accessible->children, widget);
+ g_list_free (accessible->priv->children);
+ accessible->priv->children = gtk_container_get_children (container);
+ index = g_list_index (accessible->priv->children, widget);
g_signal_emit_by_name (atk_parent, "children-changed::add", index, atk_child, NULL);
return 1;
@@ -140,10 +144,10 @@ gtk_container_accessible_real_remove_gtk (GtkContainer *container,
accessible = GTK_CONTAINER_ACCESSIBLE (atk_parent);
g_object_notify (G_OBJECT (atk_child), "accessible-parent");
- index = g_list_index (accessible->children, widget);
- g_list_free (accessible->children);
- accessible->children = gtk_container_get_children (container);
- if (index >= 0 && index <= g_list_length (accessible->children))
+ index = g_list_index (accessible->priv->children, widget);
+ g_list_free (accessible->priv->children);
+ accessible->priv->children = gtk_container_get_children (container);
+ if (index >= 0 && index <= g_list_length (accessible->priv->children))
g_signal_emit_by_name (atk_parent, "children-changed::remove", index, atk_child, NULL);
return 1;
@@ -157,7 +161,7 @@ gtk_container_accessible_real_initialize (AtkObject *obj,
ATK_OBJECT_CLASS (_gtk_container_accessible_parent_class)->initialize (obj, data);
- accessible->children = gtk_container_get_children (GTK_CONTAINER (data));
+ accessible->priv->children = gtk_container_get_children (GTK_CONTAINER (data));
g_signal_connect (data, "add", G_CALLBACK (gtk_container_accessible_add_gtk), obj);
g_signal_connect (data, "remove", G_CALLBACK (gtk_container_accessible_remove_gtk), obj);
@@ -170,7 +174,7 @@ gtk_container_accessible_finalize (GObject *object)
{
GtkContainerAccessible *accessible = GTK_CONTAINER_ACCESSIBLE (object);
- g_list_free (accessible->children);
+ g_list_free (accessible->priv->children);
G_OBJECT_CLASS (_gtk_container_accessible_parent_class)->finalize (object);
}
@@ -189,10 +193,14 @@ _gtk_container_accessible_class_init (GtkContainerAccessibleClass *klass)
klass->add_gtk = gtk_container_accessible_real_add_gtk;
klass->remove_gtk = gtk_container_accessible_real_remove_gtk;
+
+ g_type_class_add_private (klass, sizeof (GtkContainerAccessiblePrivate));
}
static void
_gtk_container_accessible_init (GtkContainerAccessible *container)
{
+ container->priv = G_TYPE_INSTANCE_GET_PRIVATE (container,
+ GTK_TYPE_CONTAINER_ACCESSIBLE,
+ GtkContainerAccessiblePrivate);
}
-
diff --git a/gtk/a11y/gtkcontaineraccessible.h b/gtk/a11y/gtkcontaineraccessible.h
index c401437fbe..394c9cc72c 100644
--- a/gtk/a11y/gtkcontaineraccessible.h
+++ b/gtk/a11y/gtkcontaineraccessible.h
@@ -30,14 +30,15 @@ G_BEGIN_DECLS
#define GTK_IS_CONTAINER_ACCESSIBLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CONTAINER_ACCESSIBLE))
#define GTK_CONTAINER_ACCESSIBLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CONTAINER_ACCESSIBLE, GtkContainerAccessibleClass))
-typedef struct _GtkContainerAccessible GtkContainerAccessible;
-typedef struct _GtkContainerAccessibleClass GtkContainerAccessibleClass;
+typedef struct _GtkContainerAccessible GtkContainerAccessible;
+typedef struct _GtkContainerAccessibleClass GtkContainerAccessibleClass;
+typedef struct _GtkContainerAccessiblePrivate GtkContainerAccessiblePrivate;
struct _GtkContainerAccessible
{
GtkWidgetAccessible parent;
- GList *children;
+ GtkContainerAccessiblePrivate *priv;
};
struct _GtkContainerAccessibleClass
diff --git a/gtk/a11y/gtkmenuitemaccessible.c b/gtk/a11y/gtkmenuitemaccessible.c
index 0fb4cfa303..cd53e8af83 100644
--- a/gtk/a11y/gtkmenuitemaccessible.c
+++ b/gtk/a11y/gtkmenuitemaccessible.c
@@ -811,26 +811,14 @@ menu_item_add_gtk (GtkContainer *container,
GtkWidget *widget)
{
GtkWidget *parent_widget;
- AtkObject *atk_parent;
- AtkObject *atk_child;
- GtkContainerAccessible *container_accessible;
- gint index;
g_return_val_if_fail (GTK_IS_MENU (container), 1);
parent_widget = gtk_menu_get_attach_widget (GTK_MENU (container));
if (GTK_IS_MENU_ITEM (parent_widget))
{
- atk_parent = gtk_widget_get_accessible (parent_widget);
- atk_child = gtk_widget_get_accessible (widget);
-
- g_object_notify (G_OBJECT (atk_child), "accessible-parent");
- container_accessible = GTK_CONTAINER_ACCESSIBLE (atk_parent);
- g_list_free (container_accessible->children);
- container_accessible->children = gtk_container_get_children (container);
- index = g_list_index (container_accessible->children, widget);
- g_signal_emit_by_name (atk_parent, "children-changed::add",
- index, atk_child, NULL);
+ GTK_CONTAINER_ACCESSIBLE_CLASS (_gtk_menu_item_accessible_parent_class)->add_gtk (container, widget, gtk_widget_get_accessible (parent_widget));
+
}
return 1;
}
@@ -840,30 +828,13 @@ menu_item_remove_gtk (GtkContainer *container,
GtkWidget *widget)
{
GtkWidget *parent_widget;
- AtkObject *atk_parent;
- AtkObject *atk_child;
- GtkContainerAccessible *container_accessible;
- gint index;
- gint list_length;
g_return_val_if_fail (GTK_IS_MENU (container), 1);
parent_widget = gtk_menu_get_attach_widget (GTK_MENU (container));
if (GTK_IS_MENU_ITEM (parent_widget))
{
- atk_parent = gtk_widget_get_accessible (parent_widget);
- atk_child = gtk_widget_get_accessible (widget);
-
- g_object_notify (G_OBJECT (atk_child), "accessible-parent");
-
- container_accessible = GTK_CONTAINER_ACCESSIBLE (atk_parent);
- index = g_list_index (container_accessible->children, widget);
- list_length = g_list_length (container_accessible->children);
- g_list_free (container_accessible->children);
- container_accessible->children = gtk_container_get_children (container);
- if (index >= 0 && index <= list_length)
- g_signal_emit_by_name (atk_parent, "children-changed::remove",
- index, atk_child, NULL);
+ GTK_CONTAINER_ACCESSIBLE_CLASS (_gtk_menu_item_accessible_parent_class)->remove_gtk (container, widget, gtk_widget_get_accessible (parent_widget));
}
return 1;
}