[java-atk-wrapper] Delegate setAccessibleParent call to EDT
- From: Samuel Thibault <sthibaul src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper] Delegate setAccessibleParent call to EDT
- Date: Wed, 19 Jun 2019 23:06:01 +0000 (UTC)
commit 44acff98e4cf399527beacd2ed3adc8f96a39197
Author: Giuseppe <giuseppecapaldo93 gmail com>
Date: Thu Jun 20 00:16:55 2019 +0200
Delegate setAccessibleParent call to EDT
jni/src/jawobject.c | 30 +++++++++-----------------
wrapper/org/GNOME/Accessibility/AtkObject.java | 9 ++++++--
2 files changed, 17 insertions(+), 22 deletions(-)
---
diff --git a/jni/src/jawobject.c b/jni/src/jawobject.c
index 53ef5ce..cfa93f2 100644
--- a/jni/src/jawobject.c
+++ b/jni/src/jawobject.c
@@ -234,28 +234,18 @@ jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent)
if (!ac) {
return;
}
-
- jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/AccessibleContext" );
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "setAccessibleParent",
- "(Ljavax/accessibility/AccessibleContext;)");
- jobject jparent = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
- (*jniEnv)->DeleteGlobalRef(jniEnv, ac);
- if (jparent != NULL )
- {
- jclass classAccessible = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/Accessible" );
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessible,
- "getAccessibleContext",
- "()Ljavax/accessibility/AccessibleContext;");
- jobject parent_ac = (*jniEnv)->CallObjectMethod(jniEnv, jparent, jmid);
- AtkObject *parent_obj = (AtkObject*) jaw_object_table_lookup( jniEnv, parent_ac );
- if (parent_obj == NULL)
+ JawObject *jaw_par = JAW_OBJECT(parent);
+ jobject pa = (*jniEnv)->NewGlobalRef(jniEnv, jaw_par->acc_context);
+ if (!pa) {
return;
}
+
+ jclass atkObject = (*jniEnv)->FindClass (jniEnv, "org/GNOME/Accessibility/AtkObject");
+ jmethodID jmid = (*jniEnv)->GetStaticMethodID (jniEnv, atkObject, "setAccessibleParent",
"(Ljavax/accessibility/AccessibleContext;Ljavax/accessibility/AccessibleContext;)V");
+ (*jniEnv)->CallStaticVoidMethod (jniEnv, atkObject, jmid, ac, pa);
+ //FIXME do we need to emit the signal 'children-changed::add'?
+ (*jniEnv)->DeleteGlobalRef(jniEnv, ac);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, pa);
}
static const gchar*
diff --git a/wrapper/org/GNOME/Accessibility/AtkObject.java b/wrapper/org/GNOME/Accessibility/AtkObject.java
index e9d4a3f..99a48b5 100644
--- a/wrapper/org/GNOME/Accessibility/AtkObject.java
+++ b/wrapper/org/GNOME/Accessibility/AtkObject.java
@@ -47,8 +47,13 @@ public class AtkObject{
}, null);
}
- public static void setAccessibleParent(AccessibleContext ac, Accessible father){
- AtkUtil.invokeInSwing( () -> { ac.setAccessibleParent(father); } );
+ public static void setAccessibleParent(AccessibleContext ac, AccessibleContext pa){
+ AtkUtil.invokeInSwing( () -> {
+ if (pa instanceof Accessible){
+ Accessible father = (Accessible) pa;
+ ac.setAccessibleParent(father);
+ }
+ } );
}
public static String getAccessibleName(AccessibleContext ac){
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]