|
Packit Service |
31d16d |
/*
|
|
Packit Service |
31d16d |
* Java ATK Wrapper for GNOME
|
|
Packit Service |
31d16d |
* Copyright (C) 2009 Sun Microsystems Inc.
|
|
Packit Service |
31d16d |
* Copyright (C) 2015 Magdalen Berns <m.berns@thismagpie.com>
|
|
Packit Service |
31d16d |
*
|
|
Packit Service |
31d16d |
* This library is free software; you can redistribute it and/or
|
|
Packit Service |
31d16d |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit Service |
31d16d |
* License as published by the Free Software Foundation; either
|
|
Packit Service |
31d16d |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit Service |
31d16d |
*
|
|
Packit Service |
31d16d |
* This library is distributed in the hope that it will be useful,
|
|
Packit Service |
31d16d |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
31d16d |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
31d16d |
* Lesser General Public License for more details.
|
|
Packit Service |
31d16d |
*
|
|
Packit Service |
31d16d |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit Service |
31d16d |
* License along with this library; if not, write to the Free Software
|
|
Packit Service |
31d16d |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit Service |
31d16d |
*/
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
#include <atk/atk.h>
|
|
Packit Service |
31d16d |
#include <glib.h>
|
|
Packit Service |
31d16d |
#include "jawobject.h"
|
|
Packit Service |
31d16d |
#include "jawutil.h"
|
|
Packit Service |
31d16d |
#include "jawimpl.h"
|
|
Packit Service |
31d16d |
#include "jawtoplevel.h"
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
#ifdef __cplusplus
|
|
Packit Service |
31d16d |
extern "C" {
|
|
Packit Service |
31d16d |
#endif
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void jaw_object_class_init(JawObjectClass *klass);
|
|
Packit Service |
31d16d |
static void jaw_object_init(JawObject *object);
|
|
Packit Service |
31d16d |
static void jaw_object_initialize(AtkObject *jaw_obj, gpointer data);
|
|
Packit Service |
31d16d |
static void jaw_object_dispose(GObject *gobject);
|
|
Packit Service |
31d16d |
static void jaw_object_finalize(GObject *gobject);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
/* AtkObject */
|
|
Packit Service |
31d16d |
static const gchar* jaw_object_get_name(AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
static const gchar* jaw_object_get_description(AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static gint jaw_object_get_n_children(AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static gint jaw_object_get_index_in_parent(AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static AtkRole jaw_object_get_role(AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
static AtkStateSet* jaw_object_ref_state_set(AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
static AtkObject* jaw_object_get_parent(AtkObject *obj);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name);
|
|
Packit Service |
31d16d |
static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description);
|
|
Packit Service |
31d16d |
static void jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent);
|
|
Packit Service |
31d16d |
static void jaw_object_set_role (AtkObject *atk_obj, AtkRole role);
|
|
Packit Service |
31d16d |
static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
static AtkRelationSet *jaw_object_ref_relation_set (AtkObject *atk_obj);
|
|
Packit Service |
31d16d |
static AtkObject *jaw_object_ref_child(AtkObject *atk_obj, gint i);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static gpointer parent_class = NULL;
|
|
Packit Service |
31d16d |
static GHashTable *object_table = NULL;
|
|
Packit Service |
31d16d |
static JawObject* jaw_object_table_lookup (JNIEnv *jniEnv, jobject ac);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
enum {
|
|
Packit Service |
31d16d |
ACTIVATE,
|
|
Packit Service |
31d16d |
CREATE,
|
|
Packit Service |
31d16d |
DEACTIVATE,
|
|
Packit Service |
31d16d |
DESTROY,
|
|
Packit Service |
31d16d |
MAXIMIZE,
|
|
Packit Service |
31d16d |
MINIMIZE,
|
|
Packit Service |
31d16d |
MOVE,
|
|
Packit Service |
31d16d |
RESIZE,
|
|
Packit Service |
31d16d |
RESTORE,
|
|
Packit Service |
31d16d |
LAST_SIGNAL
|
|
Packit Service |
31d16d |
};
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static guint jaw_window_signals[LAST_SIGNAL] = { 0, };
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
G_DEFINE_TYPE (JawObject, jaw_object, ATK_TYPE_OBJECT);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static guint
|
|
Packit Service |
31d16d |
jaw_window_add_signal (const gchar *name, JawObjectClass *klass)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
return g_signal_new (name,
|
|
Packit Service |
31d16d |
G_TYPE_FROM_CLASS(klass),
|
|
Packit Service |
31d16d |
G_SIGNAL_RUN_LAST,
|
|
Packit Service |
31d16d |
0,
|
|
Packit Service |
31d16d |
(GSignalAccumulator) NULL, NULL,
|
|
Packit Service |
31d16d |
g_cclosure_marshal_VOID__VOID,
|
|
Packit Service |
31d16d |
G_TYPE_NONE,
|
|
Packit Service |
31d16d |
0);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_class_init (JawObjectClass *klass)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
|
|
Packit Service |
31d16d |
gobject_class->dispose = jaw_object_dispose;
|
|
Packit Service |
31d16d |
gobject_class->finalize = jaw_object_finalize;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
|
|
Packit Service |
31d16d |
parent_class = g_type_class_peek_parent (klass);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
atk_class->get_name = jaw_object_get_name;
|
|
Packit Service |
31d16d |
atk_class->set_name = jaw_object_set_name;
|
|
Packit Service |
31d16d |
atk_class->get_description = jaw_object_get_description;
|
|
Packit Service |
31d16d |
atk_class->set_description = jaw_object_set_description;
|
|
Packit Service |
31d16d |
atk_class->get_n_children = jaw_object_get_n_children;
|
|
Packit Service |
31d16d |
atk_class->get_index_in_parent = jaw_object_get_index_in_parent;
|
|
Packit Service |
31d16d |
atk_class->get_role = jaw_object_get_role;
|
|
Packit Service |
31d16d |
atk_class->get_parent = jaw_object_get_parent;
|
|
Packit Service |
31d16d |
atk_class->set_parent = jaw_object_set_parent;
|
|
Packit Service |
31d16d |
atk_class->set_role = jaw_object_set_role;
|
|
Packit Service |
31d16d |
atk_class->get_object_locale = jaw_object_get_object_locale;
|
|
Packit Service |
31d16d |
atk_class->ref_relation_set = jaw_object_ref_relation_set;
|
|
Packit Service |
31d16d |
atk_class->ref_child = jaw_object_ref_child;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
atk_class->ref_state_set = jaw_object_ref_state_set;
|
|
Packit Service |
31d16d |
atk_class->initialize = jaw_object_initialize;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jaw_window_signals[ACTIVATE] = jaw_window_add_signal ("activate", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[CREATE] = jaw_window_add_signal ("create", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[DEACTIVATE] = jaw_window_add_signal ("deactivate", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[DESTROY] = jaw_window_add_signal ("destroy", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[MAXIMIZE] = jaw_window_add_signal ("maximize", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[MINIMIZE] = jaw_window_add_signal ("minimize", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[MOVE] = jaw_window_add_signal ("move", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[RESIZE] = jaw_window_add_signal ("resize", klass);
|
|
Packit Service |
31d16d |
jaw_window_signals[RESTORE] = jaw_window_add_signal ("restore", klass);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
klass->get_interface_data = NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_initialize(AtkObject *atk_obj, gpointer data)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
ATK_OBJECT_CLASS (jaw_object_parent_class)->initialize(atk_obj, data);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
gpointer
|
|
Packit Service |
31d16d |
jaw_object_get_interface_data (JawObject *jaw_obj, guint iface)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObjectClass *klass = JAW_OBJECT_GET_CLASS(jaw_obj);
|
|
Packit Service |
31d16d |
if (klass->get_interface_data)
|
|
Packit Service |
31d16d |
return klass->get_interface_data(jaw_obj, iface);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_init (JawObject *object)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
AtkObject *atk_obj = ATK_OBJECT(object);
|
|
Packit Service |
31d16d |
atk_obj->description = NULL;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
object->state_set = atk_state_set_new();
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_dispose (GObject *gobject)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
/* Customized dispose code */
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
/* Chain up to parent's dispose method */
|
|
Packit Service |
31d16d |
G_OBJECT_CLASS(jaw_object_parent_class)->dispose(gobject);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_finalize (GObject *gobject)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
/* Customized finalize code */
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(gobject);
|
|
Packit Service |
31d16d |
AtkObject *atk_obj = ATK_OBJECT(gobject);
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (atk_obj->name != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
|
|
Packit Service |
31d16d |
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
|
|
Packit Service |
31d16d |
jaw_obj->jstrName = NULL;
|
|
Packit Service |
31d16d |
atk_obj->name = NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (atk_obj->description != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
(*jniEnv)->ReleaseStringUTFChars(jniEnv,
|
|
Packit Service |
31d16d |
jaw_obj->jstrDescription,
|
|
Packit Service |
31d16d |
atk_obj->description);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
|
|
Packit Service |
31d16d |
jaw_obj->jstrDescription = NULL;
|
|
Packit Service |
31d16d |
atk_obj->description = NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (G_OBJECT(jaw_obj->state_set) != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
g_object_unref(G_OBJECT(jaw_obj->state_set));
|
|
Packit Service |
31d16d |
/* Chain up to parent's finalize method */
|
|
Packit Service |
31d16d |
G_OBJECT_CLASS(jaw_object_parent_class)->finalize(gobject);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static AtkObject* jaw_object_get_parent(AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
return ATK_OBJECT(atk_get_root());
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleParent",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleContext;");
|
|
Packit Service |
31d16d |
jobject jparent = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
if (jparent != NULL )
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jclass classAccessible = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/Accessible" );
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessible,
|
|
Packit Service |
31d16d |
"getAccessibleContext",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleContext;");
|
|
Packit Service |
31d16d |
jobject parent_ac = (*jniEnv)->CallObjectMethod(jniEnv, jparent, jmid);
|
|
Packit Service |
31d16d |
AtkObject *parent_obj = (AtkObject*) jaw_object_table_lookup( jniEnv, parent_ac );
|
|
Packit Service |
31d16d |
if (parent_obj != NULL )
|
|
Packit Service |
31d16d |
return parent_obj;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
return ATK_OBJECT(atk_get_root());
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_set_parent(AtkObject *atk_obj, AtkObject *parent)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"setAccessibleParent",
|
|
Packit Service |
31d16d |
"(Ljavax/accessibility/AccessibleContext;)");
|
|
Packit Service |
31d16d |
jobject jparent = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
if (jparent != NULL )
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jclass classAccessible = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/Accessible" );
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessible,
|
|
Packit Service |
31d16d |
"getAccessibleContext",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleContext;");
|
|
Packit Service |
31d16d |
jobject parent_ac = (*jniEnv)->CallObjectMethod(jniEnv, jparent, jmid);
|
|
Packit Service |
31d16d |
AtkObject *parent_obj = (AtkObject*) jaw_object_table_lookup( jniEnv, parent_ac );
|
|
Packit Service |
31d16d |
if (parent_obj == NULL)
|
|
Packit Service |
31d16d |
return;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static const gchar*
|
|
Packit Service |
31d16d |
jaw_object_get_name (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
atk_obj->name = (gchar *)ATK_OBJECT_CLASS (parent_class)->get_name (atk_obj);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (atk_object_get_role(atk_obj) == ATK_ROLE_COMBO_BOX &&
|
|
Packit Service |
31d16d |
atk_object_get_n_accessible_children(atk_obj) == 1)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
AtkSelection *selection = ATK_SELECTION(atk_obj);
|
|
Packit Service |
31d16d |
if (selection != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
AtkObject *child = atk_selection_ref_selection(selection, 0);
|
|
Packit Service |
31d16d |
if (child != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
return atk_object_get_name(child);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleName",
|
|
Packit Service |
31d16d |
"()Ljava/lang/String;");
|
|
Packit Service |
31d16d |
jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (atk_obj->name != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
|
|
Packit Service |
31d16d |
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (jstr != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
|
Packit Service |
31d16d |
atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
|
Packit Service |
31d16d |
jaw_obj->jstrName,
|
|
Packit Service |
31d16d |
NULL);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return atk_obj->name;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void jaw_object_set_name (AtkObject *atk_obj, const gchar *name)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
atk_obj->name = (gchar *)ATK_OBJECT_CLASS (parent_class)->get_name (atk_obj);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"setAccessibleName",
|
|
Packit Service |
31d16d |
"(Ljava/lang/String;)");
|
|
Packit Service |
31d16d |
jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (atk_obj->name != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name);
|
|
Packit Service |
31d16d |
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (jstr != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
|
Packit Service |
31d16d |
atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
|
Packit Service |
31d16d |
jaw_obj->jstrName,
|
|
Packit Service |
31d16d |
NULL);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
if (jstr == NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
name = "";
|
|
Packit Service |
31d16d |
return;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static const gchar*
|
|
Packit Service |
31d16d |
jaw_object_get_description (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleDescription",
|
|
Packit Service |
31d16d |
"()Ljava/lang/String;");
|
|
Packit Service |
31d16d |
jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (atk_obj->description != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrDescription, atk_obj->description);
|
|
Packit Service |
31d16d |
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
|
|
Packit Service |
31d16d |
atk_obj->description = NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (jstr != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jaw_obj->jstrDescription = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
|
Packit Service |
31d16d |
atk_obj->description = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
|
Packit Service |
31d16d |
jaw_obj->jstrDescription,
|
|
Packit Service |
31d16d |
NULL);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return atk_obj->description;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void jaw_object_set_description (AtkObject *atk_obj, const gchar *description)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"setAccessibleDescription",
|
|
Packit Service |
31d16d |
"(Ljava/lang/String;)");
|
|
Packit Service |
31d16d |
jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (description != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrDescription, description);
|
|
Packit Service |
31d16d |
(*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrDescription);
|
|
Packit Service |
31d16d |
description = NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (jstr != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jaw_obj->jstrDescription = (*jniEnv)->NewGlobalRef(jniEnv, jstr);
|
|
Packit Service |
31d16d |
description = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv,
|
|
Packit Service |
31d16d |
jaw_obj->jstrDescription,
|
|
Packit Service |
31d16d |
NULL);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
if (jstr != NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
description = "";
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static gint
|
|
Packit Service |
31d16d |
jaw_object_get_n_children (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleChildrenCount",
|
|
Packit Service |
31d16d |
"()I");
|
|
Packit Service |
31d16d |
jint count = (*jniEnv)->CallIntMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return (gint)count;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static gint
|
|
Packit Service |
31d16d |
jaw_object_get_index_in_parent (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
return jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleIndexInParent",
|
|
Packit Service |
31d16d |
"()I");
|
|
Packit Service |
31d16d |
jint index = (*jniEnv)->CallIntMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return (gint)index;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static AtkRole
|
|
Packit Service |
31d16d |
jaw_object_get_role (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
atk_obj->role = jaw_util_get_atk_role_from_jobj(jaw_obj->acc_context);
|
|
Packit Service |
31d16d |
return atk_obj->role;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static void
|
|
Packit Service |
31d16d |
jaw_object_set_role (AtkObject *atk_obj, AtkRole role)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
atk_obj->role = role;
|
|
Packit Service |
31d16d |
if (atk_obj != NULL && atk_obj->role)
|
|
Packit Service |
31d16d |
atk_object_set_role(atk_obj, atk_obj->role);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static AtkStateSet*
|
|
Packit Service |
31d16d |
jaw_object_ref_state_set (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
AtkStateSet* state_set = jaw_obj->state_set;
|
|
Packit Service |
31d16d |
atk_state_set_clear_states( state_set );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleStateSet",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleStateSet;" );
|
|
Packit Service |
31d16d |
jobject jstate_set = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleStateSet = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleStateSet" );
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleStateSet,
|
|
Packit Service |
31d16d |
"toArray",
|
|
Packit Service |
31d16d |
"()[Ljavax/accessibility/AccessibleState;");
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jobjectArray jstate_arr = (*jniEnv)->CallObjectMethod( jniEnv, jstate_set, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jstate_arr);
|
|
Packit Service |
31d16d |
jsize i;
|
|
Packit Service |
31d16d |
for (i = 0; i < jarr_size; i++)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jobject jstate = (*jniEnv)->GetObjectArrayElement( jniEnv, jstate_arr, i );
|
|
Packit Service |
31d16d |
AtkStateType state_type = jaw_util_get_atk_state_type_from_java_state( jniEnv, jstate );
|
|
Packit Service |
31d16d |
atk_state_set_add_state( state_set, state_type );
|
|
Packit Service |
31d16d |
if (state_type == ATK_STATE_ENABLED)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
atk_state_set_add_state( state_set, ATK_STATE_SENSITIVE );
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
if (G_OBJECT(state_set) != NULL)
|
|
Packit Service |
31d16d |
g_object_ref(G_OBJECT(state_set));
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return state_set;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static const gchar *jaw_object_get_object_locale (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getLocale",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleContext;");
|
|
Packit Service |
31d16d |
jobject locale = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
JawImpl *target_obj = jaw_impl_get_instance(jniEnv, locale);
|
|
Packit Service |
31d16d |
if(target_obj == NULL)
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return atk_object_get_object_locale((AtkObject*) target_obj);
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static AtkRelationSet*
|
|
Packit Service |
31d16d |
jaw_object_ref_relation_set (AtkObject *atk_obj)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
if (atk_obj->relation_set)
|
|
Packit Service |
31d16d |
g_object_unref(G_OBJECT(atk_obj->relation_set));
|
|
Packit Service |
31d16d |
atk_obj->relation_set = atk_relation_set_new();
|
|
Packit Service |
31d16d |
if(atk_obj == NULL)
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleRelationSet",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleRelationSet;" );
|
|
Packit Service |
31d16d |
jobject jrel_set = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleRelationSet = (*jniEnv)->FindClass( jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleRelationSet");
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleRelationSet,
|
|
Packit Service |
31d16d |
"toArray",
|
|
Packit Service |
31d16d |
"()[Ljavax/accessibility/AccessibleRelation;");
|
|
Packit Service |
31d16d |
jobjectArray jrel_arr = (*jniEnv)->CallObjectMethod(jniEnv, jrel_set, jmid);
|
|
Packit Service |
31d16d |
jsize jarr_size = (*jniEnv)->GetArrayLength(jniEnv, jrel_arr);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jsize i;
|
|
Packit Service |
31d16d |
for (i = 0; i < jarr_size; i++)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jobject jrel = (*jniEnv)->GetObjectArrayElement(jniEnv, jrel_arr, i);
|
|
Packit Service |
31d16d |
jclass classAccessibleRelation = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleRelation");
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleRelation,
|
|
Packit Service |
31d16d |
"getKey",
|
|
Packit Service |
31d16d |
"()Ljava/lang/String;");
|
|
Packit Service |
31d16d |
jstring jrel_key = (*jniEnv)->CallObjectMethod( jniEnv, jrel, jmid );
|
|
Packit Service |
31d16d |
AtkRelationType rel_type = jaw_impl_get_atk_relation_type(jniEnv, jrel_key);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleRelation,
|
|
Packit Service |
31d16d |
"getTarget",
|
|
Packit Service |
31d16d |
"()[Ljava/lang/Object;");
|
|
Packit Service |
31d16d |
jobjectArray jtarget_arr = (*jniEnv)->CallObjectMethod(jniEnv, jrel, jmid);
|
|
Packit Service |
31d16d |
jsize jtarget_size = (*jniEnv)->GetArrayLength(jniEnv, jtarget_arr);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jsize j;
|
|
Packit Service |
31d16d |
for (j = 0; j < jtarget_size; j++)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jobject jtarget = (*jniEnv)->GetObjectArrayElement(jniEnv, jtarget_arr, j);
|
|
Packit Service |
31d16d |
jclass classAccessible = (*jniEnv)->FindClass( jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/Accessible");
|
|
Packit Service |
31d16d |
if ((*jniEnv)->IsInstanceOf(jniEnv, jtarget, classAccessible))
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessible,
|
|
Packit Service |
31d16d |
"getAccessibleContext",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleContext;");
|
|
Packit Service |
31d16d |
jobject target_ac = (*jniEnv)->CallObjectMethod(jniEnv, jtarget, jmid);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
JawImpl *target_obj = jaw_impl_get_instance(jniEnv, target_ac);
|
|
Packit Service |
31d16d |
if(target_obj == NULL)
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
atk_object_add_relationship(atk_obj, rel_type, ATK_OBJECT(target_obj));
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
if(atk_obj->relation_set == NULL)
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
if (G_OBJECT(atk_obj->relation_set) != NULL)
|
|
Packit Service |
31d16d |
g_object_ref (atk_obj->relation_set);
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return atk_obj->relation_set;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static AtkObject*
|
|
Packit Service |
31d16d |
jaw_object_ref_child(AtkObject *atk_obj, gint i)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
JawObject *jaw_obj = JAW_OBJECT(atk_obj);
|
|
Packit Service |
31d16d |
jobject ac = jaw_obj->acc_context;
|
|
Packit Service |
31d16d |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass(jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"getAccessibleChild",
|
|
Packit Service |
31d16d |
"(I)Ljavax/accessibility/Accessible;" );
|
|
Packit Service |
31d16d |
jobject jchild = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid, i );
|
|
Packit Service |
31d16d |
if (jchild == NULL)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
jclass classAccessible = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/Accessible" );
|
|
Packit Service |
31d16d |
jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessible,
|
|
Packit Service |
31d16d |
"getAccessibleContext",
|
|
Packit Service |
31d16d |
"()Ljavax/accessibility/AccessibleContext;" );
|
|
Packit Service |
31d16d |
jobject child_ac = (*jniEnv)->CallObjectMethod( jniEnv, jchild, jmid );
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
AtkObject *obj = (AtkObject*) jaw_impl_get_instance( jniEnv, child_ac );
|
|
Packit Service |
31d16d |
if (G_OBJECT(obj) != NULL)
|
|
Packit Service |
31d16d |
g_object_ref(G_OBJECT(obj));
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
return obj;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
static JawObject*
|
|
Packit Service |
31d16d |
jaw_object_table_lookup (JNIEnv *jniEnv, jobject ac)
|
|
Packit Service |
31d16d |
{
|
|
Packit Service |
31d16d |
object_table = jaw_impl_get_object_hash_table();
|
|
Packit Service |
31d16d |
jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv,
|
|
Packit Service |
31d16d |
"javax/accessibility/AccessibleContext" );
|
|
Packit Service |
31d16d |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit Service |
31d16d |
classAccessibleContext,
|
|
Packit Service |
31d16d |
"hashCode",
|
|
Packit Service |
31d16d |
"()I" );
|
|
Packit Service |
31d16d |
gint hash_key = (gint)(*jniEnv)->CallIntMethod( jniEnv, ac, jmid );
|
|
Packit Service |
31d16d |
gpointer value = NULL;
|
|
Packit Service |
31d16d |
if (object_table == NULL)
|
|
Packit Service |
31d16d |
return NULL;
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
value = g_hash_table_lookup(object_table, GINT_TO_POINTER(hash_key));
|
|
Packit Service |
31d16d |
return (JawObject*)value;
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
|
|
Packit Service |
31d16d |
#ifdef __cplusplus
|
|
Packit Service |
31d16d |
}
|
|
Packit Service |
31d16d |
#endif
|
|
Packit Service |
31d16d |
|