[gtk+] a11y: Use simple code for window name change tracking
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] a11y: Use simple code for window name change tracking
- Date: Tue, 5 Jul 2011 20:33:42 +0000 (UTC)
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]