[java-atk-wrapper] adding right version get/setDescription and remove getName
- From: Samuel Thibault <sthibaul src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper] adding right version get/setDescription and remove getName
- Date: Thu, 25 Jul 2019 16:04:02 +0000 (UTC)
commit fc61e1e29f5561aec082a5d0077f14e58bc5eb7e
Author: giuseppe <giuseppe dhcp-64-173 muc redhat com>
Date: Thu Jul 25 14:11:54 2019 +0200
adding right version get/setDescription and remove getName
jni/src/jawaction.c | 69 +++-----------------------
wrapper/org/GNOME/Accessibility/AtkAction.java | 60 +++++++++++-----------
2 files changed, 40 insertions(+), 89 deletions(-)
---
diff --git a/jni/src/jawaction.c b/jni/src/jawaction.c
index cbbca75..35585bf 100644
--- a/jni/src/jawaction.c
+++ b/jni/src/jawaction.c
@@ -25,15 +25,13 @@
static gboolean jaw_action_do_action(AtkAction *action, gint i);
static gint jaw_action_get_n_actions(AtkAction *action);
static const gchar* jaw_action_get_description(AtkAction *action, gint i);
-static const gchar* jaw_action_get_name(AtkAction *action, gint i);
static const gchar* jaw_action_get_keybinding (AtkAction *action, gint i);
static gboolean jaw_action_set_description (AtkAction *action, gint i, const gchar *description);
static const gchar* jaw_action_get_localized_name(AtkAction *action, gint i);
typedef struct _ActionData {
jobject atk_action;
- gchar* action_name;
- jstring jstrActionName;
+ gchar* localized_name;
jstring jstrLocalizedName;
gchar* action_description;
jstring jstrActionDescription;
@@ -48,7 +46,6 @@ jaw_action_interface_init (AtkActionIface *iface, gpointer data)
iface->do_action = jaw_action_do_action;
iface->get_n_actions = jaw_action_get_n_actions;
iface->get_description = jaw_action_get_description;
- iface->get_name = jaw_action_get_name;
iface->get_keybinding = jaw_action_get_keybinding;
iface->set_description = jaw_action_set_description;
iface->get_localized_name = jaw_action_get_localized_name;
@@ -81,19 +78,11 @@ jaw_action_data_finalize (gpointer p)
JNIEnv *jniEnv = jaw_util_get_jni_env();
if (data && data->atk_action) {
- if (data->action_name != NULL) {
- (*jniEnv)->ReleaseStringUTFChars(jniEnv,
- data->jstrActionName,
- data->action_name);
- (*jniEnv)->ReleaseStringUTFChars(jniEnv,
- data->jstrLocalizedName,
- data->action_name);
-
- (*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrActionName);
+ if (data->localized_name != NULL) {
+ (*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrLocalizedName, data->localized_name);
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrLocalizedName);
- data->jstrActionName = NULL;
data->jstrLocalizedName = NULL;
- data->action_name = NULL;
+ data->localized_name = NULL;
}
if (data->action_description != NULL) {
@@ -255,48 +244,6 @@ jaw_action_set_description (AtkAction *action, gint i, const gchar *description)
return jisset;
}
-static const gchar*
-jaw_action_get_name (AtkAction *action, gint i)
-{
- JAW_DEBUG_C("%p, %d", action, i);
- JawObject *jaw_obj = JAW_OBJECT(action);
- if(!jaw_obj){
- JAW_DEBUG_I("jaw_obj == NULL");
- return NULL;
- }
- ActionData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_ACTION);
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jobject atk_action = (*jniEnv)->NewGlobalRef(jniEnv, data->atk_action);
- if (!atk_action) {
- JAW_DEBUG_I("atk_action == NULL");
- return NULL;
- }
-
- jclass classAtkAction = (*jniEnv)->FindClass(jniEnv,
- "org/GNOME/Accessibility/AtkAction");
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAtkAction,
- "get_name",
- "(I)Ljava/lang/String;");
- jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv, atk_action, jmid, (jint)i);
- (*jniEnv)->DeleteGlobalRef(jniEnv, atk_action);
-
- if (data->action_name != NULL)
- {
- (*jniEnv)->ReleaseStringUTFChars(jniEnv,
- data->jstrActionName,
- data->action_name);
- (*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrActionName);
- }
-
- data->jstrActionName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
- data->action_name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
- data->jstrActionName,
- NULL);
-
- return data->action_name;
-}
-
static const gchar*
jaw_action_get_localized_name (AtkAction *action, gint i)
{
@@ -321,14 +268,14 @@ jaw_action_get_localized_name (AtkAction *action, gint i)
"(I)Ljava/lang/String;");
jstring jstr = (*env)->CallObjectMethod(env, atk_action, jmid, (jint)i);
(*env)->DeleteGlobalRef(env, atk_action);
- if (data->action_name != NULL)
+ if (data->localized_name != NULL)
{
- (*env)->ReleaseStringUTFChars(env, data->jstrLocalizedName, data->action_name);
+ (*env)->ReleaseStringUTFChars(env, data->jstrLocalizedName, data->localized_name);
(*env)->DeleteGlobalRef(env, data->jstrLocalizedName);
}
data->jstrLocalizedName = (*env)->NewGlobalRef(env, jstr);
- data->action_name = (gchar*)(*env)->GetStringUTFChars(env, data->jstrLocalizedName, NULL);
- return data->action_name;
+ data->localized_name = (gchar*)(*env)->GetStringUTFChars(env, data->jstrLocalizedName, NULL);
+ return data->localized_name;
}
static const gchar*
diff --git a/wrapper/org/GNOME/Accessibility/AtkAction.java b/wrapper/org/GNOME/Accessibility/AtkAction.java
index 032ced6..246fd34 100644
--- a/wrapper/org/GNOME/Accessibility/AtkAction.java
+++ b/wrapper/org/GNOME/Accessibility/AtkAction.java
@@ -30,11 +30,15 @@ public class AtkAction {
AccessibleContext ac;
AccessibleAction acc_action;
AccessibleExtendedComponent acc_ext_component;
+ String[] descriptions;
+ int nactions;
public AtkAction (AccessibleContext ac) {
super();
this.ac = ac;
this.acc_action = ac.getAccessibleAction();
+ this.nactions = this.acc_action.getAccessibleActionCount();
+ this.descriptions = new String[nactions];
AccessibleComponent acc_component = ac.getAccessibleComponent();
if (acc_component instanceof AccessibleExtendedComponent) {
this.acc_ext_component = (AccessibleExtendedComponent)acc_component;
@@ -50,30 +54,25 @@ public class AtkAction {
return true;
}
- public int get_n_actions () {
- return AtkUtil.invokeInSwing( () -> { return acc_action.getAccessibleActionCount(); }, 0);
- }
+ public int get_n_actions () { return this.nactions; }
- // FIXME: get and set methods seem wrong
public String get_description (int i) {
- String description = "<description>";
- return description;
+ if (i >= nactions){
+ return null;
+ }
+ if(descriptions[i] != null){
+ return descriptions[i];
+ }
+ descriptions[i] = AtkUtil.invokeInSwing( () -> { return
acc_action.getAccessibleActionDescription(i); }, "");
+ return descriptions[i];
}
-
- public boolean setDescription(int i, String description) {
- if (description == acc_action.getAccessibleActionDescription(i) &&
- description != null)
- return true;
- return false;
- }
-
- public String get_name (int i) {
- String name = acc_action.getAccessibleActionDescription(i);
- if (name == null) {
- name = "";
+
+ public boolean setDescription(int i, String description) {
+ if (i >= nactions){
+ return false;
}
-
- return name;
+ descriptions[i] = description;
+ return true;
}
/**
@@ -88,16 +87,21 @@ public class AtkAction {
* class is one way to work around that)
*/
public String getLocalizedName (int i) {
+ if (i >= nactions){
+ return null;
+ }
+ if (descriptions[i] != null){
+ return descriptions[i];
+ }
return AtkUtil.invokeInSwing ( () -> {
- String name = ac.getAccessibleName();
- String description = acc_action.getAccessibleActionDescription(i);
- if (description == name && description != null)
- return description;
- if (description == null && name != null)
+ descriptions[i] = acc_action.getAccessibleActionDescription(i);
+ if (descriptions[i] != null)
+ return descriptions[i];
+ String name = ac.getAccessibleName();
+ if (name != null)
return name;
- if (description != null)
- return description;
- return "";
+ descriptions[i] = "";
+ return descriptions[i];
}, null);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]