[java-atk-wrapper] Delegate getAccessibleChild call to EDT



commit ceccf44df1214d43a87158f3c8cf00b27e371dc5
Author: Giuseppe <giuseppecapaldo93 gmail com>
Date:   Tue Jun 18 00:24:45 2019 +0200

    Delegate getAccessibleChild call to EDT

 jni/src/jawobject.c                            | 21 +++------------------
 wrapper/org/GNOME/Accessibility/AtkObject.java | 10 ++++++++++
 2 files changed, 13 insertions(+), 18 deletions(-)
---
diff --git a/jni/src/jawobject.c b/jni/src/jawobject.c
index 9832d47..79941e3 100644
--- a/jni/src/jawobject.c
+++ b/jni/src/jawobject.c
@@ -607,25 +607,10 @@ jaw_object_ref_child(AtkObject *atk_obj, gint i)
     return NULL;
   }
 
-  jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
-                                                       "javax/accessibility/AccessibleContext" );
-  jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
-                                          classAccessibleContext,
-                                          "getAccessibleChild",
-                                          "(I)Ljavax/accessibility/Accessible;" );
-  jobject jchild = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid, i );
+  jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
+  jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "getAccessibleChild", 
"(Ljavax/accessibility/AccessibleContext;I)Ljavax/accessibility/AccessibleContext;" );
+  jobject child_ac = (*jniEnv)->CallStaticObjectMethod (jniEnv, atkObject, jmid, ac, i);
   (*jniEnv)->DeleteGlobalRef(jniEnv, ac);
-  if (jchild == NULL)
-  {
-    return NULL;
-  }
-
-  jclass classAccessible = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/Accessible" );
-  jmid = (*jniEnv)->GetMethodID(jniEnv,
-                                classAccessible,
-                                "getAccessibleContext",
-                                "()Ljavax/accessibility/AccessibleContext;" );
-  jobject child_ac = (*jniEnv)->CallObjectMethod( jniEnv, jchild, jmid );
 
   AtkObject *obj = (AtkObject*) jaw_impl_get_instance_from_jaw( jniEnv, child_ac );
   if (G_OBJECT(obj) != NULL)
diff --git a/wrapper/org/GNOME/Accessibility/AtkObject.java b/wrapper/org/GNOME/Accessibility/AtkObject.java
index c3ea695..4da2da6 100644
--- a/wrapper/org/GNOME/Accessibility/AtkObject.java
+++ b/wrapper/org/GNOME/Accessibility/AtkObject.java
@@ -94,6 +94,16 @@ public class AtkObject{
         return AtkUtil.invokeInSwing( () -> { return ac.getLocale(); }, null);
     }
 
+    public static AccessibleContext getAccessibleChild(AccessibleContext ac, int i){
+        return AtkUtil.invokeInSwing( () -> {
+            Accessible child = ac.getAccessibleChild(i);
+            if (child == null)
+                return null;
+            else
+                return child.getAccessibleContext();
+        }, null);
+    }
+
     public static int hashCode(AccessibleContext ac){
         return AtkUtil.invokeInSwing( () -> { return ac.hashCode(); }, 0);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]