-/* 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
* 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 <string.h>
#include <gtk/gtkx.h>
+#include <gtk/gtkeventbox.h>
+#include <gtk/gtkscrolledwindow.h>
+#include <gtk/gtkframe.h>
+#include <gtk/gtkmenu.h>
+#include <gtk/gtkmenuitem.h>
+#include <gtk/gtkbutton.h>
#include "gtktoplevelaccessible.h"
+struct _GtkToplevelAccessiblePrivate
+{
+ GList *window_list;
+};
-G_DEFINE_TYPE (GtkToplevelAccessible, _gtk_toplevel_accessible, ATK_TYPE_OBJECT)
+G_DEFINE_TYPE (GtkToplevelAccessible, gtk_toplevel_accessible, ATK_TYPE_OBJECT)
static void
gtk_toplevel_accessible_initialize (AtkObject *accessible,
gpointer data)
{
- ATK_OBJECT_CLASS (_gtk_toplevel_accessible_parent_class)->initialize (accessible, data);
+ ATK_OBJECT_CLASS (gtk_toplevel_accessible_parent_class)->initialize (accessible, data);
accessible->role = ATK_ROLE_APPLICATION;
- accessible->name = g_get_prgname ();
accessible->accessible_parent = NULL;
}
{
GtkToplevelAccessible *toplevel = GTK_TOPLEVEL_ACCESSIBLE (obj);
- if (toplevel->window_list)
- g_list_free (toplevel->window_list);
+ if (toplevel->priv->window_list)
+ g_list_free (toplevel->priv->window_list);
- G_OBJECT_CLASS (_gtk_toplevel_accessible_parent_class)->finalize (obj);
+ G_OBJECT_CLASS (gtk_toplevel_accessible_parent_class)->finalize (obj);
}
static gint
{
GtkToplevelAccessible *toplevel = GTK_TOPLEVEL_ACCESSIBLE (obj);
- return g_list_length (toplevel->window_list);
+ return g_list_length (toplevel->priv->window_list);
}
static AtkObject *
AtkObject *atk_obj;
toplevel = GTK_TOPLEVEL_ACCESSIBLE (obj);
- widget = g_list_nth_data (toplevel->window_list, i);
+ widget = g_list_nth_data (toplevel->priv->window_list, i);
if (!widget)
return NULL;
return atk_obj;
}
+static const char *
+gtk_toplevel_accessible_get_name (AtkObject *obj)
+{
+ return g_get_prgname ();
+}
+
static gboolean
is_combo_window (GtkWidget *widget)
{
}
static void
-_gtk_toplevel_accessible_class_init (GtkToplevelAccessibleClass *klass)
+gtk_toplevel_accessible_class_init (GtkToplevelAccessibleClass *klass)
{
AtkObjectClass *class = ATK_OBJECT_CLASS(klass);
GObjectClass *g_object_class = G_OBJECT_CLASS(klass);
class->get_n_children = gtk_toplevel_accessible_get_n_children;
class->ref_child = gtk_toplevel_accessible_ref_child;
class->get_parent = NULL;
+ class->get_name = gtk_toplevel_accessible_get_name;
g_object_class->finalize = gtk_toplevel_accessible_object_finalize;
+
+ g_type_class_add_private (klass, sizeof (GtkToplevelAccessiblePrivate));
}
static void
guint window_count = 0;
AtkObject *child;
- if (toplevel->window_list)
+ if (toplevel->priv->window_list)
{
GtkWindow *tmp_window;
- for (l = toplevel->window_list; l; l = l->next)
+ for (l = toplevel->priv->window_list; l; l = l->next)
{
tmp_window = GTK_WINDOW (l->data);
if (window == tmp_window)
{
/* Remove the window from the window_list & emit the signal */
- toplevel->window_list = g_list_delete_link (toplevel->window_list, l);
+ toplevel->priv->window_list = g_list_delete_link (toplevel->priv->window_list, l);
child = gtk_widget_get_accessible (GTK_WIDGET (window));
g_signal_emit_by_name (atk_obj, "children-changed::remove",
window_count, child, NULL);
return TRUE;
/* Add the window to the list & emit the signal */
- toplevel->window_list = g_list_append (toplevel->window_list, widget);
- n_children = g_list_length (toplevel->window_list);
+ toplevel->priv->window_list = g_list_append (toplevel->priv->window_list, widget);
+ n_children = g_list_length (toplevel->priv->window_list);
atk_object_set_parent (child, atk_obj);
g_signal_emit_by_name (atk_obj, "children-changed::add",
}
static void
-_gtk_toplevel_accessible_init (GtkToplevelAccessible *toplevel)
+gtk_toplevel_accessible_init (GtkToplevelAccessible *toplevel)
{
GtkWindow *window;
GtkWidget *widget;
GList *l;
guint signal_id;
- l = toplevel->window_list = gtk_window_list_toplevels ();
+ toplevel->priv = G_TYPE_INSTANCE_GET_PRIVATE (toplevel,
+ GTK_TYPE_TOPLEVEL_ACCESSIBLE,
+ GtkToplevelAccessiblePrivate);
+
+ l = toplevel->priv->window_list = gtk_window_list_toplevels ();
while (l)
{
{
GList *temp_l = l->next;
- toplevel->window_list = g_list_delete_link (toplevel->window_list, l);
+ toplevel->priv->window_list = g_list_delete_link (toplevel->priv->window_list, l);
l = temp_l;
}
else
g_signal_add_emission_hook (signal_id, 0,
hide_event_watcher, toplevel, (GDestroyNotify) NULL);
}
+
+GList *
+gtk_toplevel_accessible_get_children (GtkToplevelAccessible *accessible)
+{
+ return accessible->priv->window_list;
+}