[gtk+] a11y: Use simple code for window name change tracking



commit 52c0933bc0ea39af949ce790970500cadd44aaf6
Author: Benjamin Otte <otte redhat com>
Date:   Tue Jun 28 18:31:32 2011 +0200

    a11y: Use simple code for window name change tracking
    
    Remove idle handler and omit checking if the name really was changed.
    ATs will either have to live with the name not really changoing or we
    should check in GtkWindow.

 gtk/a11y/gailwindow.c |   75 +-----------------------------------------------
 gtk/a11y/gailwindow.h |    3 --
 2 files changed, 2 insertions(+), 76 deletions(-)
---
diff --git a/gtk/a11y/gailwindow.c b/gtk/a11y/gailwindow.c
index 80d2732..70cd56c 100644
--- a/gtk/a11y/gailwindow.c
+++ b/gtk/a11y/gailwindow.c
@@ -45,7 +45,6 @@ static void                  gail_window_init            (GailWindow   *accessib
 
 static void                  gail_window_real_initialize (AtkObject    *obj,
                                                           gpointer     data);
-static void                  gail_window_finalize        (GObject      *object);
 
 static const gchar* gail_window_get_name       (AtkObject     *accessible);
 
@@ -85,11 +84,8 @@ static void
 gail_window_class_init (GailWindowClass *klass)
 {
   GailWidgetClass *widget_class;
-  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
   AtkObjectClass  *class = ATK_OBJECT_CLASS (klass);
 
-  gobject_class->finalize = gail_window_finalize;
-
   widget_class = (GailWidgetClass*)klass;
   widget_class->focus_gtk = gail_window_real_focus_gtk;
   widget_class->notify_gtk = gail_window_real_notify_gtk;
@@ -185,7 +181,6 @@ gail_window_real_initialize (AtkObject *obj,
                              gpointer  data)
 {
   GtkWidget *widget = GTK_WIDGET (data);
-  GailWindow *window;
 
   /*
    * A GailWindow can be created for a GtkHandleBox or a GtkWindow
@@ -195,10 +190,6 @@ gail_window_real_initialize (AtkObject *obj,
 
   ATK_OBJECT_CLASS (gail_window_parent_class)->initialize (obj, data);
 
-  window = GAIL_WINDOW (obj);
-  window->name_change_handler = 0;
-  window->previous_name = g_strdup (gtk_window_get_title (GTK_WINDOW (data)));
-
   g_signal_connect (data,
                     "window_state_event",
                     G_CALLBACK (gail_window_state_event_gtk),
@@ -242,25 +233,6 @@ gail_window_real_initialize (AtkObject *obj,
     atk_object_notify_state_change (obj, ATK_STATE_SHOWING, 1);
 }
 
-static void
-gail_window_finalize (GObject *object)
-{
-  GailWindow* window = GAIL_WINDOW (object);
-
-  if (window->name_change_handler)
-    {
-      g_source_remove (window->name_change_handler);
-      window->name_change_handler = 0;
-    }
-  if (window->previous_name)
-    {
-      g_free (window->previous_name);
-      window->previous_name = NULL;
-    }
-
-  G_OBJECT_CLASS (gail_window_parent_class)->finalize (object);
-}
-
 static const gchar*
 gail_window_get_name (AtkObject *accessible)
 {
@@ -449,60 +421,17 @@ gail_window_ref_state_set (AtkObject *accessible)
   return state_set;
 }
 
-static gboolean
-idle_notify_name_change (gpointer data)
-{
-  GailWindow *window;
-  AtkObject *obj;
-
-  window = GAIL_WINDOW (data);
-  window->name_change_handler = 0;
-  if (gtk_accessible_get_widget (GTK_ACCESSIBLE (window)) == NULL)
-    return FALSE;
-
-  obj = ATK_OBJECT (window);
-  if (obj->name == NULL)
-    {
-    /*
-     * The title has changed so notify a change in accessible-name
-     */
-      g_object_notify (G_OBJECT (obj), "accessible-name");
-    }
-  g_signal_emit_by_name (obj, "visible_data_changed");
-
-  return FALSE;
-}
-
 static void
 gail_window_real_notify_gtk (GObject		*obj,
                              GParamSpec		*pspec)
 {
   GtkWidget *widget = GTK_WIDGET (obj);
   AtkObject* atk_obj = gtk_widget_get_accessible (widget);
-  GailWindow *window = GAIL_WINDOW (atk_obj);
-  const gchar *name;
-  gboolean name_changed = FALSE;
 
   if (strcmp (pspec->name, "title") == 0)
     {
-      name = gtk_window_get_title (GTK_WINDOW (widget));
-      if (name)
-        {
-         if (window->previous_name == NULL ||
-             strcmp (name, window->previous_name) != 0)
-           name_changed = TRUE;
-        }
-      else if (window->previous_name != NULL)
-        name_changed = TRUE;
-
-      if (name_changed)
-        {
-          g_free (window->previous_name);
-          window->previous_name = g_strdup (name);
-       
-          if (window->name_change_handler == 0)
-            window->name_change_handler = gdk_threads_add_idle (idle_notify_name_change, atk_obj);
-        }
+      g_object_notify (G_OBJECT (atk_obj), "accessible-name");
+      g_signal_emit_by_name (atk_obj, "visible_data_changed");
     }
   else
     GAIL_WIDGET_CLASS (gail_window_parent_class)->notify_gtk (obj, pspec);
diff --git a/gtk/a11y/gailwindow.h b/gtk/a11y/gailwindow.h
index 7462551..10bf5a7 100644
--- a/gtk/a11y/gailwindow.h
+++ b/gtk/a11y/gailwindow.h
@@ -37,9 +37,6 @@ typedef struct _GailWindowClass              GailWindowClass;
 struct _GailWindow
 {
   GailContainer parent;
-
-  guint name_change_handler;
-  gchar *previous_name;
 };
 
 GType gail_window_get_type (void);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]