1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
--- /dev/null
+++ vcl/unx/gtk/a11y/atkfactory.cxx
@@ -0,0 +1,70 @@
+#include <plugins/gtk/atkfactory.hxx>
+#include <plugins/gtk/gtkframe.hxx>
+#include "atkwrapper.hxx"
+
+extern "C" {
+
+static GType
+wrapper_factory_get_accessible_type(void)
+{
+ return atk_object_wrapper_get_type();
+}
+
+static AtkObject*
+wrapper_factory_create_accessible( GObject *pObj )
+{
+ GtkSalFrame *pFrame;
+
+ g_message ("wrapper_factory_create_accessible...");
+
+ pFrame = GtkSalFrame::getFromWindow( GTK_WINDOW( pObj ) );
+ g_return_val_if_fail( pFrame != NULL, NULL );
+
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::accessibility::XAccessible > xAccessible;
+ xAccessible = pFrame->getAccessible( true );
+
+ return atk_wrapper_get( xAccessible );
+}
+
+static void
+wrapper_factory_class_init( AtkObjectFactoryClass *klass )
+{
+ klass->create_accessible = wrapper_factory_create_accessible;
+ klass->get_accessible_type = wrapper_factory_get_accessible_type;
+}
+
+static GType
+wrapper_factory_get_type (void)
+{
+ static GType t = 0;
+
+ if (!t) {
+ static const GTypeInfo tinfo =
+ {
+ sizeof (AtkObjectFactoryClass),
+ NULL, NULL, (GClassInitFunc) wrapper_factory_class_init,
+ NULL, NULL, sizeof (AtkObjectFactory), 0, NULL, NULL
+ };
+
+ t = g_type_register_static (
+ ATK_TYPE_OBJECT_FACTORY, "OOoAtkObjectWrapperFactory",
+ &tinfo, (GTypeFlags) 0);
+ }
+
+ return t;
+}
+
+}; // extern C
+
+void RegisterAtkFactory( GType nWindowType )
+{
+ AtkRegistry *pReg = atk_get_default_registry();
+ if( pReg )
+ {
+ g_warning( "Registering factory" );
+ atk_registry_set_factory_type
+ ( pReg, nWindowType,
+ wrapper_factory_get_type() );
+ }
+}
|