コード例 #1
0
static gint
jaw_toplevel_get_index_in_parent (AtkObject *obj)
{
	JawToplevel *jaw_toplevel = JAW_TOPLEVEL(obj);
	gint i = g_list_index(jaw_toplevel->windows, obj);

	return i;
}
コード例 #2
0
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;
}
コード例 #3
0
static gint
jaw_toplevel_get_n_children (AtkObject *obj)
{
	JawToplevel* jaw_toplevel = JAW_TOPLEVEL(obj);
	gint n = g_list_length(jaw_toplevel->windows);

	return n;
}
コード例 #4
0
static void
jaw_toplevel_object_finalize (GObject *obj)
{
	JawToplevel *jaw_toplevel = JAW_TOPLEVEL(obj);
	g_list_free(jaw_toplevel->windows);

	JawToplevelClass *klass = JAW_TOPLEVEL_GET_CLASS(obj);
	G_OBJECT_CLASS(jaw_toplevel_parent_class)->finalize(obj);
}
コード例 #5
0
static AtkObject*
jaw_toplevel_ref_child (AtkObject *obj,
			gint i)
{
	JawToplevel *jaw_toplevel = JAW_TOPLEVEL(obj);
	AtkObject* child = (AtkObject*)g_list_nth_data(
			jaw_toplevel->windows, i);

	g_object_ref(G_OBJECT(child));

	return child;
}
コード例 #6
0
ファイル: jawimpl.c プロジェクト: GNOME/java-atk-wrapper
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());
}
コード例 #7
0
static gboolean
window_close_handler (gpointer p)
{
  CallbackPara *para = (CallbackPara*)p;
  jobject global_ac = para->global_ac;
  gboolean is_toplevel = para->is_toplevel;

  JNIEnv *jniEnv = jaw_util_get_jni_env();
  if (jniEnv == NULL)
  {
    if (jaw_debug)
      g_warning("window_close_handler: env == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (global_ac == NULL)
  {
    if (jaw_debug)
      g_warning("window_close_handler: global_ac == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }
  JawImpl *jaw_impl = jaw_impl_find_instance(jniEnv, global_ac);
  if (jaw_impl == NULL)
  {
    if (jaw_debug)
      g_warning("window_close_handler: jaw_impl == NULL");
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  AtkObject* atk_obj = ATK_OBJECT(jaw_impl);

  if (!g_strcmp0(atk_role_get_name(atk_object_get_role(atk_obj)), "redundant object"))
  {
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (atk_object_get_role(atk_obj) == ATK_ROLE_TOOL_TIP)
  {
    free_callback_para(para);
    return G_SOURCE_REMOVE;
  }

  if (is_toplevel) {
    gint n = jaw_toplevel_remove_window(JAW_TOPLEVEL(atk_get_root()), atk_obj);

    g_object_notify(G_OBJECT(atk_get_root()), "accessible-name");

    g_signal_emit_by_name(ATK_OBJECT(atk_get_root()),
                          "children-changed::remove",
                          n,
                          atk_obj,
                          NULL);

    g_signal_emit_by_name(atk_obj, "destroy", 0);
  }

  free_callback_para(para);

  return G_SOURCE_REMOVE;
}