]> Pileus Git - ~andy/gtk/blobdiff - gtk/a11y/gtkcontaineraccessible.c
filechooser: Show FUSE mounted locations in shortcuts
[~andy/gtk] / gtk / a11y / gtkcontaineraccessible.c
index ad475a4187a1f46c36e44c88bc101bda34e248b6..ccf075c17b5ed4d984f2e426ddb35d495e1b05a3 100644 (file)
@@ -1,4 +1,4 @@
-/* GAIL - The GNOME Accessibility Implementation Library
+/* GTK+ - accessibility implementations
  * Copyright 2001, 2002, 2003 Sun Microsystems Inc.
  *
  * This library is free software; you can redistribute it and/or
@@ -12,9 +12,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
 #include <gtk/gtk.h>
 #include "gtkcontaineraccessible.h"
 
-
-G_DEFINE_TYPE (GtkContainerAccessible, gtk_container_accessible, GAIL_TYPE_WIDGET)
-
-static void
-gtk_container_accessible_init (GtkContainerAccessible *container)
+struct _GtkContainerAccessiblePrivate
 {
-}
+  GList *children;
+};
+
+G_DEFINE_TYPE (GtkContainerAccessible, gtk_container_accessible, GTK_TYPE_WIDGET_ACCESSIBLE)
 
 static gint
 gtk_container_accessible_get_n_children (AtkObject* obj)
@@ -41,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);
 
@@ -121,11 +118,11 @@ gtk_container_accessible_real_add_gtk (GtkContainer *container,
   atk_child = gtk_widget_get_accessible (widget);
   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_signal_emit_by_name (atk_parent, "children_changed::add", index, atk_child, NULL);
+  g_object_notify (G_OBJECT (atk_child), "accessible-parent");
+  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;
 }
@@ -142,14 +139,16 @@ gtk_container_accessible_real_remove_gtk (GtkContainer *container,
 
   atk_parent = ATK_OBJECT (data);
   atk_child = gtk_widget_get_accessible (widget);
+  if (atk_child == NULL)
+    return 1;
   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))
-    g_signal_emit_by_name (atk_parent, "children_changed::remove", index, atk_child, NULL);
+  g_object_notify (G_OBJECT (atk_child), "accessible-parent");
+  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;
 }
@@ -162,17 +161,12 @@ 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);
 
-  if (GTK_IS_TOOLBAR (data))
-    obj->role = ATK_ROLE_TOOL_BAR;
-  else if (GTK_IS_VIEWPORT (data))
-    obj->role = ATK_ROLE_VIEWPORT;
-  else
-    obj->role = ATK_ROLE_PANEL;
+  obj->role = ATK_ROLE_PANEL;
 }
 
 static void
@@ -180,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);
 }
@@ -199,4 +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);
 }