[java-atk-wrapper] Table: implement get_index_at
- From: Samuel Thibault <sthibaul src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper] Table: implement get_index_at
- Date: Sun, 28 Jul 2019 09:50:47 +0000 (UTC)
commit e65af70562011cb79fc2e2028351ea7e02685e44
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date: Sun Jul 28 11:50:17 2019 +0200
Table: implement get_index_at
jni/src/jawtable.c | 28 ++++++++++++++++++++++++++-
wrapper/org/GNOME/Accessibility/AtkTable.java | 16 +++++++++++++++
2 files changed, 43 insertions(+), 1 deletion(-)
---
diff --git a/jni/src/jawtable.c b/jni/src/jawtable.c
index 0383d3b..9315459 100644
--- a/jni/src/jawtable.c
+++ b/jni/src/jawtable.c
@@ -24,6 +24,7 @@
#include "jawutil.h"
static AtkObject* jaw_table_ref_at(AtkTable *table, gint row, gint column);
+static gint jaw_table_get_index_at(AtkTable *table, gint row, gint column);
static gint jaw_table_get_column_at_index(AtkTable *table, gint index);
static gint jaw_table_get_row_at_index(AtkTable *table, gint index);
static gint jaw_table_get_n_columns(AtkTable *table);
@@ -67,7 +68,7 @@ jaw_table_interface_init (AtkTableIface *iface, gpointer data)
{
JAW_DEBUG_ALL("%p, %p", iface, data);
iface->ref_at = jaw_table_ref_at;
- // TODO: iface->get_index_at
+ iface->get_index_at = jaw_table_get_index_at;
iface->get_column_at_index = jaw_table_get_column_at_index;
iface->get_row_at_index = jaw_table_get_row_at_index;
iface->get_n_columns = jaw_table_get_n_columns;
@@ -174,6 +175,31 @@ jaw_table_ref_at (AtkTable *table, gint row, gint column)
return ATK_OBJECT(jaw_impl);
}
+static gint
+jaw_table_get_index_at (AtkTable *table, gint row, gint column)
+{
+ JAW_DEBUG_C("%p, %d, %d", table, row, column);
+ JawObject *jaw_obj = JAW_OBJECT(table);
+ if (!jaw_obj) {
+ JAW_DEBUG_I("jaw_obj == NULL");
+ return 0;
+ }
+ TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
+ JNIEnv *env = jaw_util_get_jni_env();
+ jobject atk_table = (*env)->NewGlobalRef(env, data->atk_table);
+ if (!atk_table) {
+ JAW_DEBUG_I("atk_table == NULL");
+ return 0;
+ }
+
+ jclass classAtkTable = (*env)->FindClass(env, "org/GNOME/Accessibility/AtkTable");
+ jmethodID jmid = (*env)->GetMethodID(env, classAtkTable, "get_index_at", "(II)I");
+ jint jindex = (*env)->CallIntMethod(env, atk_table, jmid, (jint)row, (jint)column);
+ (*env)->DeleteGlobalRef(env, atk_table);
+
+ return (gint)jindex;
+}
+
static gint
jaw_table_get_column_at_index (AtkTable *table, gint index)
{
diff --git a/wrapper/org/GNOME/Accessibility/AtkTable.java b/wrapper/org/GNOME/Accessibility/AtkTable.java
index 1af00f4..92d1777 100644
--- a/wrapper/org/GNOME/Accessibility/AtkTable.java
+++ b/wrapper/org/GNOME/Accessibility/AtkTable.java
@@ -50,6 +50,22 @@ public class AtkTable {
}, null);
}
+ public int get_index_at (int row, int column) {
+ AccessibleTable acc_table = _acc_table.get();
+ if (acc_table == null)
+ return -1;
+
+ return AtkUtil.invokeInSwing ( () -> {
+ Accessible child = acc_table.getAccessibleAt(row, column);
+ if (child == null)
+ return -1;
+ AccessibleContext child_ac = child.getAccessibleContext();
+ if (child_ac == null)
+ return -1;
+ return child_ac.getAccessibleIndexInParent();
+ }, -1);
+ }
+
public int get_column_at_index (int index) {
AccessibleTable acc_table = _acc_table.get();
if (acc_table == null)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]