[Libreoffice-commits] core.git: 2 commits - vcl/inc vcl/unx

Caolán McNamara caolanm at redhat.com
Fri Jun 26 05:52:48 PDT 2015


 vcl/inc/unx/gtk/gtkframe.hxx       |    1 +
 vcl/unx/gtk/a11y/atkbridge.cxx     |    5 +++--
 vcl/unx/gtk/a11y/atkfactory.cxx    |    5 +++++
 vcl/unx/gtk/a11y/atkutil.cxx       |   12 ++++++++++--
 vcl/unx/gtk/a11y/atkutil.hxx       |    1 +
 vcl/unx/gtk/window/gtksalframe.cxx |   15 +++++++++++++++
 6 files changed, 35 insertions(+), 4 deletions(-)

New commits:
commit aff0d4b29681ee8008ff438885c8cc2b461f4dd5
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jun 26 13:50:28 2015 +0100

    Related: tdf#92293 gtk3 a11y: I suspect that all of this is redundant
    
    in favor of hooking in via get_accessible
    
    Change-Id: I8c265e0d9a5f8bdf02b7ba4be71fc58194cf5aa4

diff --git a/vcl/unx/gtk/a11y/atkbridge.cxx b/vcl/unx/gtk/a11y/atkbridge.cxx
index 4bfe5b2..42cd704 100644
--- a/vcl/unx/gtk/a11y/atkbridge.cxx
+++ b/vcl/unx/gtk/a11y/atkbridge.cxx
@@ -26,6 +26,9 @@
 
 bool InitAtkBridge()
 {
+#if GTK_CHECK_VERSION(3,0,0)
+    ooo_atk_util_ensure_event_listener();
+#else
     const char* pVersion = atk_get_toolkit_version();
     if( ! pVersion )
         return false;
@@ -55,13 +58,15 @@ bool InitAtkBridge()
     AtkRegistry * registry = atk_get_default_registry();
     if( registry )
         atk_registry_set_factory_type( registry, OOO_TYPE_FIXED, OOO_TYPE_WRAPPER_FACTORY );
-
+#endif
     return true;
 }
 
 void DeInitAtkBridge()
 {
+#if !GTK_CHECK_VERSION(3,0,0)
     restore_gail_window_vtable();
+#endif
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk/a11y/atkutil.cxx b/vcl/unx/gtk/a11y/atkutil.cxx
index cc2fe84..2ad3124 100644
--- a/vcl/unx/gtk/a11y/atkutil.cxx
+++ b/vcl/unx/gtk/a11y/atkutil.cxx
@@ -714,12 +714,20 @@ ooo_atk_util_class_init (AtkUtilClass *)
     atk_class->get_toolkit_name = ooo_atk_util_get_toolkit_name;
     atk_class->get_toolkit_version = ooo_atk_util_get_toolkit_version;
 
-    Application::AddEventListener( g_aEventListenerLink );
+    ooo_atk_util_ensure_event_listener();
 }
 
 } // extern "C"
 
-/*****************************************************************************/
+void ooo_atk_util_ensure_event_listener()
+{
+    static bool bInited;
+    if (!bInited)
+    {
+        Application::AddEventListener( g_aEventListenerLink );
+        bInited = true;
+    }
+}
 
 GType
 ooo_atk_util_get_type()
diff --git a/vcl/unx/gtk/a11y/atkutil.hxx b/vcl/unx/gtk/a11y/atkutil.hxx
index 89cb61a..9524188 100644
--- a/vcl/unx/gtk/a11y/atkutil.hxx
+++ b/vcl/unx/gtk/a11y/atkutil.hxx
@@ -25,6 +25,7 @@
 #define OOO_TYPE_ATK_UTIL ooo_atk_util_get_type()
 
 GType ooo_atk_util_get_type();
+void ooo_atk_util_ensure_event_listener();
 
 #endif
 
commit 093d7b8142d0cb224fcf23506f3b36f7a3a10d2c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jun 26 13:24:19 2015 +0100

    Resolves: tdf#92293 gtk3: get a11y working
    
    Change-Id: I89cfde9b4c97852d36817b716ac08bd32096915b

diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index f759bf6..5086d14 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -471,6 +471,7 @@ public:
 extern "C" {
 
 GType ooo_fixed_get_type();
+AtkObject* ooo_fixed_get_accessible(GtkWidget *obj);
 
 } // extern "C"
 
diff --git a/vcl/unx/gtk/a11y/atkbridge.cxx b/vcl/unx/gtk/a11y/atkbridge.cxx
index 9f14e08..4bfe5b2 100644
--- a/vcl/unx/gtk/a11y/atkbridge.cxx
+++ b/vcl/unx/gtk/a11y/atkbridge.cxx
@@ -26,7 +26,6 @@
 
 bool InitAtkBridge()
 {
-#if !GTK_CHECK_VERSION(3,0,0)
     const char* pVersion = atk_get_toolkit_version();
     if( ! pVersion )
         return false;
@@ -56,16 +55,13 @@ bool InitAtkBridge()
     AtkRegistry * registry = atk_get_default_registry();
     if( registry )
         atk_registry_set_factory_type( registry, OOO_TYPE_FIXED, OOO_TYPE_WRAPPER_FACTORY );
-#endif
 
     return true;
 }
 
 void DeInitAtkBridge()
 {
-#if !GTK_CHECK_VERSION(3,0,0)
     restore_gail_window_vtable();
-#endif
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk/a11y/atkfactory.cxx b/vcl/unx/gtk/a11y/atkfactory.cxx
index 581f4d0..b6beda5 100644
--- a/vcl/unx/gtk/a11y/atkfactory.cxx
+++ b/vcl/unx/gtk/a11y/atkfactory.cxx
@@ -140,6 +140,11 @@ wrapper_factory_create_accessible( GObject *obj )
     return NULL;
 }
 
+AtkObject* ooo_fixed_get_accessible(GtkWidget *obj)
+{
+    return wrapper_factory_create_accessible(G_OBJECT(obj));
+}
+
 static void
 wrapper_factory_class_init( AtkObjectFactoryClass *klass )
 {
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
index 94bdbce..d9d57af 100644
--- a/vcl/unx/gtk/window/gtksalframe.cxx
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
@@ -970,6 +970,17 @@ void GtkSalFrame::resizeWindow( long nWidth, long nHeight )
         window_resize(nWidth, nHeight);
 }
 
+#if GTK_CHECK_VERSION(3,2,0)
+
+static void
+ooo_fixed_class_init(GtkFixedClass *klass)
+{
+    GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+    widget_class->get_accessible = ooo_fixed_get_accessible;
+}
+
+#endif
+
 /*
  * Always use a sub-class of GtkFixed we can tag for a11y. This allows us to
  * utilize GAIL for the toplevel window and toolkit implementation incl.
@@ -987,7 +998,11 @@ ooo_fixed_get_type()
             sizeof (GtkFixedClass),
             nullptr,      /* base init */
             nullptr,  /* base finalize */
+#if GTK_CHECK_VERSION(3,2,0)
+            reinterpret_cast<GClassInitFunc>(ooo_fixed_class_init), /* class init */
+#else
             nullptr,     /* class init */
+#endif
             nullptr, /* class finalize */
             NULL,                      /* class data */
             sizeof (GtkFixed),         /* instance size */


More information about the Libreoffice-commits mailing list