Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(210)

Unified Diff: ui/gfx/gtk_preserve_window.cc

Issue 10382051: Add initial GTK web accessibility framework (third attempt). (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/gtk_preserve_window.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/gtk_preserve_window.cc
===================================================================
--- ui/gfx/gtk_preserve_window.cc (revision 135807)
+++ ui/gfx/gtk_preserve_window.cc (working copy)
@@ -24,6 +24,10 @@
// Whether or not we delegate the resize of the GdkWindow
// to someone else.
gboolean delegate_resize;
+
+ // Accessible factory and userdata.
+ AtkObject* (*accessible_factory)(void* userdata);
+ void* accessible_factory_userdata;
};
G_DEFINE_TYPE(GtkPreserveWindow, gtk_preserve_window, GTK_TYPE_FIXED)
@@ -33,12 +37,14 @@
static void gtk_preserve_window_unrealize(GtkWidget* widget);
static void gtk_preserve_window_size_allocate(GtkWidget* widget,
GtkAllocation* allocation);
+static AtkObject* gtk_preserve_window_get_accessible(GtkWidget* widget);
static void gtk_preserve_window_class_init(GtkPreserveWindowClass *klass) {
GtkWidgetClass* widget_class = reinterpret_cast<GtkWidgetClass*>(klass);
widget_class->realize = gtk_preserve_window_realize;
widget_class->unrealize = gtk_preserve_window_unrealize;
widget_class->size_allocate = gtk_preserve_window_size_allocate;
+ widget_class->get_accessible = gtk_preserve_window_get_accessible;
GtkObjectClass* object_class = reinterpret_cast<GtkObjectClass*>(klass);
object_class->destroy = gtk_preserve_window_destroy;
@@ -50,6 +56,8 @@
static void gtk_preserve_window_init(GtkPreserveWindow* widget) {
GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget);
priv->preserve_window = FALSE;
+ priv->accessible_factory = NULL;
+ priv->accessible_factory_userdata = NULL;
// These widgets always have their own window.
gtk_widget_set_has_window(GTK_WIDGET(widget), TRUE);
@@ -234,4 +242,23 @@
priv->delegate_resize = delegate;
}
+void gtk_preserve_window_set_accessible_factory(
+ GtkPreserveWindow* widget,
+ AtkObject* (*factory)(void* userdata),
+ gpointer userdata) {
+ GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget);
+ priv->accessible_factory = factory;
+ priv->accessible_factory_userdata = userdata;
+}
+
+AtkObject* gtk_preserve_window_get_accessible(GtkWidget* widget) {
+ GtkPreserveWindowPrivate* priv = GTK_PRESERVE_WINDOW_GET_PRIVATE(widget);
+ if (priv->accessible_factory) {
+ return priv->accessible_factory(priv->accessible_factory_userdata);
+ } else {
+ return GTK_WIDGET_CLASS(gtk_preserve_window_parent_class)
+ ->get_accessible(widget);
+ }
+}
+
G_END_DECLS
« no previous file with comments | « ui/gfx/gtk_preserve_window.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698