Chromium Code Reviews| Index: ui/gfx/gtk_preserve_window.cc |
| =================================================================== |
| --- ui/gfx/gtk_preserve_window.cc (revision 134706) |
| +++ 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), |
| + void* 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); |
|
Evan Stade
2012/05/02 00:03:30
-> previous line
|
| + } |
| +} |
| + |
| G_END_DECLS |