a11y: Make notebookpage emit child-added signal sync

Don't use an idle handler
This commit is contained in:
Benjamin Otte 2011-06-29 02:15:18 +02:00 committed by Matthias Clasen
parent f59cb0e05d
commit 5d57716ef8
3 changed files with 9 additions and 36 deletions

View File

@ -45,7 +45,8 @@ static gboolean gail_notebook_is_child_selected (AtkSelection *selection
gint i);
static void create_notebook_page_accessible (GailNotebook *gail_notebook,
GtkNotebook *notebook,
GtkWidget *child);
GtkWidget *child,
int page_num);
static gboolean gail_notebook_focus_cb (GtkWidget *widget,
GtkDirectionType type);
static gboolean gail_notebook_check_focus_tab (gpointer data);
@ -129,7 +130,7 @@ gail_notebook_page_added (GtkNotebook *gtk_notebook,
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (gtk_notebook));
notebook = GAIL_NOTEBOOK (atk_obj);
create_notebook_page_accessible (notebook, gtk_notebook, child);
create_notebook_page_accessible (notebook, gtk_notebook, child, page_num);
}
static void
@ -170,7 +171,8 @@ gail_notebook_real_initialize (AtkObject *obj,
{
create_notebook_page_accessible (notebook,
gtk_notebook,
gtk_notebook_get_nth_page (gtk_notebook, i));
gtk_notebook_get_nth_page (gtk_notebook, i),
i);
}
notebook->selected_page = gtk_notebook_get_current_page (gtk_notebook);
@ -398,7 +400,8 @@ gail_notebook_is_child_selected (AtkSelection *selection,
static void
create_notebook_page_accessible (GailNotebook *gail_notebook,
GtkNotebook *notebook,
GtkWidget *child)
GtkWidget *child,
int page_num)
{
AtkObject *obj;
@ -406,6 +409,8 @@ create_notebook_page_accessible (GailNotebook *gail_notebook,
g_hash_table_insert (gail_notebook->pages,
child,
obj);
atk_object_set_parent (obj, ATK_OBJECT (gail_notebook));
g_signal_emit_by_name (gail_notebook, "children_changed::add", page_num, obj, NULL);
}
static gboolean

View File

@ -139,33 +139,6 @@ gail_notebook_page_init (GailNotebookPage *page)
{
}
static gint
notify_child_added (gpointer data)
{
GailNotebookPage *page;
AtkObject *atk_object, *atk_parent;
g_return_val_if_fail (GAIL_IS_NOTEBOOK_PAGE (data), FALSE);
page = GAIL_NOTEBOOK_PAGE (data);
atk_object = ATK_OBJECT (data);
page->notify_child_added_id = 0;
/* The widget page->notebook may be deleted before this handler is called */
if (page->notebook != NULL)
{
atk_parent = gtk_widget_get_accessible (GTK_WIDGET (page->notebook));
atk_object_set_parent (atk_object, atk_parent);
g_signal_emit_by_name (atk_parent,
"children_changed::add",
gtk_notebook_page_num (page->notebook, page->child),
atk_object,
NULL);
}
return FALSE;
}
AtkObject*
gail_notebook_page_new (GailNotebook *notebook,
GtkWidget *child)
@ -189,7 +162,6 @@ gail_notebook_page_new (GailNotebook *notebook,
atk_object->role = ATK_ROLE_PAGE_TAB;
atk_object->layer = ATK_LAYER_WIDGET;
page->notify_child_added_id = gdk_threads_add_idle (notify_child_added, atk_object);
/*
* We get notified of changes to the label
*/
@ -292,9 +264,6 @@ gail_notebook_page_finalize (GObject *object)
if (page->textutil)
g_object_unref (page->textutil);
if (page->notify_child_added_id)
g_source_remove (page->notify_child_added_id);
G_OBJECT_CLASS (gail_notebook_page_parent_class)->finalize (object);
}

View File

@ -42,7 +42,6 @@ struct _GailNotebookPage
GtkAccessible *notebook;
GtkWidget *child;
guint notify_child_added_id;
GailTextUtil *textutil;
};