|
Packit |
ffe0d2 |
/*
|
|
Packit |
ffe0d2 |
* Java ATK Wrapper for GNOME
|
|
Packit |
ffe0d2 |
* Copyright (C) 2009 Sun Microsystems Inc.
|
|
Packit |
ffe0d2 |
*
|
|
Packit |
ffe0d2 |
* This library is free software; you can redistribute it and/or
|
|
Packit |
ffe0d2 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
ffe0d2 |
* License as published by the Free Software Foundation; either
|
|
Packit |
ffe0d2 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
ffe0d2 |
*
|
|
Packit |
ffe0d2 |
* This library is distributed in the hope that it will be useful,
|
|
Packit |
ffe0d2 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
ffe0d2 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
ffe0d2 |
* Lesser General Public License for more details.
|
|
Packit |
ffe0d2 |
*
|
|
Packit |
ffe0d2 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
ffe0d2 |
* License along with this library; if not, write to the Free Software
|
|
Packit |
ffe0d2 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
ffe0d2 |
*/
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
#include <atk/atk.h>
|
|
Packit |
ffe0d2 |
#include <glib.h>
|
|
Packit |
ffe0d2 |
#include "jawimpl.h"
|
|
Packit |
ffe0d2 |
#include "jawutil.h"
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
extern void jaw_text_interface_init(AtkTextIface*);
|
|
Packit |
ffe0d2 |
extern gpointer jaw_text_data_init(jobject);
|
|
Packit |
ffe0d2 |
extern void jaw_text_data_finalize(gpointer);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar* jaw_text_get_text(AtkText *text,
|
|
Packit |
ffe0d2 |
gint start_offset,
|
|
Packit |
ffe0d2 |
gint end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gunichar jaw_text_get_character_at_offset(AtkText *text, gint offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar* jaw_text_get_text_after_offset(AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
AtkTextBoundary boundary_type,
|
|
Packit |
ffe0d2 |
gint *start_offset,
|
|
Packit |
ffe0d2 |
gint *end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar* jaw_text_get_text_at_offset(AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
AtkTextBoundary boundary_type,
|
|
Packit |
ffe0d2 |
gint *start_offset,
|
|
Packit |
ffe0d2 |
gint *end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar* jaw_text_get_text_before_offset(AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
AtkTextBoundary boundary_type,
|
|
Packit |
ffe0d2 |
gint *start_offset,
|
|
Packit |
ffe0d2 |
gint *end_offset);
|
|
Packit |
ffe0d2 |
static gint jaw_text_get_caret_offset(AtkText *text);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static void jaw_text_get_character_extents(AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
gint *x,
|
|
Packit |
ffe0d2 |
gint *y,
|
|
Packit |
ffe0d2 |
gint *width,
|
|
Packit |
ffe0d2 |
gint *height,
|
|
Packit |
ffe0d2 |
AtkCoordType coords);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint jaw_text_get_character_count(AtkText *text);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint jaw_text_get_offset_at_point(AtkText *text,
|
|
Packit |
ffe0d2 |
gint x,
|
|
Packit |
ffe0d2 |
gint y,
|
|
Packit |
ffe0d2 |
AtkCoordType coords);
|
|
Packit |
ffe0d2 |
static void jaw_text_get_range_extents(AtkText *text,
|
|
Packit |
ffe0d2 |
gint start_offset,
|
|
Packit |
ffe0d2 |
gint end_offset,
|
|
Packit |
ffe0d2 |
AtkCoordType coord_type,
|
|
Packit |
ffe0d2 |
AtkTextRectangle *rect);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint jaw_text_get_n_selections(AtkText *text);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar* jaw_text_get_selection(AtkText *text,
|
|
Packit |
ffe0d2 |
gint selection_num,
|
|
Packit |
ffe0d2 |
gint *start_offset,
|
|
Packit |
ffe0d2 |
gint *end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean jaw_text_add_selection(AtkText *text,
|
|
Packit |
ffe0d2 |
gint start_offset,
|
|
Packit |
ffe0d2 |
gint end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean jaw_text_remove_selection(AtkText *text, gint selection_num);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean jaw_text_set_selection(AtkText *text,
|
|
Packit |
ffe0d2 |
gint selection_num,
|
|
Packit |
ffe0d2 |
gint start_offset,
|
|
Packit |
ffe0d2 |
gint end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean jaw_text_set_caret_offset(AtkText *text, gint offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
typedef struct _TextData {
|
|
Packit |
ffe0d2 |
jobject atk_text;
|
|
Packit |
ffe0d2 |
gchar* text;
|
|
Packit |
ffe0d2 |
jstring jstrText;
|
|
Packit |
ffe0d2 |
}TextData;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
void
|
|
Packit |
ffe0d2 |
jaw_text_interface_init (AtkTextIface *iface)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
iface->get_text = jaw_text_get_text;
|
|
Packit |
ffe0d2 |
iface->get_character_at_offset = jaw_text_get_character_at_offset;
|
|
Packit |
ffe0d2 |
iface->get_text_after_offset = jaw_text_get_text_after_offset;
|
|
Packit |
ffe0d2 |
iface->get_text_at_offset = jaw_text_get_text_at_offset;
|
|
Packit |
ffe0d2 |
iface->get_text_before_offset = jaw_text_get_text_before_offset;
|
|
Packit |
ffe0d2 |
iface->get_caret_offset = jaw_text_get_caret_offset;
|
|
Packit |
ffe0d2 |
iface->get_character_extents = jaw_text_get_character_extents;
|
|
Packit |
ffe0d2 |
iface->get_character_count = jaw_text_get_character_count;
|
|
Packit |
ffe0d2 |
iface->get_offset_at_point = jaw_text_get_offset_at_point;
|
|
Packit |
ffe0d2 |
iface->get_range_extents = jaw_text_get_range_extents;
|
|
Packit |
ffe0d2 |
iface->get_n_selections = jaw_text_get_n_selections;
|
|
Packit |
ffe0d2 |
iface->get_selection = jaw_text_get_selection;
|
|
Packit |
ffe0d2 |
iface->add_selection = jaw_text_add_selection;
|
|
Packit |
ffe0d2 |
iface->remove_selection = jaw_text_remove_selection;
|
|
Packit |
ffe0d2 |
iface->set_selection = jaw_text_set_selection;
|
|
Packit |
ffe0d2 |
iface->set_caret_offset = jaw_text_set_caret_offset;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
gpointer
|
|
Packit |
ffe0d2 |
jaw_text_data_init (jobject ac)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
TextData *data = g_new0(TextData, 1);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classText,
|
|
Packit |
ffe0d2 |
"<init>",
|
|
Packit |
ffe0d2 |
"(Ljavax/accessibility/AccessibleContext;)V");
|
|
Packit |
ffe0d2 |
jobject jatk_text = (*jniEnv)->NewObject(jniEnv, classText, jmid, ac);
|
|
Packit |
ffe0d2 |
data->atk_text = (*jniEnv)->NewGlobalRef(jniEnv, jatk_text);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return data;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
void
|
|
Packit |
ffe0d2 |
jaw_text_data_finalize (gpointer p)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
TextData *data = (TextData*)p;
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (data && data->atk_text)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
if (data->text != NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, data->jstrText, data->text);
|
|
Packit |
ffe0d2 |
(*jniEnv)->DeleteGlobalRef(jniEnv, data->jstrText);
|
|
Packit |
ffe0d2 |
data->jstrText = NULL;
|
|
Packit |
ffe0d2 |
data->text = NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
(*jniEnv)->DeleteGlobalRef(jniEnv, data->atk_text);
|
|
Packit |
ffe0d2 |
data->atk_text = NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar*
|
|
Packit |
ffe0d2 |
jaw_text_get_gtext_from_jstr (JNIEnv *jniEnv, TextData *data, jstring jstr)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
if (jstr == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
gchar* tmp_text = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, jstr, NULL);
|
|
Packit |
ffe0d2 |
gchar* text = g_strdup(tmp_text);
|
|
Packit |
ffe0d2 |
(*jniEnv)->ReleaseStringUTFChars(jniEnv, jstr, tmp_text);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return text;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar*
|
|
Packit |
ffe0d2 |
jaw_text_get_text (AtkText *text, gint start_offset, gint end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_text",
|
|
Packit |
ffe0d2 |
"(II)Ljava/lang/String;");
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jstring jstr = (*jniEnv)->CallObjectMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)start_offset,
|
|
Packit |
ffe0d2 |
(jint)end_offset );
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return jaw_text_get_gtext_from_jstr(jniEnv, data, jstr);
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gunichar
|
|
Packit |
ffe0d2 |
jaw_text_get_character_at_offset (AtkText *text, gint offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_character_at_offset", "(I)C");
|
|
Packit |
ffe0d2 |
jchar jcharacter = (*jniEnv)->CallCharMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)offset );
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return (gunichar)jcharacter;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar*
|
|
Packit |
ffe0d2 |
jaw_text_get_text_after_offset (AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
AtkTextBoundary boundary_type,
|
|
Packit |
ffe0d2 |
gint *start_offset,
|
|
Packit |
ffe0d2 |
gint *end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_text_after_offset",
|
|
Packit |
ffe0d2 |
"(II)Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
|
Packit |
ffe0d2 |
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)offset,
|
|
Packit |
ffe0d2 |
(jint)boundary_type );
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jStrSeq == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jclass classStringSeq = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText$StringSequence");
|
|
Packit |
ffe0d2 |
jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"str",
|
|
Packit |
ffe0d2 |
"Ljava/lang/String;");
|
|
Packit |
ffe0d2 |
jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"start_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"end_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
|
|
Packit |
ffe0d2 |
jint jStart = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
|
|
Packit |
ffe0d2 |
jint jEnd = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
(*start_offset) = (gint)jStart;
|
|
Packit |
ffe0d2 |
(*end_offset) = (gint)jEnd;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return jaw_text_get_gtext_from_jstr(jniEnv, data, jStr);
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar*
|
|
Packit |
ffe0d2 |
jaw_text_get_text_at_offset (AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
AtkTextBoundary boundary_type,
|
|
Packit |
ffe0d2 |
gint *start_offset, gint *end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_text_at_offset",
|
|
Packit |
ffe0d2 |
"(II)Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
|
Packit |
ffe0d2 |
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)offset,
|
|
Packit |
ffe0d2 |
(jint)boundary_type );
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jStrSeq == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jclass classStringSeq = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText$StringSequence");
|
|
Packit |
ffe0d2 |
jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"str",
|
|
Packit |
ffe0d2 |
"Ljava/lang/String;");
|
|
Packit |
ffe0d2 |
jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"start_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"end_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
|
|
Packit |
ffe0d2 |
jint jStart = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
|
|
Packit |
ffe0d2 |
jint jEnd = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
(*start_offset) = (gint)jStart;
|
|
Packit |
ffe0d2 |
(*end_offset) = (gint)jEnd;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return jaw_text_get_gtext_from_jstr(jniEnv, data, jStr);
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar*
|
|
Packit |
ffe0d2 |
jaw_text_get_text_before_offset(AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset,
|
|
Packit |
ffe0d2 |
AtkTextBoundary boundary_type,
|
|
Packit |
ffe0d2 |
gint *start_offset,
|
|
Packit |
ffe0d2 |
gint *end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_text_before_offset",
|
|
Packit |
ffe0d2 |
"(II)Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
|
Packit |
ffe0d2 |
jobject jStrSeq = (*jniEnv)->CallObjectMethod( jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)offset,
|
|
Packit |
ffe0d2 |
(jint)boundary_type );
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jStrSeq == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jclass classStringSeq = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText$StringSequence");
|
|
Packit |
ffe0d2 |
jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"str",
|
|
Packit |
ffe0d2 |
"Ljava/lang/String;");
|
|
Packit |
ffe0d2 |
jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"start_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"end_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
|
|
Packit |
ffe0d2 |
jint jStart = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
|
|
Packit |
ffe0d2 |
jint jEnd = (*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
(*start_offset) = (gint)jStart;
|
|
Packit |
ffe0d2 |
(*end_offset) = (gint)jEnd;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return jaw_text_get_gtext_from_jstr(jniEnv, data, jStr);
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint
|
|
Packit |
ffe0d2 |
jaw_text_get_caret_offset (AtkText *text)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_caret_offset",
|
|
Packit |
ffe0d2 |
"()I");
|
|
Packit |
ffe0d2 |
jint joffset = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return (gint)joffset;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static void
|
|
Packit |
ffe0d2 |
jaw_text_get_character_extents (AtkText *text,
|
|
Packit |
ffe0d2 |
gint offset, gint *x, gint *y,
|
|
Packit |
ffe0d2 |
gint *width, gint *height,
|
|
Packit |
ffe0d2 |
AtkCoordType coords)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_character_extents",
|
|
Packit |
ffe0d2 |
"(II)Ljava/awt/Rectangle;");
|
|
Packit |
ffe0d2 |
jobject jrect = (*jniEnv)->CallObjectMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)offset,
|
|
Packit |
ffe0d2 |
(jint)coords);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jrect == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jaw_util_get_rect_info(jniEnv, jrect, x, y, width, height);
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint
|
|
Packit |
ffe0d2 |
jaw_text_get_character_count (AtkText *text)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_character_count",
|
|
Packit |
ffe0d2 |
"()I");
|
|
Packit |
ffe0d2 |
jint jcount = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return (gint)jcount;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint
|
|
Packit |
ffe0d2 |
jaw_text_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coords)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_offset_at_point",
|
|
Packit |
ffe0d2 |
"(III)I");
|
|
Packit |
ffe0d2 |
jint joffset = (*jniEnv)->CallIntMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)x,
|
|
Packit |
ffe0d2 |
(jint)y,
|
|
Packit |
ffe0d2 |
(jint)coords);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return (gint)joffset;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static void
|
|
Packit |
ffe0d2 |
jaw_text_get_range_extents (AtkText *text,
|
|
Packit |
ffe0d2 |
gint start_offset,
|
|
Packit |
ffe0d2 |
gint end_offset,
|
|
Packit |
ffe0d2 |
AtkCoordType coord_type,
|
|
Packit |
ffe0d2 |
AtkTextRectangle *rect)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
if (rect == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_range_extents",
|
|
Packit |
ffe0d2 |
"(III)Ljava/awt/Rectangle;");
|
|
Packit |
ffe0d2 |
jobject jrect = (*jniEnv)->CallObjectMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)start_offset,
|
|
Packit |
ffe0d2 |
(jint)end_offset,
|
|
Packit |
ffe0d2 |
(jint)coord_type);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (!jrect)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jaw_util_get_rect_info(jniEnv, jrect, &(rect->x), &(rect->y), &(rect->width), &(rect->height));
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gint
|
|
Packit |
ffe0d2 |
jaw_text_get_n_selections (AtkText *text)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_n_selections",
|
|
Packit |
ffe0d2 |
"()I");
|
|
Packit |
ffe0d2 |
jint jselections = (*jniEnv)->CallIntMethod(jniEnv, atk_text, jmid);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return (gint)jselections;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gchar*
|
|
Packit |
ffe0d2 |
jaw_text_get_selection (AtkText *text, gint selection_num, gint *start_offset, gint *end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"get_selection",
|
|
Packit |
ffe0d2 |
"()Lorg/GNOME/Accessibility/AtkText$StringSequence;");
|
|
Packit |
ffe0d2 |
jobject jStrSeq = (*jniEnv)->CallObjectMethod(jniEnv, atk_text, jmid);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jStrSeq == NULL)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return NULL;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jclass classStringSeq = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText$StringSequence");
|
|
Packit |
ffe0d2 |
jfieldID jfidStr = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"str",
|
|
Packit |
ffe0d2 |
"Ljava/lang/String;");
|
|
Packit |
ffe0d2 |
jfieldID jfidStart = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"start_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
jfieldID jfidEnd = (*jniEnv)->GetFieldID(jniEnv,
|
|
Packit |
ffe0d2 |
classStringSeq,
|
|
Packit |
ffe0d2 |
"end_offset",
|
|
Packit |
ffe0d2 |
"I");
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
jstring jStr = (*jniEnv)->GetObjectField(jniEnv, jStrSeq, jfidStr);
|
|
Packit |
ffe0d2 |
*start_offset = (gint)(*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidStart);
|
|
Packit |
ffe0d2 |
*end_offset = (gint)(*jniEnv)->GetIntField(jniEnv, jStrSeq, jfidEnd);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
return jaw_text_get_gtext_from_jstr(jniEnv, data, jStr);
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean
|
|
Packit |
ffe0d2 |
jaw_text_add_selection (AtkText *text, gint start_offset, gint end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"add_selection",
|
|
Packit |
ffe0d2 |
"(II)Z");
|
|
Packit |
ffe0d2 |
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)start_offset,
|
|
Packit |
ffe0d2 |
(jint)end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jresult == JNI_TRUE)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return TRUE;
|
|
Packit |
ffe0d2 |
} else {
|
|
Packit |
ffe0d2 |
return FALSE;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean
|
|
Packit |
ffe0d2 |
jaw_text_remove_selection (AtkText *text, gint selection_num)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"remove_selection",
|
|
Packit |
ffe0d2 |
"(I)Z");
|
|
Packit |
ffe0d2 |
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)selection_num);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jresult == JNI_TRUE)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return TRUE;
|
|
Packit |
ffe0d2 |
} else {
|
|
Packit |
ffe0d2 |
return FALSE;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean
|
|
Packit |
ffe0d2 |
jaw_text_set_selection (AtkText *text, gint selection_num, gint start_offset, gint end_offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv, "org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv, classAtkText, "set_selection", "(III)Z");
|
|
Packit |
ffe0d2 |
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)selection_num,
|
|
Packit |
ffe0d2 |
(jint)start_offset,
|
|
Packit |
ffe0d2 |
(jint)end_offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jresult == JNI_TRUE) {
|
|
Packit |
ffe0d2 |
return TRUE;
|
|
Packit |
ffe0d2 |
} else {
|
|
Packit |
ffe0d2 |
return FALSE;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
static gboolean
|
|
Packit |
ffe0d2 |
jaw_text_set_caret_offset (AtkText *text, gint offset)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
JawObject *jaw_obj = JAW_OBJECT(text);
|
|
Packit |
ffe0d2 |
TextData *data = jaw_object_get_interface_data(jaw_obj, INTERFACE_TEXT);
|
|
Packit |
ffe0d2 |
jobject atk_text = data->atk_text;
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
JNIEnv *jniEnv = jaw_util_get_jni_env();
|
|
Packit |
ffe0d2 |
jclass classAtkText = (*jniEnv)->FindClass(jniEnv,
|
|
Packit |
ffe0d2 |
"org/GNOME/Accessibility/AtkText");
|
|
Packit |
ffe0d2 |
jmethodID jmid = (*jniEnv)->GetMethodID(jniEnv,
|
|
Packit |
ffe0d2 |
classAtkText,
|
|
Packit |
ffe0d2 |
"set_caret_offset",
|
|
Packit |
ffe0d2 |
"(I)Z");
|
|
Packit |
ffe0d2 |
jboolean jresult = (*jniEnv)->CallBooleanMethod(jniEnv,
|
|
Packit |
ffe0d2 |
atk_text,
|
|
Packit |
ffe0d2 |
jmid,
|
|
Packit |
ffe0d2 |
(jint)offset);
|
|
Packit |
ffe0d2 |
|
|
Packit |
ffe0d2 |
if (jresult == JNI_TRUE)
|
|
Packit |
ffe0d2 |
{
|
|
Packit |
ffe0d2 |
return TRUE;
|
|
Packit |
ffe0d2 |
} else {
|
|
Packit |
ffe0d2 |
return FALSE;
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
}
|
|
Packit |
ffe0d2 |
|