]> Pileus Git - ~andy/gtk/blobdiff - gtk/a11y/gtkwindowaccessible.c
Change FSF Address
[~andy/gtk] / gtk / a11y / gtkwindowaccessible.c
index d166e2325b24ef76a6c6f8535a1653d31af5f8da..db857b978d26f026bf0de60fa39542c6d0a1e2ee 100644 (file)
@@ -1,4 +1,5 @@
 /* GAIL - The GNOME Accessibility Implementation Library
+ * Copyright 2011, F123 Consulting & Mais Diferenças
  * 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/gtk.h>
 
 #include "gtkwindowaccessible.h"
-#include "gailtoplevel.h"
-
-enum {
-  ACTIVATE,
-  CREATE,
-  DEACTIVATE,
-  DESTROY,
-  MAXIMIZE,
-  MINIMIZE,
-  MOVE,
-  RESIZE,
-  RESTORE,
-  LAST_SIGNAL
-};
-
+#include "gtktoplevelaccessible.h"
 
 /* atkcomponent.h */
 
@@ -52,24 +35,23 @@ static void                  gtk_window_accessible_get_size         (AtkComponen
                                                            gint                 *width,
                                                            gint                 *height);
 
-static guint gtk_window_accessible_signals [LAST_SIGNAL] = { 0, };
-
 static void atk_component_interface_init (AtkComponentIface *iface);
+static void atk_window_interface_init (AtkWindowIface *iface);
 
-G_DEFINE_TYPE_WITH_CODE (GtkWindowAccessible, gtk_window_accessible, GTK_TYPE_CONTAINER_ACCESSIBLE,
-                         G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init))
+G_DEFINE_TYPE_WITH_CODE (GtkWindowAccessible,
+                         _gtk_window_accessible,
+                         GTK_TYPE_CONTAINER_ACCESSIBLE,
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT,
+                                                atk_component_interface_init)
+                         G_IMPLEMENT_INTERFACE (ATK_TYPE_WINDOW,
+                                                atk_window_interface_init));
 
 
-static gboolean
-gtk_window_accessible_focus_gtk (GtkWidget     *widget,
-                                 GdkEventFocus *event)
+static void
+gtk_window_accessible_focus_event (AtkObject *obj,
+                                   gboolean   focus_in)
 {
-  AtkObject* obj;
-
-  obj = gtk_widget_get_accessible (widget);
-  atk_object_notify_state_change (obj, ATK_STATE_ACTIVE, event->in);
-
-  return FALSE;
+  atk_object_notify_state_change (obj, ATK_STATE_ACTIVE, focus_in);
 }
 
 static void
@@ -79,13 +61,13 @@ gtk_window_accessible_notify_gtk (GObject    *obj,
   GtkWidget *widget = GTK_WIDGET (obj);
   AtkObject* atk_obj = gtk_widget_get_accessible (widget);
 
-  if (strcmp (pspec->name, "title") == 0)
+  if (g_strcmp0 (pspec->name, "title") == 0)
     {
       g_object_notify (G_OBJECT (atk_obj), "accessible-name");
-      g_signal_emit_by_name (atk_obj, "visible_data_changed");
+      g_signal_emit_by_name (atk_obj, "visible-data-changed");
     }
   else
-    GTK_WIDGET_ACCESSIBLE_CLASS (gtk_window_accessible_parent_class)->notify_gtk (obj, pspec);
+    GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_window_accessible_parent_class)->notify_gtk (obj, pspec);
 }
 
 static gboolean
@@ -106,43 +88,21 @@ gtk_window_accessible_initialize (AtkObject *obj,
                                   gpointer   data)
 {
   GtkWidget *widget = GTK_WIDGET (data);
+  const gchar *name;
 
-  /* A GtkWindowAccessible can be created for a GtkHandleBox or a GtkWindow */
-  if (!GTK_IS_WINDOW (widget) && !GTK_IS_HANDLE_BOX (widget))
-    return;
+  ATK_OBJECT_CLASS (_gtk_window_accessible_parent_class)->initialize (obj, data);
 
-  ATK_OBJECT_CLASS (gtk_window_accessible_parent_class)->initialize (obj, data);
-
-  g_signal_connect (data, "window_state_event", G_CALLBACK (window_state_event_cb), NULL);
-  gtk_widget_accessible_set_layer (GTK_WIDGET_ACCESSIBLE (obj), ATK_LAYER_WINDOW);
-
-  if (GTK_IS_FILE_CHOOSER_DIALOG (widget))
-    obj->role = ATK_ROLE_FILE_CHOOSER;
-  else if (GTK_IS_COLOR_SELECTION_DIALOG (widget))
-    obj->role = ATK_ROLE_COLOR_CHOOSER;
-  else if (GTK_IS_FONT_SELECTION_DIALOG (widget))
-    obj->role = ATK_ROLE_FONT_CHOOSER;
-  else if (GTK_IS_MESSAGE_DIALOG (widget))
-    obj->role = ATK_ROLE_ALERT;
-  else if (GTK_IS_DIALOG (widget))
-    obj->role = ATK_ROLE_DIALOG;
+  g_signal_connect (data, "window-state-event", G_CALLBACK (window_state_event_cb), NULL);
+  GTK_WIDGET_ACCESSIBLE (obj)->layer = ATK_LAYER_WINDOW;
+
+  name = gtk_widget_get_name (widget);
+
+  if (!g_strcmp0 (name, "gtk-tooltip"))
+    obj->role = ATK_ROLE_TOOL_TIP;
+  else if (gtk_window_get_window_type (GTK_WINDOW (widget)) == GTK_WINDOW_POPUP)
+    obj->role = ATK_ROLE_WINDOW;
   else
-    {
-      const gchar *name;
-
-      name = gtk_widget_get_name (widget);
-
-      if (!g_strcmp0 (name, "gtk-tooltip"))
-        obj->role = ATK_ROLE_TOOL_TIP;
-#ifdef  GDK_WINDOWING_X11
-      else if (GTK_IS_PLUG (widget))
-        obj->role = ATK_ROLE_PANEL;
-#endif
-      else if (gtk_window_get_window_type (GTK_WINDOW (widget)) == GTK_WINDOW_POPUP)
-        obj->role = ATK_ROLE_WINDOW;
-      else
-        obj->role = ATK_ROLE_FRAME;
-    }
+    obj->role = ATK_ROLE_FRAME;
 
   /* Notify that tooltip is showing */
   if (obj->role == ATK_ROLE_TOOL_TIP && gtk_widget_get_mapped (widget))
@@ -186,7 +146,7 @@ gtk_window_accessible_get_name (AtkObject *accessible)
   if (widget == NULL)
     return NULL;
 
-  name = ATK_OBJECT_CLASS (gtk_window_accessible_parent_class)->get_name (accessible);
+  name = ATK_OBJECT_CLASS (_gtk_window_accessible_parent_class)->get_name (accessible);
   if (name != NULL)
     return name;
 
@@ -218,7 +178,7 @@ gtk_window_accessible_get_index_in_parent (AtkObject *accessible)
   if (widget == NULL)
     return -1;
 
-  index = ATK_OBJECT_CLASS (gtk_window_accessible_parent_class)->get_index_in_parent (accessible);
+  index = ATK_OBJECT_CLASS (_gtk_window_accessible_parent_class)->get_index_in_parent (accessible);
   if (index != -1)
     return index;
 
@@ -227,9 +187,9 @@ gtk_window_accessible_get_index_in_parent (AtkObject *accessible)
   if (GTK_IS_WINDOW (widget))
     {
       GtkWindow *window = GTK_WINDOW (widget);
-      if (GAIL_IS_TOPLEVEL (atk_obj))
+      if (GTK_IS_TOPLEVEL_ACCESSIBLE (atk_obj))
         {
-          GailToplevel* toplevel = GAIL_TOPLEVEL (atk_obj);
+          GtkToplevelAccessible *toplevel = GTK_TOPLEVEL_ACCESSIBLE (atk_obj);
           index = g_list_index (toplevel->window_list, window);
         }
       else
@@ -262,7 +222,7 @@ gtk_window_accessible_ref_relation_set (AtkObject *obj)
   if (widget == NULL)
     return NULL;
 
-  relation_set = ATK_OBJECT_CLASS (gtk_window_accessible_parent_class)->ref_relation_set (obj);
+  relation_set = ATK_OBJECT_CLASS (_gtk_window_accessible_parent_class)->ref_relation_set (obj);
 
   if (atk_object_get_role (obj) == ATK_ROLE_TOOL_TIP)
     {
@@ -294,7 +254,7 @@ gtk_window_accessible_ref_state_set (AtkObject *accessible)
   if (widget == NULL)
     return NULL;
 
-  state_set = ATK_OBJECT_CLASS (gtk_window_accessible_parent_class)->ref_state_set (accessible);
+  state_set = ATK_OBJECT_CLASS (_gtk_window_accessible_parent_class)->ref_state_set (accessible);
 
   window = GTK_WINDOW (widget);
 
@@ -318,12 +278,11 @@ gtk_window_accessible_ref_state_set (AtkObject *accessible)
 }
 
 static void
-gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
+_gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
 {
   GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass*)klass;
   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
 
-  widget_class->focus_gtk = gtk_window_accessible_focus_gtk;
   widget_class->notify_gtk = gtk_window_accessible_notify_gtk;
 
   class->get_name = gtk_window_accessible_get_name;
@@ -331,83 +290,11 @@ gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
   class->ref_relation_set = gtk_window_accessible_ref_relation_set;
   class->ref_state_set = gtk_window_accessible_ref_state_set;
   class->initialize = gtk_window_accessible_initialize;
-
-  gtk_window_accessible_signals [ACTIVATE] =
-    g_signal_new ("activate",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [CREATE] =
-    g_signal_new ("create",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [DEACTIVATE] =
-    g_signal_new ("deactivate",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [DESTROY] =
-    g_signal_new ("destroy",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [MAXIMIZE] =
-    g_signal_new ("maximize",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [MINIMIZE] =
-    g_signal_new ("minimize",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [MOVE] =
-    g_signal_new ("move",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [RESIZE] =
-    g_signal_new ("resize",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
-  gtk_window_accessible_signals [RESTORE] =
-    g_signal_new ("restore",
-                  G_TYPE_FROM_CLASS (klass),
-                  G_SIGNAL_RUN_LAST,
-                  0,
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
+  class->focus_event = gtk_window_accessible_focus_event;
 }
 
 static void
-gtk_window_accessible_init (GtkWindowAccessible *accessible)
+_gtk_window_accessible_init (GtkWindowAccessible *accessible)
 {
 }
 
@@ -491,3 +378,9 @@ atk_component_interface_init (AtkComponentIface *iface)
   iface->get_extents = gtk_window_accessible_get_extents;
   iface->get_size = gtk_window_accessible_get_size;
 }
+
+static void
+atk_window_interface_init (AtkWindowIface *iface)
+{
+  /* At this moment AtkWindow is just about signals */
+}