static gint jaw_object_get_index_in_parent (AtkObject *atk_obj) { if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1) { return jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), 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, "getAccessibleIndexInParent", "()I"); jint index = (*jniEnv)->CallIntMethod( jniEnv, ac, jmid ); return (gint)index; }
static AtkObject* jaw_impl_get_parent (AtkObject *atk_obj) { if (jaw_toplevel_get_child_index(JAW_TOPLEVEL(atk_get_root()), atk_obj) != -1) { return ATK_OBJECT(atk_get_root()); } 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, "getAccessibleParent", "()Ljavax/accessibility/Accessible;"); jobject jparent = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid ); if (jparent != NULL ) { jclass classAccessible = (*jniEnv)->FindClass(jniEnv, "javax/accessibility/Accessible" ); jmid = (*jniEnv)->GetMethodID(jniEnv, classAccessible, "getAccessibleContext", "()Ljavax/accessibility/AccessibleContext;"); jobject parent_ac = (*jniEnv)->CallObjectMethod( jniEnv, jparent, jmid ); AtkObject *obj = (AtkObject*) object_table_lookup( jniEnv, parent_ac ); if (obj != NULL ) { return obj; } } return ATK_OBJECT(atk_get_root()); }