[java-atk-wrapper] Revert to d53bd87
- From: Magdalen Berns <mberns src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [java-atk-wrapper] Revert to d53bd87
- Date: Sun, 21 Jun 2015 14:00:35 +0000 (UTC)
commit f15e0add544b33a287f5703d6f230d21c5b8f4ad
Author: Magdalen Berns <m berns thismagpie com>
Date: Sun Jun 21 14:56:52 2015 +0100
Revert to d53bd87
HACKING | 27 +-
acinclude.m4 | 11 -
configure.ac | 10 +-
java-atk-wrapper.doap | 4 +-
jni/src/AtkWrapper.c | 25 +-
jni/src/Makefile.am | 15 +-
jni/src/jawaction.c | 1 +
jni/src/jawimpl.c | 165 ++++++---
jni/src/jawimpl.h | 2 -
jni/src/jawobject.c | 409 +++++++-------------
jni/src/jawobject.h | 4 +-
jni/src/jawtable.c | 44 +--
jni/src/jawtablecell.c | 139 -------
jni/src/jawutil.c | 35 +--
jni/src/jawutil.h | 9 +-
jni/src/jawwindow.c | 139 -------
jni/src/jawwindow.h | 68 ----
wrapper/Makefile.am | 14 +-
wrapper/org/GNOME/Accessibility/AtkComponent.java | 6 +-
wrapper/org/GNOME/Accessibility/AtkTable.java | 21 +-
wrapper/org/GNOME/Accessibility/AtkTableCell.java | 46 ---
wrapper/org/GNOME/Accessibility/AtkWindow.java | 33 --
wrapper/org/GNOME/Accessibility/AtkWrapper.java.in | 3 +-
23 files changed, 334 insertions(+), 896 deletions(-)
---
diff --git a/HACKING b/HACKING
index 73e07d5..30d64fc 100644
--- a/HACKING
+++ b/HACKING
@@ -13,9 +13,9 @@ make sure to cc the gnome-accessibility-devel list too.
To file a bug against java-atk-wrapper:
-1. go to https://bugzilla.gnome.org/enter_bug.cgi?product=java-atk-wrapper
+1. go to https://bugzilla.gnome.org/enter_bug.cgi?product=at-spi.
2. select java-atk-wrapper from the component list
-3. file bug using a descriptive subject title
+3. file bug using a descriptive subject title.
Feel free to upload a patch to your bug for review.
@@ -35,12 +35,25 @@ Document Interface (not yet implemented):
HyperlinkImpl:
TODO Currently Not fully documented by ATK
+# NOTE: Window interface signals currently seems to be being handled in jawobject.c
Object base class:
AtkFunction
implementor_ref_accessible
+ get_parent
+ peek_parent
+ get_n_accessible_children # get_n_children currently implemented
+ ref_accessible_child
+ ref_relation_set
+ set_name
+ set_description
+ set_parent
+ set_role
+ notify_state_change
+ object_initialize
add_relationship
remove_relationship
get_attributes
+ get_object_locale
get_localized_name
for_name
@@ -51,13 +64,17 @@ Table:
set_row_header
set_column_header
set_summary
+ add_column_selection
+ add_row_selection
-TableCell:
+TableCell (not yet implemented):
get_column_span
get_column_header_cells
+ get_position
get_row_span
get_row_header_cells
get_row_column_span
+ cell_get_table
Text:
set_free
@@ -70,7 +87,7 @@ Deprecated Methods Which Are Implemented
----------------------------------------
Table Interface:
- get_index_at
+ get_index_at - use ref_at instead
get_column_at_index
get_row_at_index
@@ -92,7 +109,7 @@ Spaces instead of tabs.
Two spaces per indent.
JNI error messages are in the form:
- g_warning("method calling instance: instance_name == NULL");
+ g_warning("\n *** method calling instance: instance == NULL *** \n");
Other Things to Keep in Mind
----------------------------
diff --git a/acinclude.m4 b/acinclude.m4
index 05c0133..d1581cd 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -51,17 +51,6 @@ case "$host" in
PLATFORM_CLASSPATH_SEPARATOR=":"
SOPREFIX=
;;
- *-*-darwin*)
- if test "$gcj_compile" = "yes"; then
- JNI_INCLUDES=
- else
- JNI_INCLUDES="-I$JDK_SRC/include -I$JDK_SRC/include/darwin"
- fi
- PLATFORM_CFLAGS=
- PLATFORM_LDFLAGS=
- PLATFORM_CLASSPATH_SEPARATOR=":"
- SOPREFIX=
- ;;
*)
if test "$gcj_compile" = "yes"; then
JNI_INCLUDES=
diff --git a/configure.ac b/configure.ac
index 9b20532..aea51e5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ(2.63)
AC_INIT([java-atk-wrapper],[0.33.0])
AC_CONFIG_AUX_DIR(config)
-AM_INIT_AUTOMAKE([1.11 -Wall check-news])
+AM_INIT_AUTOMAKE([1.11 -Wall check-news -Wdeprecated-declarations])
AM_SILENT_RULES([yes])
m4_pattern_allow([AM_PROG_AR])
@@ -20,6 +20,7 @@ LIB_ATK_WRAPPER_LT_VERSION=3:22:2
AC_SUBST(LIB_ATK_WRAPPER_LT_VERSION)
# jni
+
AC_CONFIG_HEADERS([config.h])
AC_PROG_CC(gcc)
@@ -41,6 +42,7 @@ PKG_CHECK_MODULES(JAW, [
dbus-1
glib-2.0 >= 2.32.0
gthread-2.0
+ gmodule-2.0 >= 2.0.0
gdk-2.0
gdk-3.0
gobject-2.0
@@ -59,7 +61,6 @@ AC_SUBST(LIB_ATK_WRAPPER_LD_FLAGS)
# java wrapper
-AM_CONDITIONAL(USER, test `whoami` = "root")
JAVA_REQUIRED=1.6
JAVA_ERROR_MESSAGE="Java $JAVA_REQUIRED or later is required to build java-access-bridge"
@@ -120,7 +121,7 @@ AC_SUBST(JDK_SRC)
AC_SUBST(JAVA_HOME)
if test "x$GCC" = xyes; then
- JAW_CFLAGS=$JAW_CFLAGS $CFLAGS
+ JAW_CFLAGS=$JAW_CFLAGS $CFLAGS -I$JDK_SRC/include
else
AC_MSG_ERROR("You should compile with GCC")
fi
@@ -172,6 +173,5 @@ Build configuration:
Prefix: ${prefix}
Source code location: ${srcdir}
Compiler: ${CC}
- JDK src: ${JDK_SRC}
- JNI includes: ${JNI_INCLUDES}
+ JDK src ${JDK_SRC}
"
diff --git a/java-atk-wrapper.doap b/java-atk-wrapper.doap
index e195438..0ceec45 100644
--- a/java-atk-wrapper.doap
+++ b/java-atk-wrapper.doap
@@ -8,10 +8,8 @@
<shortdesc xml:lang="en">ATK implementation for Java by using JNI technic</shortdesc>
<description>Java ATK Wrapper provides a C wrapper to java to allow access to methods
from the ATK API interface in java</description>
- <homepage rdf:resource="http://live.gnome.org/Accessibility/JavaAtkWrapper" />
+ <homepage rdf:resource="http://live.gnome.org/Accessibility/JavaATKWrapper" />
<mailing-list rdf:resource="http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel" />
- <bug-database rdf:resource="https://bugzilla.gnome.org/browse.cgi?product=java-atk-wrapper" />
- <download-page rdf:resource="https://download.gnome.org/sources/java-atk-wrapper" />
<category rdf:resource="http://api.gnome.org/doap-extensions#apps" />
<programming-language>Java</programming-language>
<programming-language>C</programming-language>
diff --git a/jni/src/AtkWrapper.c b/jni/src/AtkWrapper.c
index 2831f2c..e60fc51 100644
--- a/jni/src/AtkWrapper.c
+++ b/jni/src/AtkWrapper.c
@@ -30,7 +30,6 @@
#include "jawutil.h"
#include "jawimpl.h"
#include "jawtoplevel.h"
-#include "jawwindow.h"
#ifdef __cplusplus
extern "C" {
@@ -319,7 +318,7 @@ window_open_handler (gpointer p)
atk_obj,
NULL);
- g_signal_emit(atk_obj, g_signal_lookup("create", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("create", JAW_TYPE_OBJECT), 0);
}
free_callback_para(para);
@@ -397,7 +396,7 @@ window_close_handler (gpointer p)
atk_obj,
NULL);
- g_signal_emit(atk_obj, g_signal_lookup("destroy", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("destroy", JAW_TYPE_OBJECT), 0);
}
free_callback_para(para);
@@ -449,7 +448,7 @@ window_minimize_handler (gpointer p)
}
AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
- g_signal_emit(atk_obj, g_signal_lookup("minimize", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("minimize", JAW_TYPE_OBJECT), 0);
free_callback_para(para);
@@ -499,7 +498,7 @@ window_maximize_handler (gpointer p)
}
AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
- g_signal_emit(atk_obj, g_signal_lookup("maximize", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("maximize", JAW_TYPE_OBJECT), 0);
free_callback_para(para);
@@ -548,7 +547,7 @@ window_restore_handler (gpointer p)
}
AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
- g_signal_emit(atk_obj, g_signal_lookup("restore", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("restore", JAW_TYPE_OBJECT), 0);
free_callback_para(para);
@@ -597,7 +596,7 @@ window_activate_handler (gpointer p)
}
AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
- g_signal_emit(atk_obj, g_signal_lookup("activate", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("activate", JAW_TYPE_OBJECT), 0);
free_callback_para(para);
@@ -645,7 +644,7 @@ window_deactivate_handler (gpointer p)
}
AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
- g_signal_emit(atk_obj, g_signal_lookup("deactivate", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("deactivate", JAW_TYPE_OBJECT), 0);
free_callback_para(para);
@@ -696,7 +695,7 @@ window_state_change_handler (gpointer p)
}
AtkObject* atk_obj = ATK_OBJECT(jaw_impl);
- g_signal_emit(atk_obj, g_signal_lookup("state-change", JAW_TYPE_WINDOW), 0);
+ g_signal_emit(atk_obj, g_signal_lookup("state-change", JAW_TYPE_OBJECT), 0);
free_callback_para(para);
@@ -1084,8 +1083,8 @@ object_state_change_handler (gpointer p)
}
atk_object_notify_state_change(ATK_OBJECT(jaw_impl),
- para->atk_state,
- para->state_value);
+ para->atk_state,
+ para->state_value);
free_callback_para(para);
return G_SOURCE_REMOVE;
@@ -1210,9 +1209,7 @@ component_removed_handler (gpointer p)
return G_SOURCE_REMOVE;
}
if (atk_object_get_role(atk_obj) == ATK_ROLE_TOOL_TIP)
- atk_object_notify_state_change(atk_obj,
- ATK_STATE_SHOWING,
- FALSE);
+ atk_object_notify_state_change(atk_obj, ATK_STATE_SHOWING, FALSE);
free_callback_para(para);
return G_SOURCE_REMOVE;
diff --git a/jni/src/Makefile.am b/jni/src/Makefile.am
index f4b3279..b1bd59c 100644
--- a/jni/src/Makefile.am
+++ b/jni/src/Makefile.am
@@ -14,22 +14,19 @@ libatk_wrapper_la_SOURCES = AtkWrapper.c \
jawimage.c \
jawselection.c \
jawvalue.c \
- jawtable.c \
- jawtablecell.c \
- jawwindow.c
+ jawtable.c
noinst_HEADERS = jawimpl.h \
jawobject.h \
jawhyperlink.h \
jawtoplevel.h \
- jawutil.h \
- jawwindow.h
+ jawutil.h
-libatk_wrapper_la_CFLAGS = $(JAW_CFLAGS) \
- $(JNI_INCLUDES)
+libatk_wrapper_la_CFLAGS = $(JNI_INCLUDES)\
+ $(JAW_CFLAGS)
-libatk_wrapper_la_CPPFLAGS = $(JAW_CFLAGS) \
- $(JNI_INCLUDES)
+libatk_wrapper_la_CPPFLAGS = $(JNI_INCLUDES)\
+ $(JAW_CFLAGS)
libatk_wrapper_la_LDFLAGS = $(LIB_ATK_WRAPPER_LD_FLAGS) \
$(LT_VERSION_INFO) \
diff --git a/jni/src/jawaction.c b/jni/src/jawaction.c
index 4edd45f..9af38d4 100644
--- a/jni/src/jawaction.c
+++ b/jni/src/jawaction.c
@@ -53,6 +53,7 @@ jaw_action_interface_init (AtkActionIface *iface)
iface->get_name = jaw_action_get_name;
iface->get_keybinding = jaw_action_get_keybinding;
iface->get_localized_name = NULL; /*jaw_get_localized_name;*/
+ iface->set_description = NULL;
}
gpointer
diff --git a/jni/src/jawimpl.c b/jni/src/jawimpl.c
index 2cc8ed6..5ca98c8 100644
--- a/jni/src/jawimpl.c
+++ b/jni/src/jawimpl.c
@@ -42,6 +42,8 @@ static gpointer jaw_impl_get_interface_data(JawObject *jaw_obj, guint iface);
/* AtkObject */
static void jaw_impl_initialize(AtkObject *atk_obj, gpointer data);
static AtkObject* jaw_impl_get_parent(AtkObject *atk_obj);
+static AtkObject* jaw_impl_ref_child (AtkObject *atk_obj, gint i);
+static AtkRelationSet* jaw_impl_ref_relation_set(AtkObject *atk_obj);
extern void jaw_action_interface_init(AtkActionIface*);
extern gpointer jaw_action_data_init(jobject);
@@ -79,14 +81,6 @@ extern void jaw_table_interface_init (AtkTableIface*);
extern gpointer jaw_table_data_init (jobject);
extern void jaw_table_data_finalize (gpointer);
-extern void jaw_table_cell_interface_init (AtkTableCellIface*);
-extern gpointer jaw_table_cell_data_init (jobject);
-extern void jaw_table_cell_data_finalize (gpointer);
-
-extern void jaw_window_interface_init (AtkWindowIface*);
-extern gpointer jaw_window_data_init (jobject);
-extern void jaw_window_data_finalize (gpointer);
-
typedef struct _JawInterfaceInfo {
void (*finalize) (gpointer);
gpointer data;
@@ -240,26 +234,6 @@ aggregate_interface(JNIEnv *jniEnv, JawObject *jaw_obj, guint tflag)
(gpointer)INTERFACE_TABLE,
(gpointer)info);
}
-
- if (tflag & INTERFACE_TABLE_CELL)
- {
- JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
- info->data = jaw_table_cell_data_init(ac);
- info->finalize = jaw_table_cell_data_finalize;
- g_hash_table_insert(jaw_impl->ifaceTable,
- (gpointer)INTERFACE_TABLE_CELL,
- (gpointer)info);
- }
-
- if (tflag & INTERFACE_WINDOW)
- {
- JawInterfaceInfo *info = g_new(JawInterfaceInfo, 1);
- info->data = jaw_window_data_init(ac);
- info->finalize = jaw_window_data_finalize;
- g_hash_table_insert(jaw_impl->ifaceTable,
- (gpointer)INTERFACE_WINDOW,
- (gpointer)info);
- }
}
JawImpl*
@@ -410,20 +384,6 @@ jaw_impl_get_type (guint tflag)
NULL
};
- static const GInterfaceInfo atk_table_cell_info =
- {
- (GInterfaceInitFunc) jaw_table_cell_interface_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL
- };
-
- static const GInterfaceInfo atk_window_info =
- {
- (GInterfaceInitFunc) jaw_window_interface_init,
- (GInterfaceFinalizeFunc) NULL,
- NULL
- };
-
if (typeTable == NULL) {
typeTable = g_hash_table_new( NULL, NULL );
}
@@ -475,12 +435,6 @@ jaw_impl_get_type (guint tflag)
if (tflag & INTERFACE_TABLE)
g_type_add_interface_static (type, ATK_TYPE_TABLE, &atk_table_info);
- if (tflag & INTERFACE_TABLE_CELL)
- g_type_add_interface_static (type, ATK_TYPE_TABLE_CELL, &atk_table_cell_info);
-
- if (tflag & INTERFACE_WINDOW)
- g_type_add_interface_static (type, ATK_TYPE_WINDOW, &atk_window_info);
-
g_hash_table_insert(typeTable, GINT_TO_POINTER(tflag), GTYPE_TO_POINTER(type));
}
@@ -497,6 +451,8 @@ jaw_impl_class_init(JawImplClass *klass)
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
atk_class->initialize = jaw_impl_initialize;
atk_class->get_parent = jaw_impl_get_parent;
+ atk_class->ref_child = jaw_impl_ref_child;
+ atk_class->ref_relation_set = jaw_impl_ref_relation_set;
JawObjectClass *jaw_class = JAW_OBJECT_CLASS (klass);
jaw_class->get_interface_data = jaw_impl_get_interface_data;
@@ -621,9 +577,43 @@ jaw_impl_get_parent (AtkObject *atk_obj)
return obj;
}
}
+
return ATK_OBJECT(atk_get_root());
}
+static AtkObject*
+jaw_impl_ref_child (AtkObject *atk_obj, gint i)
+{
+ JawObject *jaw_obj = JAW_OBJECT(atk_obj);
+ jobject ac = jaw_obj->acc_context;
+ JNIEnv *jniEnv = jaw_util_get_jni_env();
+
+ 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 );
+ 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( jniEnv, child_ac );
+ if (G_OBJECT(obj) != NULL)
+ g_object_ref(G_OBJECT(obj));
+
+ return obj;
+}
+
static jstring
get_java_relation_key_constant (JNIEnv *jniEnv, const gchar* strKey)
{
@@ -709,10 +699,83 @@ get_atk_relation_type_from_java_key (JNIEnv *jniEnv, jstring jrel_key)
return ATK_RELATION_NULL;
}
-AtkRelationType
-jaw_impl_get_atk_relation_type_from_java_key (JNIEnv *jniEnv, jstring jrel_key)
+static AtkRelationSet*
+jaw_impl_ref_relation_set (AtkObject *atk_obj)
{
- return get_atk_relation_type_from_java_key (jniEnv, jrel_key);
+ if (atk_obj->relation_set)
+ g_object_unref(G_OBJECT(atk_obj->relation_set));
+ atk_obj->relation_set = atk_relation_set_new();
+ if(atk_obj == NULL)
+ return NULL;
+
+ JawObject *jaw_obj = JAW_OBJECT(atk_obj);
+ jobject ac = jaw_obj->acc_context;
+ JNIEnv *jniEnv = jaw_util_get_jni_env();
+
+ jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
+ "javax/accessibility/AccessibleContext" );
+ jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
+ classAccessibleContext,
+ "getAccessibleRelationSet",
+ "()Ljavax/accessibility/AccessibleRelationSet;" );
+ jobject jrel_set = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
+
+ jclass classAccessibleRelationSet = (*jniEnv)->FindClass( jniEnv,
+ "javax/accessibility/AccessibleRelationSet");
+ jmid = (*jniEnv)->GetMethodID(jniEnv,
+ classAccessibleRelationSet,
+ "toArray",
+ "()[Ljavax/accessibility/AccessibleRelation;");
+ jobjectArray jrel_arr = (*jniEnv)->CallObjectMethod(jniEnv, jrel_set, jmid);
+ jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jrel_arr);
+
+ jsize i;
+ for (i = 0; i < jarr_size; i++)
+ {
+ jobject jrel = (*jniEnv)->GetObjectArrayElement(jniEnv, jrel_arr, i);
+ jclass classAccessibleRelation = (*jniEnv)->FindClass(jniEnv,
+ "javax/accessibility/AccessibleRelation");
+ jmid = (*jniEnv)->GetMethodID(jniEnv,
+ classAccessibleRelation,
+ "getKey",
+ "()Ljava/lang/String;");
+ jstring jrel_key = (*jniEnv)->CallObjectMethod( jniEnv, jrel, jmid );
+ AtkRelationType rel_type = get_atk_relation_type_from_java_key(jniEnv, jrel_key);
+
+ jmid = (*jniEnv)->GetMethodID(jniEnv,
+ classAccessibleRelation,
+ "getTarget",
+ "()[Ljava/lang/Object;");
+ jobjectArray jtarget_arr = (*jniEnv)->CallObjectMethod(jniEnv, jrel, jmid);
+ jsize jtarget_size = (*jniEnv)->GetArrayLength(jniEnv, jtarget_arr);
+
+ jsize j;
+ for (j = 0; j < jtarget_size; j++)
+ {
+ jobject jtarget = (*jniEnv)->GetObjectArrayElement(jniEnv, jtarget_arr, j);
+ jclass classAccessible = (*jniEnv)->FindClass( jniEnv,
+ "javax/accessibility/Accessible");
+ if ((*jniEnv)->IsInstanceOf(jniEnv, jtarget, classAccessible))
+ {
+ jmid = (*jniEnv)->GetMethodID(jniEnv,
+ classAccessible,
+ "getAccessibleContext",
+ "()Ljavax/accessibility/AccessibleContext;");
+ jobject target_ac = (*jniEnv)->CallObjectMethod(jniEnv, jtarget, jmid);
+
+ JawImpl *target_obj = jaw_impl_get_instance(jniEnv, target_ac);
+ if(target_obj == NULL)
+ return NULL;
+ atk_object_add_relationship(atk_obj, rel_type, (AtkObject*) target_obj);
+ }
+ }
+ }
+ if(atk_obj->relation_set == NULL)
+ return NULL;
+ if (G_OBJECT(atk_obj->relation_set) != NULL)
+ g_object_ref (atk_obj->relation_set);
+
+ return atk_obj->relation_set;
}
#ifdef __cplusplus
diff --git a/jni/src/jawimpl.h b/jni/src/jawimpl.h
index 38e457b..be88935 100644
--- a/jni/src/jawimpl.h
+++ b/jni/src/jawimpl.h
@@ -58,8 +58,6 @@ struct _JawImplClass
JawObjectClass parent_class;
};
-AtkRelationType jaw_impl_get_atk_relation_type_from_java_key (JNIEnv *jniEnv, jstring jrel_key);
-
G_END_DECLS
#endif
diff --git a/jni/src/jawobject.c b/jni/src/jawobject.c
index 4db2803..1e97fdc 100644
--- a/jni/src/jawobject.c
+++ b/jni/src/jawobject.c
@@ -22,11 +22,12 @@
#include <glib.h>
#include "jawobject.h"
#include "jawutil.h"
-#include "jawimpl.h"
#include "jawtoplevel.h"
static void jaw_object_class_init(JawObjectClass *klass);
static void jaw_object_init(JawObject *object);
+static void jaw_object_dispose(GObject *gobject);
+static void jaw_object_finalize(GObject *gobject);
/* AtkObject */
static const gchar* jaw_object_get_name(AtkObject *atk_obj);
@@ -38,23 +39,33 @@ static gint jaw_object_get_index_in_parent(AtkObject *atk_obj);
static AtkRole jaw_object_get_role(AtkObject *atk_obj);
static AtkStateSet* jaw_object_ref_state_set(AtkObject *atk_obj);
-static void jaw_object_initialize(AtkObject *jaw_obj, gpointer data);
-static AtkObject* jaw_object_get_parent(AtkObject *obj);
-static AtkObject * jaw_object_ref_child (AtkObject *atk_obj, gint i);
-static AtkRelationSet* jaw_object_ref_relation_set(AtkObject *atk_obj);
-static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name);
-static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description);
-static void jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent);
-static void jaw_object_set_role (AtkObject *atk_obj, AtkRole role);
-static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj);
static gpointer parent_class = NULL;
+enum {
+ ACTIVATE,
+ CREATE,
+ DEACTIVATE,
+ DESTROY,
+ MAXIMIZE,
+ MINIMIZE,
+ MOVE,
+ RESIZE,
+ RESTORE,
+ TOTAL_SIGNAL
+};
+
+static guint jaw_window_signals[TOTAL_SIGNAL] = { 0, };
+
G_DEFINE_TYPE (JawObject, jaw_object, ATK_TYPE_OBJECT);
static void
jaw_object_class_init (JawObjectClass *klass)
{
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->dispose = jaw_object_dispose;
+ gobject_class->finalize = jaw_object_finalize;
+
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
@@ -63,19 +74,98 @@ jaw_object_class_init (JawObjectClass *klass)
atk_class->get_n_children = jaw_object_get_n_children;
atk_class->get_index_in_parent = jaw_object_get_index_in_parent;
atk_class->get_role = jaw_object_get_role;
- atk_class->get_parent = jaw_object_get_parent;
+ atk_class->get_layer = NULL;
+ atk_class->get_mdi_zorder = NULL;
atk_class->ref_state_set = jaw_object_ref_state_set;
- atk_class->initialize = jaw_object_initialize;
- atk_class->ref_child = jaw_object_ref_child;
- atk_class->ref_relation_set = jaw_object_ref_relation_set;
- atk_class->set_name = jaw_object_set_name;
- atk_class->set_description = jaw_object_set_description;
- atk_class->set_parent = jaw_object_set_parent;
- atk_class->set_role = jaw_object_set_role;
- atk_class->get_object_locale = jaw_object_get_object_locale;
-
+/* atk_class->set_name = jaw_object_set_name;
+ atk_class->set_description = jaw_object_set_description;
+ atk_class->set_parent = jaw_object_set_parent;
+ atk_class->set_role = jaw_object_set_role;
+ atk_class->connect_property_change_handler = jaw_object_connect_property_change_handler;
+ atk_class->remove_property_change_handler = jaw_object_remove_property_change_handler;
+ atk_class->children_changed = jaw_object_children_changed;
+ atk_class->focus_event = jaw_object_focus_event;
+ atk_class->property_change = jaw_object_property_change;
+ atk_class->state_change = jaw_object_state_change;
+ atk_class->visible_data_changed = jaw_object_visible_data_changed;
+ atk_class->active_descendant_changed = jaw_object_active_descendant_changed;
+ atk_class->get_attributes = jaw_object_get_attributes;
+*/
klass->get_interface_data = NULL;
-}
+
+ jaw_window_signals [ACTIVATE] = g_signal_new ("activate",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ jaw_window_signals [CREATE] = g_signal_new ("create",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ jaw_window_signals [DEACTIVATE] = g_signal_new ("deactivate",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ jaw_window_signals [DESTROY] = g_signal_new ("destroy",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ jaw_window_signals [MAXIMIZE] = g_signal_new ("maximize",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ jaw_window_signals [MINIMIZE] = g_signal_new ("minimize",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ jaw_window_signals [MOVE] = g_signal_new ("move",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ jaw_window_signals [RESIZE] = g_signal_new ("resize",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ jaw_window_signals [RESTORE] = g_signal_new ("restore",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, /* default signal handler */
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+ }
gpointer
jaw_object_get_interface_data (JawObject *jaw_obj, guint iface)
@@ -97,50 +187,47 @@ jaw_object_init (JawObject *object)
}
static void
-jaw_object_initialize(AtkObject *atk_obj, gpointer data)
+jaw_object_dispose (GObject *gobject)
{
- ATK_OBJECT_CLASS (jaw_object_parent_class)->initialize(atk_obj, data);
+ /* Customized dispose code */
+
+ /* Chain up to parent's dispose method */
+ G_OBJECT_CLASS(jaw_object_parent_class)->dispose(gobject);
}
-static AtkObject* jaw_object_get_parent(AtkObject *atk_obj)
+static void
+jaw_object_finalize (GObject *gobject)
{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
+ /* Customized finalize code */
+ JawObject *jaw_obj = JAW_OBJECT(gobject);
+ AtkObject *atk_obj = ATK_OBJECT(gobject);
JNIEnv *jniEnv = jaw_util_get_jni_env();
- jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/AccessibleContext" );
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "getAccessibleParent",
- "()Ljavax/accessibility/AccessibleContext;");
- jobject jparent = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
-
- return ATK_OBJECT(jparent);
-}
+ if (atk_obj->name != NULL)
+ {
+ (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
+ (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
+ jaw_obj->jstrName = NULL;
+ atk_obj->name = NULL;
+ }
-AtkObject* jaw_object_peek_parent(AtkObject *atk_obj)
-{
- AtkObject *atk_parent = jaw_object_get_parent(atk_obj);
- if (atk_parent != NULL)
- return atk_parent;
- return NULL;
-}
+ if (atk_obj->description != NULL)
+ {
+ (*jniEnv)->ReleaseStringUTFChars(jniEnv,
+ jaw_obj->jstrDescription,
+ atk_obj->description);
-static void
-jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent)
-{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
+ (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
+ jaw_obj->jstrDescription = NULL;
+ atk_obj->description = NULL;
+ }
- 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 );
+ if (G_OBJECT(jaw_obj->state_set) != NULL)
+ {
+ g_object_unref(G_OBJECT(jaw_obj->state_set));
+ /* Chain up to parent's finalize method */
+ G_OBJECT_CLASS(jaw_object_parent_class)->finalize(gobject);
+ }
}
static const gchar*
@@ -191,42 +278,6 @@ jaw_object_get_name (AtkObject *atk_obj)
return atk_obj->name;
}
-static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name)
-{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
-
- atk_obj->name = (gchar *)ATK_OBJECT_CLASS (parent_class)->get_name (atk_obj);
-
- jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/AccessibleContext" );
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "setAccessibleName",
- "(Ljava/lang/String;)");
- jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
-
- if (atk_obj->name != NULL)
- {
- (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
- (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
- }
-
- if (jstr != NULL)
- {
- jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
- atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
- jaw_obj->jstrName,
- NULL);
- }
- if (jstr == NULL)
- {
- name = "";
- return;
- }
-}
-
static const gchar*
jaw_object_get_description (AtkObject *atk_obj)
{
@@ -260,39 +311,6 @@ jaw_object_get_description (AtkObject *atk_obj)
return atk_obj->description;
}
-static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description)
-{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
-
- jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv,
- "javax/accessibility/AccessibleContext" );
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "setAccessibleDescription",
- "(Ljava/lang/String;)");
- jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
-
- if (description != NULL)
- {
- (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrDescription, description);
- (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
- description = NULL;
- }
-
- if (jstr != NULL)
- {
- jaw_obj->jstrDescription = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
- description = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
- jaw_obj->jstrDescription,
- NULL);
- }
- if (jstr != NULL)
- {
- description = "";
- }
-}
static gint
jaw_object_get_n_children (AtkObject *atk_obj)
{
@@ -342,48 +360,6 @@ jaw_object_get_role (AtkObject *atk_obj)
return atk_obj->role;
}
-static void
-jaw_object_set_role (AtkObject *atk_obj, AtkRole role)
-{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- atk_obj->role = role;
- if (atk_obj != NULL && role)
- atk_object_set_role(atk_obj, atk_obj->role);
-}
-
-static AtkObject*
-jaw_object_ref_child (AtkObject *atk_obj, gint i)
-{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
-
- 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 );
- 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( jniEnv, child_ac );
- if (G_OBJECT(obj) != NULL)
- g_object_ref(G_OBJECT(obj));
-
- return obj;
-}
-
static AtkStateSet*
jaw_object_ref_state_set (AtkObject *atk_obj)
{
@@ -429,102 +405,3 @@ jaw_object_ref_state_set (AtkObject *atk_obj)
return state_set;
}
-static AtkRelationSet*
-jaw_object_ref_relation_set (AtkObject *atk_obj)
-{
- if (atk_obj->relation_set)
- g_object_unref(G_OBJECT(atk_obj->relation_set));
- atk_obj->relation_set = atk_relation_set_new();
- if(atk_obj == NULL)
- return NULL;
-
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
-
- jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/AccessibleContext" );
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "getAccessibleRelationSet",
- "()Ljavax/accessibility/AccessibleRelationSet;" );
- jobject jrel_set = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
-
- jclass classAccessibleRelationSet = (*jniEnv)->FindClass( jniEnv,
- "javax/accessibility/AccessibleRelationSet");
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleRelationSet,
- "toArray",
- "()[Ljavax/accessibility/AccessibleRelation;");
- jobjectArray jrel_arr = (*jniEnv)->CallObjectMethod(jniEnv, jrel_set, jmid);
- jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jrel_arr);
-
- jsize i;
- for (i = 0; i < jarr_size; i++)
- {
- jobject jrel = (*jniEnv)->GetObjectArrayElement(jniEnv, jrel_arr, i);
- jclass classAccessibleRelation = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/AccessibleRelation");
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleRelation,
- "getKey",
- "()Ljava/lang/String;");
- jstring jrel_key = (*jniEnv)->CallObjectMethod( jniEnv, jrel, jmid );
- AtkRelationType rel_type = jaw_impl_get_atk_relation_type_from_java_key(jniEnv, jrel_key);
-
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleRelation,
- "getTarget",
- "()[Ljava/lang/Object;");
- jobjectArray jtarget_arr = (*jniEnv)->CallObjectMethod(jniEnv, jrel, jmid);
- jsize jtarget_size = (*jniEnv)->GetArrayLength(jniEnv, jtarget_arr);
-
- jsize j;
- for (j = 0; j < jtarget_size; j++)
- {
- jobject jtarget = (*jniEnv)->GetObjectArrayElement(jniEnv, jtarget_arr, j);
- jclass classAccessible = (*jniEnv)->FindClass( jniEnv,
- "javax/accessibility/Accessible");
- if ((*jniEnv)->IsInstanceOf(jniEnv, jtarget, classAccessible))
- {
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessible,
- "getAccessibleContext",
- "()Ljavax/accessibility/AccessibleContext;");
- jobject target_ac = (*jniEnv)->CallObjectMethod(jniEnv, jtarget, jmid);
-
- JawImpl *target_obj = jaw_impl_get_instance(jniEnv, target_ac);
- if(target_obj == NULL)
- return NULL;
- atk_object_add_relationship(atk_obj, rel_type, (AtkObject*) target_obj);
- }
- }
- }
- if(atk_obj->relation_set == NULL)
- return NULL;
- if (G_OBJECT(atk_obj->relation_set) != NULL)
- g_object_ref (atk_obj->relation_set);
-
- return atk_obj->relation_set;
-}
-
-static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj)
-{
- JawObject *jaw_obj = JAW_OBJECT(atk_obj);
- jobject ac = jaw_obj->acc_context;
- JNIEnv *jniEnv = jaw_util_get_jni_env();
-
- jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
- "javax/accessibility/AccessibleContext" );
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "getLocale",
- "()Ljavax/accessibility/AccessibleContext;");
- jobject locale = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
- JawImpl *target_obj = jaw_impl_get_instance(jniEnv, locale);
- if(target_obj == NULL)
- return NULL;
-
- return atk_object_get_object_locale((AtkObject*) target_obj);
-}
-
diff --git a/jni/src/jawobject.h b/jni/src/jawobject.h
index 1a05dba..0709f79 100644
--- a/jni/src/jawobject.h
+++ b/jni/src/jawobject.h
@@ -21,6 +21,7 @@
#define _JAW_OBJECT_H_
#include <atk/atk.h>
+#include <atk-bridge.h>
#include <jni.h>
G_BEGIN_DECLS
@@ -38,10 +39,12 @@ typedef struct _JawObjectClass JawObjectClass;
struct _JawObject
{
AtkObject parent;
+
jobject acc_context;
jstring jstrName;
jstring jstrDescription;
AtkStateSet *state_set;
+
GHashTable *storedData;
};
@@ -55,7 +58,6 @@ struct _JawObjectClass
};
gpointer jaw_object_get_interface_data (JawObject*, guint);
-AtkObject *jaw_object_peek_parent(AtkObject *atk_obj);
G_END_DECLS
diff --git a/jni/src/jawtable.c b/jni/src/jawtable.c
index a44d027..6f070bb 100644
--- a/jni/src/jawtable.c
+++ b/jni/src/jawtable.c
@@ -65,10 +65,6 @@ static gboolean jaw_table_is_row_selected (AtkTable
*table,
static gboolean jaw_table_is_selected (AtkTable *table,
gint row,
gint column);
-static gboolean jaw_table_add_row_selection(AtkTable *table,
- gint row);
-static gboolean jaw_table_add_column_selection(AtkTable *table,
- gint column);
typedef struct _TableData {
jobject atk_table;
@@ -98,8 +94,6 @@ jaw_table_interface_init (AtkTableIface *iface)
iface->is_column_selected = jaw_table_is_column_selected;
iface->is_row_selected = jaw_table_is_row_selected;
iface->is_selected = jaw_table_is_selected;
- iface->add_row_selection= jaw_table_add_row_selection;
- iface->add_column_selection= jaw_table_add_column_selection;
}
gpointer
@@ -153,8 +147,7 @@ jaw_table_ref_at (AtkTable *table, gint row, gint column)
JawImpl* jaw_impl = jaw_impl_get_instance( jniEnv, jac );
- if (G_OBJECT(jaw_impl) != NULL)
- g_object_ref(G_OBJECT(jaw_impl));
+ g_object_ref( G_OBJECT(jaw_impl) );
return ATK_OBJECT(jaw_impl);
}
@@ -511,38 +504,3 @@ jaw_table_is_selected (AtkTable *table, gint row, gint column)
return FALSE;
}
-static gboolean
-jaw_table_add_row_selection(AtkTable *table, gint row)
-{
- JawObject *jaw_obj = JAW_OBJECT(table);
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- jobject atk_table = data->atk_table;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "addRowSelection", "(I)Z");
- jboolean jselected = (*jniEnv)->CallBooleanMethod(jniEnv, atk_table, jmid, (jint)row);
-
- if (jselected == JNI_TRUE)
- return TRUE;
-
- return FALSE;
-}
-
-static gboolean
-jaw_table_add_column_selection(AtkTable *table, gint column)
-{
- JawObject *jaw_obj = JAW_OBJECT(table);
- TableData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TABLE);
- jobject atk_table = data->atk_table;
-
- JNIEnv *jniEnv = jaw_util_get_jni_env();
- jclass classAtkTable = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkTable");
- jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkTable, "addColumnSelection", "(I)Z");
- jboolean jselected = (*jniEnv)->CallBooleanMethod(jniEnv, atk_table, jmid, (jint)column);
-
- if (jselected == JNI_TRUE)
- return TRUE;
-
- return FALSE;
-}
diff --git a/jni/src/jawutil.c b/jni/src/jawutil.c
index 6ef3abe..ce2d406 100644
--- a/jni/src/jawutil.c
+++ b/jni/src/jawutil.c
@@ -27,7 +27,6 @@
#include "jawutil.h"
#include "jawtoplevel.h"
#include "jawobject.h"
-#include "jawwindow.h"
#ifdef __cplusplus
extern "C" {
@@ -121,14 +120,13 @@ jaw_util_add_global_event_listener(GSignalEmissionHook listener,
{
guint rc = 0;
gchar **split_string;
- guint length;
- g_type_class_unref( g_type_class_ref(JAW_TYPE_WINDOW));
+ g_type_class_unref( g_type_class_ref(JAW_TYPE_OBJECT));
split_string = g_strsplit (event_type, ":", 3);
if (split_string) {
if (!strcmp ("window", split_string[0])) {
- rc = add_listener (listener, "JawWindow", split_string[1], event_type);
+ rc = add_listener (listener, "JawObject", split_string[1], event_type);
} else {
rc = add_listener (listener, split_string[1], split_string[2], event_type);
}
@@ -136,7 +134,6 @@ jaw_util_add_global_event_listener(GSignalEmissionHook listener,
g_strfreev (split_string);
}
-
return rc;
}
@@ -145,16 +142,16 @@ jaw_util_remove_global_event_listener (guint remove_listener)
{
if (remove_listener > 0) {
JawUtilListenerInfo *listener_info;
- guint tmp_idx = remove_listener;
+ gint tmp_idx = remove_listener;
- listener_info = g_hash_table_lookup(listener_list, GUINT_TO_POINTER(tmp_idx));
+ listener_info = (JawUtilListenerInfo*)g_hash_table_lookup(listener_list, GINT_TO_POINTER(tmp_idx));
if (listener_info != NULL)
{
if (listener_info->hook_id != 0 && listener_info->signal_id != 0)
{
g_signal_remove_emission_hook(listener_info->signal_id, listener_info->hook_id);
- g_hash_table_remove(listener_list, GUINT_TO_POINTER(tmp_idx));
+ g_hash_table_remove(listener_list, GINT_TO_POINTER(tmp_idx));
} else {
g_warning("Invalid listener hook_id %ld or signal_id %d\n",
listener_info->hook_id, listener_info->signal_id);
@@ -301,7 +298,7 @@ add_listener(GSignalEmissionHook listener,
(GDestroyNotify) g_free);
listener_info->signal_id = signal_id;
- g_hash_table_insert(listener_list, GINT_TO_POINTER(listener_info->key), listener_info);
+ g_hash_table_insert(listener_list, &(listener_info->key), listener_info);
listener_idx++;
} else {
g_warning("Invalid signal type %s\n", signal);
@@ -418,16 +415,6 @@ jaw_util_get_tflag_from_jobj(JNIEnv *jniEnv, jobject jObj)
jmid = (*jniEnv)->GetMethodID(jniEnv,
classAccessibleContext,
- "getAccessibleTable",
- "()Ljavax/accessibility/AccessibleTableModelChange;");
- iface = (*jniEnv)->CallObjectMethod(jniEnv, ac, jmid);
- if (iface != NULL)
- {
- tflag |= INTERFACE_TABLE_CELL;
- }
-
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
"getAccessibleValue",
"()Ljavax/accessibility/AccessibleValue;");
iface = (*jniEnv)->CallObjectMethod(jniEnv, ac, jmid);
@@ -436,16 +423,6 @@ jaw_util_get_tflag_from_jobj(JNIEnv *jniEnv, jobject jObj)
tflag |= INTERFACE_VALUE;
}
- jmid = (*jniEnv)->GetMethodID(jniEnv,
- classAccessibleContext,
- "getAccessibleComponent",
- "()Ljavax/accessibility/AccessibleComponent;");
- iface = (*jniEnv)->CallObjectMethod(jniEnv, ac, jmid);
- if (iface != NULL)
- {
- tflag |= INTERFACE_WINDOW;
- }
-
return tflag;
}
diff --git a/jni/src/jawutil.h b/jni/src/jawutil.h
index 3095383..fceb182 100644
--- a/jni/src/jawutil.h
+++ b/jni/src/jawutil.h
@@ -25,6 +25,9 @@
G_BEGIN_DECLS
+JavaVM *globalJvm;
+JNIEnv *globalEnv;
+
#define INTERFACE_ACTION 0x00000001
#define INTERFACE_COMPONENT 0x00000002
#define INTERFACE_DOCUMENT 0x00000004
@@ -35,10 +38,8 @@ G_BEGIN_DECLS
#define INTERFACE_SELECTION 0x00000080
#define INTERFACE_STREAMABLE_CONTENT 0x00000100
#define INTERFACE_TABLE 0x00000200
-#define INTERFACE_TABLE_CELL 0x00000400
-#define INTERFACE_TEXT 0x00000800
-#define INTERFACE_VALUE 0x00001000
-#define INTERFACE_WINDOW 0x00002000
+#define INTERFACE_TEXT 0x00000400
+#define INTERFACE_VALUE 0x00000800
#define JAW_TYPE_UTIL (jaw_util_get_type())
#define JAW_UTIL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), JAW_TYPE_UTIL, JawUtil))
diff --git a/wrapper/Makefile.am b/wrapper/Makefile.am
index 5b78e8a..220f3cc 100644
--- a/wrapper/Makefile.am
+++ b/wrapper/Makefile.am
@@ -3,21 +3,13 @@ JARFILES=java-atk-wrapper.jar
ALL_CLASSES=org/GNOME/Accessibility/*.class
DEP_CLASSES=$(wildcard $(ALL_CLASSES))
-if USER
-java_atk_wrapperdir = $(JDK_SRC)/jre/lib/ext
-else
-java_atk_wrapperdir = $(HOME)/.local$(JDK_SRC)/jre/lib/ext
-endif
+java_atk_wrapperdir = $(JAVA_HOME)/lib/ext
java_atk_wrapper_DATA = $(JARFILES)
-if USER
-propertiesdir = $(JDK_SRC)/jre/lib
-else
-propertiesdir = $(HOME)/.local$(JAVA_HOME)/lib
-endif
+EXTRA_DIST = $(properties_DATA)
+propertiesdir = $(JAVA_HOME)/lib
properties_DATA = accessibility.properties
-EXTRA_DIST = $(properties_DATA)
$(JARFILES) : $(DEP_CLASSES)
$(JAR) cf $(JARFILES) $(ALL_CLASSES)
diff --git a/wrapper/org/GNOME/Accessibility/AtkComponent.java
b/wrapper/org/GNOME/Accessibility/AtkComponent.java
index 9431b10..6f36340 100644
--- a/wrapper/org/GNOME/Accessibility/AtkComponent.java
+++ b/wrapper/org/GNOME/Accessibility/AtkComponent.java
@@ -1,7 +1,6 @@
/*
* Java ATK Wrapper for GNOME
* Copyright (C) 2009 Sun Microsystems Inc.
- * Copyright (C) 2015 Magdalen Berns <m berns thismagpie com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -95,6 +94,7 @@ public class AtkComponent {
}
public Rectangle get_extents() {
+ System.out.println(acc_component.getBounds());
return acc_component.getBounds();
}
@@ -121,10 +121,6 @@ public class AtkComponent {
return AtkLayer.CANVAS;
}
- if (role == AccessibleRole.WINDOW) {
- return AtkLayer.WINDOW;
- }
-
return AtkLayer.WIDGET;
}
}
diff --git a/wrapper/org/GNOME/Accessibility/AtkTable.java b/wrapper/org/GNOME/Accessibility/AtkTable.java
index 285f95c..20f773f 100644
--- a/wrapper/org/GNOME/Accessibility/AtkTable.java
+++ b/wrapper/org/GNOME/Accessibility/AtkTable.java
@@ -26,11 +26,10 @@ public class AtkTable {
AccessibleContext ac;
AccessibleTable acc_table;
- public AtkTable (AccessibleContext ac) {
- super();
- this.ac = ac;
- this.acc_table = ac.getAccessibleTable();
- }
+ public AtkTable (AccessibleContext ac) {
+ super();
+ this.acc_table = ac.getAccessibleTable();
+ }
public AccessibleContext ref_at (int row, int column) {
javax.accessibility.Accessible accessible = acc_table.getAccessibleAt(row, column);
@@ -179,13 +178,13 @@ public class AtkTable {
return acc_table.isAccessibleSelected(row, column);
}
- public boolean addColumnSelection (int column) {
- return is_column_selected(column);
- }
+ public boolean add_column_selection (int column) {
+ return false;
+ }
- public boolean addRowSelection (int row) {
- return is_row_selected(row);
- }
+ public boolean add_row_selection (int row) {
+ return false;
+ }
public boolean remove_column_selection (int column) {
return false;
diff --git a/wrapper/org/GNOME/Accessibility/AtkWrapper.java.in
b/wrapper/org/GNOME/Accessibility/AtkWrapper.java.in
index 565fac1..34cbc7c 100644
--- a/wrapper/org/GNOME/Accessibility/AtkWrapper.java.in
+++ b/wrapper/org/GNOME/Accessibility/AtkWrapper.java.in
@@ -449,6 +449,7 @@ public class AtkWrapper {
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY) ) {
boolean isTextEvent = false;
AccessibleRole role = ac.getAccessibleRole();
+ System.out.println(role);
if ((role == AccessibleRole.TEXT) ||
role.toDisplayString(java.util.Locale.US).equalsIgnoreCase("paragraph")) {
isTextEvent = true;
@@ -468,7 +469,7 @@ public class AtkWrapper {
}
} else if( propertyName.equals(AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY) ) {
- emitSignal(ac, AtkSignal.OBJECT_VISIBLE_DATA_CHANGED, null);
+ //emitSignal(ac, AtkSignal.OBJECT_VISIBLE_DATA_CHANGED, null);
}else if( propertyName.equals(AccessibleContext.ACCESSIBLE_ACTION_PROPERTY) ) {
Object[] args = new Object[2];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]