From 4d90002ec69387785f6476613503d6db0b6b5ed4 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Thu, 17 Aug 2023 12:59:37 +0200 Subject: [PATCH] Simplify native interface of widget implementations Makes it easier to overwrite behavior in subclasses. Have a fallback implementation for ViewGroup. Save some _GET_LONG_FIELD / _SET_LONG_FIELD calls by directly passing the native pointers to and from native methods. --- .../android_opengl_GLSurfaceView.h | 64 +++++-- .../android_view_SurfaceView.h | 56 +++++- .../generated_headers/android_view_View.h | 6 +- .../android_view_ViewGroup.h | 24 +-- .../android_widget_FrameLayout.h | 22 +-- .../android_widget_ImageView.h | 14 +- .../android_widget_LinearLayout.h | 38 ++-- .../android_widget_ProgressBar.h | 171 ------------------ .../android_widget_RelativeLayout.h | 72 ++++++-- .../android_widget_ScrollView.h | 88 ++++++--- .../android_widget_TextView.h | 14 +- src/api-impl-jni/util.c | 3 + src/api-impl-jni/views/android_view_View.c | 4 +- .../views/android_view_ViewGroup.c | 57 +++--- .../widgets/android_opengl_GLSurfaceView.c | 4 +- .../widgets/android_view_SurfaceView.c | 4 +- .../widgets/android_widget_FrameLayout.c | 20 +- .../widgets/android_widget_ImageView.c | 12 +- .../widgets/android_widget_LinearLayout.c | 45 ++--- .../widgets/android_widget_RelativeLayout.c | 23 +-- .../widgets/android_widget_ScrollView.c | 39 +--- .../widgets/android_widget_TextView.c | 16 +- .../android/opengl/GLSurfaceView.java | 16 +- src/api-impl/android/view/SurfaceView.java | 7 +- src/api-impl/android/view/View.java | 24 +-- src/api-impl/android/view/ViewGroup.java | 31 +++- src/api-impl/android/widget/FrameLayout.java | 15 +- src/api-impl/android/widget/ImageView.java | 13 +- src/api-impl/android/widget/LinearLayout.java | 13 +- src/api-impl/android/widget/ProgressBar.java | 7 - .../android/widget/RelativeLayout.java | 13 +- src/api-impl/android/widget/ScrollView.java | 13 +- src/api-impl/android/widget/TextView.java | 8 +- 33 files changed, 403 insertions(+), 553 deletions(-) delete mode 100644 src/api-impl-jni/generated_headers/android_widget_ProgressBar.h diff --git a/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h b/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h index 92fdbc83..918f7aaf 100644 --- a/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h +++ b/src/api-impl-jni/generated_headers/android_opengl_GLSurfaceView.h @@ -149,21 +149,63 @@ extern "C" { #define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L #undef android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK #define android_opengl_GLSurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +#undef android_opengl_GLSurfaceView_STATUS_BAR_HIDDEN +#define android_opengl_GLSurfaceView_STATUS_BAR_HIDDEN 1L +#undef android_opengl_GLSurfaceView_STATUS_BAR_VISIBLE +#define android_opengl_GLSurfaceView_STATUS_BAR_VISIBLE 0L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_FULLSCREEN +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_FULLSCREEN 4L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_HIDE_NAVIGATION +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_IMMERSIVE +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_IMMERSIVE 2048L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LAYOUT_STABLE +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LOW_PROFILE +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_LOW_PROFILE 1L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_VISIBLE +#define android_opengl_GLSurfaceView_SYSTEM_UI_FLAG_VISIBLE 0L +#undef android_opengl_GLSurfaceView_SYSTEM_UI_LAYOUT_FLAGS +#define android_opengl_GLSurfaceView_SYSTEM_UI_LAYOUT_FLAGS 1536L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_CENTER +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_CENTER 4L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_GRAVITY +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_GRAVITY 1L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_INHERIT +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_INHERIT 0L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_TEXT_END +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_TEXT_END 3L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_TEXT_START +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_TEXT_START 2L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_VIEW_END +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_VIEW_END 6L +#undef android_opengl_GLSurfaceView_TEXT_ALIGNMENT_VIEW_START +#define android_opengl_GLSurfaceView_TEXT_ALIGNMENT_VIEW_START 5L +#undef android_opengl_GLSurfaceView_TEXT_DIRECTION_ANY_RTL +#define android_opengl_GLSurfaceView_TEXT_DIRECTION_ANY_RTL 2L +#undef android_opengl_GLSurfaceView_TEXT_DIRECTION_FIRST_STRONG +#define android_opengl_GLSurfaceView_TEXT_DIRECTION_FIRST_STRONG 1L +#undef android_opengl_GLSurfaceView_TEXT_DIRECTION_INHERIT +#define android_opengl_GLSurfaceView_TEXT_DIRECTION_INHERIT 0L +#undef android_opengl_GLSurfaceView_TEXT_DIRECTION_LOCALE +#define android_opengl_GLSurfaceView_TEXT_DIRECTION_LOCALE 5L +#undef android_opengl_GLSurfaceView_TEXT_DIRECTION_LTR +#define android_opengl_GLSurfaceView_TEXT_DIRECTION_LTR 3L +#undef android_opengl_GLSurfaceView_TEXT_DIRECTION_RTL +#define android_opengl_GLSurfaceView_TEXT_DIRECTION_RTL 4L /* * Class: android_opengl_GLSurfaceView * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); - -/* - * Class: android_opengl_GLSurfaceView - * Method: native_constructor - * Signature: (Landroid/content/Context;)V - */ -JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_opengl_GLSurfaceView_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_opengl_GLSurfaceView diff --git a/src/api-impl-jni/generated_headers/android_view_SurfaceView.h b/src/api-impl-jni/generated_headers/android_view_SurfaceView.h index 1f81788b..021ab017 100644 --- a/src/api-impl-jni/generated_headers/android_view_SurfaceView.h +++ b/src/api-impl-jni/generated_headers/android_view_SurfaceView.h @@ -149,13 +149,63 @@ extern "C" { #define android_view_SurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L #undef android_view_SurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK #define android_view_SurfaceView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +#undef android_view_SurfaceView_STATUS_BAR_HIDDEN +#define android_view_SurfaceView_STATUS_BAR_HIDDEN 1L +#undef android_view_SurfaceView_STATUS_BAR_VISIBLE +#define android_view_SurfaceView_STATUS_BAR_VISIBLE 0L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_FULLSCREEN +#define android_view_SurfaceView_SYSTEM_UI_FLAG_FULLSCREEN 4L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_HIDE_NAVIGATION +#define android_view_SurfaceView_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_IMMERSIVE +#define android_view_SurfaceView_SYSTEM_UI_FLAG_IMMERSIVE 2048L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY +#define android_view_SurfaceView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN +#define android_view_SurfaceView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +#define android_view_SurfaceView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_LAYOUT_STABLE +#define android_view_SurfaceView_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_LOW_PROFILE +#define android_view_SurfaceView_SYSTEM_UI_FLAG_LOW_PROFILE 1L +#undef android_view_SurfaceView_SYSTEM_UI_FLAG_VISIBLE +#define android_view_SurfaceView_SYSTEM_UI_FLAG_VISIBLE 0L +#undef android_view_SurfaceView_SYSTEM_UI_LAYOUT_FLAGS +#define android_view_SurfaceView_SYSTEM_UI_LAYOUT_FLAGS 1536L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_CENTER +#define android_view_SurfaceView_TEXT_ALIGNMENT_CENTER 4L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_GRAVITY +#define android_view_SurfaceView_TEXT_ALIGNMENT_GRAVITY 1L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_INHERIT +#define android_view_SurfaceView_TEXT_ALIGNMENT_INHERIT 0L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_TEXT_END +#define android_view_SurfaceView_TEXT_ALIGNMENT_TEXT_END 3L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_TEXT_START +#define android_view_SurfaceView_TEXT_ALIGNMENT_TEXT_START 2L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_VIEW_END +#define android_view_SurfaceView_TEXT_ALIGNMENT_VIEW_END 6L +#undef android_view_SurfaceView_TEXT_ALIGNMENT_VIEW_START +#define android_view_SurfaceView_TEXT_ALIGNMENT_VIEW_START 5L +#undef android_view_SurfaceView_TEXT_DIRECTION_ANY_RTL +#define android_view_SurfaceView_TEXT_DIRECTION_ANY_RTL 2L +#undef android_view_SurfaceView_TEXT_DIRECTION_FIRST_STRONG +#define android_view_SurfaceView_TEXT_DIRECTION_FIRST_STRONG 1L +#undef android_view_SurfaceView_TEXT_DIRECTION_INHERIT +#define android_view_SurfaceView_TEXT_DIRECTION_INHERIT 0L +#undef android_view_SurfaceView_TEXT_DIRECTION_LOCALE +#define android_view_SurfaceView_TEXT_DIRECTION_LOCALE 5L +#undef android_view_SurfaceView_TEXT_DIRECTION_LTR +#define android_view_SurfaceView_TEXT_DIRECTION_LTR 3L +#undef android_view_SurfaceView_TEXT_DIRECTION_RTL +#define android_view_SurfaceView_TEXT_DIRECTION_RTL 4L /* * Class: android_view_SurfaceView * Method: native_constructor - * Signature: (Landroid/content/Context;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_view_SurfaceView_native_1constructor - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_view_SurfaceView_native_1constructor + (JNIEnv *, jobject, jobject, jobject); #ifdef __cplusplus } diff --git a/src/api-impl-jni/generated_headers/android_view_View.h b/src/api-impl-jni/generated_headers/android_view_View.h index 4b0dd984..193c9a3d 100644 --- a/src/api-impl-jni/generated_headers/android_view_View.h +++ b/src/api-impl-jni/generated_headers/android_view_View.h @@ -242,10 +242,10 @@ JNIEXPORT jint JNICALL Java_android_view_View_getHeight /* * Class: android_view_View * Method: native_constructor - * Signature: (Landroid/content/Context;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_view_View_native_1constructor - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_view_View_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_view_View diff --git a/src/api-impl-jni/generated_headers/android_view_ViewGroup.h b/src/api-impl-jni/generated_headers/android_view_ViewGroup.h index fe825913..f9c96fec 100644 --- a/src/api-impl-jni/generated_headers/android_view_ViewGroup.h +++ b/src/api-impl-jni/generated_headers/android_view_ViewGroup.h @@ -201,27 +201,27 @@ extern "C" { #define android_view_ViewGroup_TEXT_DIRECTION_RTL 4L /* * Class: android_view_ViewGroup - * Method: addView - * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + * Method: native_constructor + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_view_ViewGroup_addView - (JNIEnv *, jobject, jobject, jint, jobject); +JNIEXPORT jlong JNICALL Java_android_view_ViewGroup_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_view_ViewGroup - * Method: removeView - * Signature: (Landroid/view/View;)V + * Method: native_addView + * Signature: (JJILandroid/view/ViewGroup/LayoutParams;)V */ -JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeView - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL Java_android_view_ViewGroup_native_1addView + (JNIEnv *, jobject, jlong, jlong, jint, jobject); /* * Class: android_view_ViewGroup - * Method: removeAllViews - * Signature: ()V + * Method: native_removeView + * Signature: (JJ)V */ -JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeAllViews - (JNIEnv *, jobject); +JNIEXPORT void JNICALL Java_android_view_ViewGroup_native_1removeView + (JNIEnv *, jobject, jlong, jlong); #ifdef __cplusplus } diff --git a/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h b/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h index 2ab79984..98241d04 100644 --- a/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h +++ b/src/api-impl-jni/generated_headers/android_widget_FrameLayout.h @@ -202,26 +202,26 @@ extern "C" { /* * Class: android_widget_FrameLayout * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_widget_FrameLayout_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_widget_FrameLayout - * Method: native_constructor - * Signature: (Landroid/content/Context;)V + * Method: native_addView + * Signature: (JJILandroid/view/ViewGroup/LayoutParams;)V */ -JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1addView + (JNIEnv *, jobject, jlong, jlong, jint, jobject); /* * Class: android_widget_FrameLayout - * Method: addView - * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + * Method: native_removeView + * Signature: (JJ)V */ -JNIEXPORT void JNICALL Java_android_widget_FrameLayout_addView - (JNIEnv *, jobject, jobject, jint, jobject); +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1removeView + (JNIEnv *, jobject, jlong, jlong); #ifdef __cplusplus } diff --git a/src/api-impl-jni/generated_headers/android_widget_ImageView.h b/src/api-impl-jni/generated_headers/android_widget_ImageView.h index ef7845d0..17742fb8 100644 --- a/src/api-impl-jni/generated_headers/android_widget_ImageView.h +++ b/src/api-impl-jni/generated_headers/android_widget_ImageView.h @@ -202,18 +202,10 @@ extern "C" { /* * Class: android_widget_ImageView * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); - -/* - * Class: android_widget_ImageView - * Method: native_constructor - * Signature: (Landroid/content/Context;)V - */ -JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_widget_ImageView_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_widget_ImageView diff --git a/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h b/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h index cc3731bd..385ac9fd 100644 --- a/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h +++ b/src/api-impl-jni/generated_headers/android_widget_LinearLayout.h @@ -202,42 +202,26 @@ extern "C" { /* * Class: android_widget_LinearLayout * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_widget_LinearLayout_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_widget_LinearLayout - * Method: native_constructor - * Signature: (Landroid/content/Context;)V + * Method: native_addView + * Signature: (JJILandroid/view/ViewGroup/LayoutParams;)V */ -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1addView + (JNIEnv *, jobject, jlong, jlong, jint, jobject); /* * Class: android_widget_LinearLayout - * Method: addView - * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + * Method: native_removeView + * Signature: (JJ)V */ -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_addView - (JNIEnv *, jobject, jobject, jint, jobject); - -/* - * Class: android_widget_LinearLayout - * Method: removeView - * Signature: (Landroid/view/View;)V - */ -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeView - (JNIEnv *, jobject, jobject); - -/* - * Class: android_widget_LinearLayout - * Method: removeAllViews - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeAllViews - (JNIEnv *, jobject); +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1removeView + (JNIEnv *, jobject, jlong, jlong); /* * Class: android_widget_LinearLayout diff --git a/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h b/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h deleted file mode 100644 index ab4bc5bb..00000000 --- a/src/api-impl-jni/generated_headers/android_widget_ProgressBar.h +++ /dev/null @@ -1,171 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class android_widget_ProgressBar */ - -#ifndef _Included_android_widget_ProgressBar -#define _Included_android_widget_ProgressBar -#ifdef __cplusplus -extern "C" { -#endif -#undef android_widget_ProgressBar_NO_ID -#define android_widget_ProgressBar_NO_ID -1L -#undef android_widget_ProgressBar_NOT_FOCUSABLE -#define android_widget_ProgressBar_NOT_FOCUSABLE 0L -#undef android_widget_ProgressBar_FOCUSABLE -#define android_widget_ProgressBar_FOCUSABLE 1L -#undef android_widget_ProgressBar_FOCUSABLE_MASK -#define android_widget_ProgressBar_FOCUSABLE_MASK 1L -#undef android_widget_ProgressBar_FITS_SYSTEM_WINDOWS -#define android_widget_ProgressBar_FITS_SYSTEM_WINDOWS 2L -#undef android_widget_ProgressBar_VISIBLE -#define android_widget_ProgressBar_VISIBLE 0L -#undef android_widget_ProgressBar_INVISIBLE -#define android_widget_ProgressBar_INVISIBLE 4L -#undef android_widget_ProgressBar_GONE -#define android_widget_ProgressBar_GONE 8L -#undef android_widget_ProgressBar_VISIBILITY_MASK -#define android_widget_ProgressBar_VISIBILITY_MASK 12L -#undef android_widget_ProgressBar_ENABLED -#define android_widget_ProgressBar_ENABLED 0L -#undef android_widget_ProgressBar_DISABLED -#define android_widget_ProgressBar_DISABLED 32L -#undef android_widget_ProgressBar_ENABLED_MASK -#define android_widget_ProgressBar_ENABLED_MASK 32L -#undef android_widget_ProgressBar_WILL_NOT_DRAW -#define android_widget_ProgressBar_WILL_NOT_DRAW 128L -#undef android_widget_ProgressBar_DRAW_MASK -#define android_widget_ProgressBar_DRAW_MASK 128L -#undef android_widget_ProgressBar_SCROLLBARS_NONE -#define android_widget_ProgressBar_SCROLLBARS_NONE 0L -#undef android_widget_ProgressBar_SCROLLBARS_HORIZONTAL -#define android_widget_ProgressBar_SCROLLBARS_HORIZONTAL 256L -#undef android_widget_ProgressBar_SCROLLBARS_VERTICAL -#define android_widget_ProgressBar_SCROLLBARS_VERTICAL 512L -#undef android_widget_ProgressBar_SCROLLBARS_MASK -#define android_widget_ProgressBar_SCROLLBARS_MASK 768L -#undef android_widget_ProgressBar_FILTER_TOUCHES_WHEN_OBSCURED -#define android_widget_ProgressBar_FILTER_TOUCHES_WHEN_OBSCURED 1024L -#undef android_widget_ProgressBar_OPTIONAL_FITS_SYSTEM_WINDOWS -#define android_widget_ProgressBar_OPTIONAL_FITS_SYSTEM_WINDOWS 2048L -#undef android_widget_ProgressBar_FADING_EDGE_NONE -#define android_widget_ProgressBar_FADING_EDGE_NONE 0L -#undef android_widget_ProgressBar_FADING_EDGE_HORIZONTAL -#define android_widget_ProgressBar_FADING_EDGE_HORIZONTAL 4096L -#undef android_widget_ProgressBar_FADING_EDGE_VERTICAL -#define android_widget_ProgressBar_FADING_EDGE_VERTICAL 8192L -#undef android_widget_ProgressBar_FADING_EDGE_MASK -#define android_widget_ProgressBar_FADING_EDGE_MASK 12288L -#undef android_widget_ProgressBar_CLICKABLE -#define android_widget_ProgressBar_CLICKABLE 16384L -#undef android_widget_ProgressBar_DRAWING_CACHE_ENABLED -#define android_widget_ProgressBar_DRAWING_CACHE_ENABLED 32768L -#undef android_widget_ProgressBar_SAVE_DISABLED -#define android_widget_ProgressBar_SAVE_DISABLED 65536L -#undef android_widget_ProgressBar_SAVE_DISABLED_MASK -#define android_widget_ProgressBar_SAVE_DISABLED_MASK 65536L -#undef android_widget_ProgressBar_WILL_NOT_CACHE_DRAWING -#define android_widget_ProgressBar_WILL_NOT_CACHE_DRAWING 131072L -#undef android_widget_ProgressBar_FOCUSABLE_IN_TOUCH_MODE -#define android_widget_ProgressBar_FOCUSABLE_IN_TOUCH_MODE 262144L -#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_LOW -#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_LOW 524288L -#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_HIGH -#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_HIGH 1048576L -#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_AUTO -#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_AUTO 0L -#undef android_widget_ProgressBar_DRAWING_CACHE_QUALITY_MASK -#define android_widget_ProgressBar_DRAWING_CACHE_QUALITY_MASK 1572864L -#undef android_widget_ProgressBar_LONG_CLICKABLE -#define android_widget_ProgressBar_LONG_CLICKABLE 2097152L -#undef android_widget_ProgressBar_DUPLICATE_PARENT_STATE -#define android_widget_ProgressBar_DUPLICATE_PARENT_STATE 4194304L -#undef android_widget_ProgressBar_SCROLLBARS_INSIDE_OVERLAY -#define android_widget_ProgressBar_SCROLLBARS_INSIDE_OVERLAY 0L -#undef android_widget_ProgressBar_SCROLLBARS_INSIDE_INSET -#define android_widget_ProgressBar_SCROLLBARS_INSIDE_INSET 16777216L -#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_OVERLAY -#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_OVERLAY 33554432L -#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_INSET -#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_INSET 50331648L -#undef android_widget_ProgressBar_SCROLLBARS_INSET_MASK -#define android_widget_ProgressBar_SCROLLBARS_INSET_MASK 16777216L -#undef android_widget_ProgressBar_SCROLLBARS_OUTSIDE_MASK -#define android_widget_ProgressBar_SCROLLBARS_OUTSIDE_MASK 33554432L -#undef android_widget_ProgressBar_SCROLLBARS_STYLE_MASK -#define android_widget_ProgressBar_SCROLLBARS_STYLE_MASK 50331648L -#undef android_widget_ProgressBar_KEEP_SCREEN_ON -#define android_widget_ProgressBar_KEEP_SCREEN_ON 67108864L -#undef android_widget_ProgressBar_SOUND_EFFECTS_ENABLED -#define android_widget_ProgressBar_SOUND_EFFECTS_ENABLED 134217728L -#undef android_widget_ProgressBar_HAPTIC_FEEDBACK_ENABLED -#define android_widget_ProgressBar_HAPTIC_FEEDBACK_ENABLED 268435456L -#undef android_widget_ProgressBar_PARENT_SAVE_DISABLED -#define android_widget_ProgressBar_PARENT_SAVE_DISABLED 536870912L -#undef android_widget_ProgressBar_PARENT_SAVE_DISABLED_MASK -#define android_widget_ProgressBar_PARENT_SAVE_DISABLED_MASK 536870912L -#undef android_widget_ProgressBar_FOCUSABLES_ALL -#define android_widget_ProgressBar_FOCUSABLES_ALL 0L -#undef android_widget_ProgressBar_FOCUSABLES_TOUCH_MODE -#define android_widget_ProgressBar_FOCUSABLES_TOUCH_MODE 1L -#undef android_widget_ProgressBar_FOCUS_BACKWARD -#define android_widget_ProgressBar_FOCUS_BACKWARD 1L -#undef android_widget_ProgressBar_FOCUS_FORWARD -#define android_widget_ProgressBar_FOCUS_FORWARD 2L -#undef android_widget_ProgressBar_FOCUS_LEFT -#define android_widget_ProgressBar_FOCUS_LEFT 17L -#undef android_widget_ProgressBar_FOCUS_UP -#define android_widget_ProgressBar_FOCUS_UP 33L -#undef android_widget_ProgressBar_FOCUS_RIGHT -#define android_widget_ProgressBar_FOCUS_RIGHT 66L -#undef android_widget_ProgressBar_FOCUS_DOWN -#define android_widget_ProgressBar_FOCUS_DOWN 130L -#undef android_widget_ProgressBar_MEASURED_SIZE_MASK -#define android_widget_ProgressBar_MEASURED_SIZE_MASK 16777215L -#undef android_widget_ProgressBar_MEASURED_STATE_MASK -#define android_widget_ProgressBar_MEASURED_STATE_MASK -16777216L -#undef android_widget_ProgressBar_MEASURED_HEIGHT_STATE_SHIFT -#define android_widget_ProgressBar_MEASURED_HEIGHT_STATE_SHIFT 16L -#undef android_widget_ProgressBar_MEASURED_STATE_TOO_SMALL -#define android_widget_ProgressBar_MEASURED_STATE_TOO_SMALL 16777216L -#undef android_widget_ProgressBar_PFLAG2_DRAG_CAN_ACCEPT -#define android_widget_ProgressBar_PFLAG2_DRAG_CAN_ACCEPT 1L -#undef android_widget_ProgressBar_PFLAG2_DRAG_HOVERED -#define android_widget_ProgressBar_PFLAG2_DRAG_HOVERED 2L -#undef android_widget_ProgressBar_LAYOUT_DIRECTION_LTR -#define android_widget_ProgressBar_LAYOUT_DIRECTION_LTR 0L -#undef android_widget_ProgressBar_LAYOUT_DIRECTION_RTL -#define android_widget_ProgressBar_LAYOUT_DIRECTION_RTL 1L -#undef android_widget_ProgressBar_LAYOUT_DIRECTION_INHERIT -#define android_widget_ProgressBar_LAYOUT_DIRECTION_INHERIT 2L -#undef android_widget_ProgressBar_LAYOUT_DIRECTION_LOCALE -#define android_widget_ProgressBar_LAYOUT_DIRECTION_LOCALE 3L -#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT -#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT 2L -#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK -#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_MASK 12L -#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL -#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL 16L -#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED -#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L -#undef android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK -#define android_widget_ProgressBar_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L -/* - * Class: android_widget_ProgressBar - * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V - */ -JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); - -/* - * Class: android_widget_ProgressBar - * Method: native_constructor - * Signature: (Landroid/content/Context;)V - */ -JNIEXPORT void JNICALL Java_android_widget_ProgressBar_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h b/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h index 0e0fb1c8..b90e01c9 100644 --- a/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h +++ b/src/api-impl-jni/generated_headers/android_widget_RelativeLayout.h @@ -149,29 +149,79 @@ extern "C" { #define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L #undef android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK #define android_widget_RelativeLayout_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +#undef android_widget_RelativeLayout_STATUS_BAR_HIDDEN +#define android_widget_RelativeLayout_STATUS_BAR_HIDDEN 1L +#undef android_widget_RelativeLayout_STATUS_BAR_VISIBLE +#define android_widget_RelativeLayout_STATUS_BAR_VISIBLE 0L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_FULLSCREEN +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_FULLSCREEN 4L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_HIDE_NAVIGATION +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_IMMERSIVE +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_IMMERSIVE 2048L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_IMMERSIVE_STICKY +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_LAYOUT_STABLE +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_LOW_PROFILE +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_LOW_PROFILE 1L +#undef android_widget_RelativeLayout_SYSTEM_UI_FLAG_VISIBLE +#define android_widget_RelativeLayout_SYSTEM_UI_FLAG_VISIBLE 0L +#undef android_widget_RelativeLayout_SYSTEM_UI_LAYOUT_FLAGS +#define android_widget_RelativeLayout_SYSTEM_UI_LAYOUT_FLAGS 1536L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_CENTER +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_CENTER 4L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_GRAVITY +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_GRAVITY 1L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_INHERIT +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_INHERIT 0L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_TEXT_END +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_TEXT_END 3L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_TEXT_START +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_TEXT_START 2L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_VIEW_END +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_VIEW_END 6L +#undef android_widget_RelativeLayout_TEXT_ALIGNMENT_VIEW_START +#define android_widget_RelativeLayout_TEXT_ALIGNMENT_VIEW_START 5L +#undef android_widget_RelativeLayout_TEXT_DIRECTION_ANY_RTL +#define android_widget_RelativeLayout_TEXT_DIRECTION_ANY_RTL 2L +#undef android_widget_RelativeLayout_TEXT_DIRECTION_FIRST_STRONG +#define android_widget_RelativeLayout_TEXT_DIRECTION_FIRST_STRONG 1L +#undef android_widget_RelativeLayout_TEXT_DIRECTION_INHERIT +#define android_widget_RelativeLayout_TEXT_DIRECTION_INHERIT 0L +#undef android_widget_RelativeLayout_TEXT_DIRECTION_LOCALE +#define android_widget_RelativeLayout_TEXT_DIRECTION_LOCALE 5L +#undef android_widget_RelativeLayout_TEXT_DIRECTION_LTR +#define android_widget_RelativeLayout_TEXT_DIRECTION_LTR 3L +#undef android_widget_RelativeLayout_TEXT_DIRECTION_RTL +#define android_widget_RelativeLayout_TEXT_DIRECTION_RTL 4L /* * Class: android_widget_RelativeLayout * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_widget_RelativeLayout_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_widget_RelativeLayout - * Method: native_constructor - * Signature: (Landroid/content/Context;)V + * Method: native_addView + * Signature: (JJILandroid/view/ViewGroup/LayoutParams;)V */ -JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1addView + (JNIEnv *, jobject, jlong, jlong, jint, jobject); /* * Class: android_widget_RelativeLayout - * Method: addView - * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + * Method: native_removeView + * Signature: (JJ)V */ -JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_addView - (JNIEnv *, jobject, jobject, jint, jobject); +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1removeView + (JNIEnv *, jobject, jlong, jlong); #ifdef __cplusplus } diff --git a/src/api-impl-jni/generated_headers/android_widget_ScrollView.h b/src/api-impl-jni/generated_headers/android_widget_ScrollView.h index 866b0329..4dd0a51f 100644 --- a/src/api-impl-jni/generated_headers/android_widget_ScrollView.h +++ b/src/api-impl-jni/generated_headers/android_widget_ScrollView.h @@ -149,45 +149,79 @@ extern "C" { #define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED 32L #undef android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK #define android_widget_ScrollView_PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK 48L +#undef android_widget_ScrollView_STATUS_BAR_HIDDEN +#define android_widget_ScrollView_STATUS_BAR_HIDDEN 1L +#undef android_widget_ScrollView_STATUS_BAR_VISIBLE +#define android_widget_ScrollView_STATUS_BAR_VISIBLE 0L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_FULLSCREEN +#define android_widget_ScrollView_SYSTEM_UI_FLAG_FULLSCREEN 4L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_HIDE_NAVIGATION +#define android_widget_ScrollView_SYSTEM_UI_FLAG_HIDE_NAVIGATION 2L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_IMMERSIVE +#define android_widget_ScrollView_SYSTEM_UI_FLAG_IMMERSIVE 2048L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY +#define android_widget_ScrollView_SYSTEM_UI_FLAG_IMMERSIVE_STICKY 4096L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN +#define android_widget_ScrollView_SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 1024L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION +#define android_widget_ScrollView_SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 512L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_LAYOUT_STABLE +#define android_widget_ScrollView_SYSTEM_UI_FLAG_LAYOUT_STABLE 256L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_LOW_PROFILE +#define android_widget_ScrollView_SYSTEM_UI_FLAG_LOW_PROFILE 1L +#undef android_widget_ScrollView_SYSTEM_UI_FLAG_VISIBLE +#define android_widget_ScrollView_SYSTEM_UI_FLAG_VISIBLE 0L +#undef android_widget_ScrollView_SYSTEM_UI_LAYOUT_FLAGS +#define android_widget_ScrollView_SYSTEM_UI_LAYOUT_FLAGS 1536L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_CENTER +#define android_widget_ScrollView_TEXT_ALIGNMENT_CENTER 4L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_GRAVITY +#define android_widget_ScrollView_TEXT_ALIGNMENT_GRAVITY 1L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_INHERIT +#define android_widget_ScrollView_TEXT_ALIGNMENT_INHERIT 0L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_TEXT_END +#define android_widget_ScrollView_TEXT_ALIGNMENT_TEXT_END 3L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_TEXT_START +#define android_widget_ScrollView_TEXT_ALIGNMENT_TEXT_START 2L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_VIEW_END +#define android_widget_ScrollView_TEXT_ALIGNMENT_VIEW_END 6L +#undef android_widget_ScrollView_TEXT_ALIGNMENT_VIEW_START +#define android_widget_ScrollView_TEXT_ALIGNMENT_VIEW_START 5L +#undef android_widget_ScrollView_TEXT_DIRECTION_ANY_RTL +#define android_widget_ScrollView_TEXT_DIRECTION_ANY_RTL 2L +#undef android_widget_ScrollView_TEXT_DIRECTION_FIRST_STRONG +#define android_widget_ScrollView_TEXT_DIRECTION_FIRST_STRONG 1L +#undef android_widget_ScrollView_TEXT_DIRECTION_INHERIT +#define android_widget_ScrollView_TEXT_DIRECTION_INHERIT 0L +#undef android_widget_ScrollView_TEXT_DIRECTION_LOCALE +#define android_widget_ScrollView_TEXT_DIRECTION_LOCALE 5L +#undef android_widget_ScrollView_TEXT_DIRECTION_LTR +#define android_widget_ScrollView_TEXT_DIRECTION_LTR 3L +#undef android_widget_ScrollView_TEXT_DIRECTION_RTL +#define android_widget_ScrollView_TEXT_DIRECTION_RTL 4L /* * Class: android_widget_ScrollView * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_widget_ScrollView_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_widget_ScrollView - * Method: native_constructor - * Signature: (Landroid/content/Context;)V + * Method: native_addView + * Signature: (JJILandroid/view/ViewGroup/LayoutParams;)V */ -JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1addView + (JNIEnv *, jobject, jlong, jlong, jint, jobject); /* * Class: android_widget_ScrollView - * Method: addView - * Signature: (Landroid/view/View;ILandroid/view/ViewGroup/LayoutParams;)V + * Method: native_removeView + * Signature: (JJ)V */ -JNIEXPORT void JNICALL Java_android_widget_ScrollView_addView - (JNIEnv *, jobject, jobject, jint, jobject); - -/* - * Class: android_widget_ScrollView - * Method: removeView - * Signature: (Landroid/view/View;)V - */ -JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeView - (JNIEnv *, jobject, jobject); - -/* - * Class: android_widget_ScrollView - * Method: removeAllViews - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeAllViews - (JNIEnv *, jobject); +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1removeView + (JNIEnv *, jobject, jlong, jlong); #ifdef __cplusplus } diff --git a/src/api-impl-jni/generated_headers/android_widget_TextView.h b/src/api-impl-jni/generated_headers/android_widget_TextView.h index c1b07763..2df95767 100644 --- a/src/api-impl-jni/generated_headers/android_widget_TextView.h +++ b/src/api-impl-jni/generated_headers/android_widget_TextView.h @@ -202,18 +202,10 @@ extern "C" { /* * Class: android_widget_TextView * Method: native_constructor - * Signature: (Landroid/util/AttributeSet;)V + * Signature: (Landroid/content/Context;Landroid/util/AttributeSet;)J */ -JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_util_AttributeSet_2 - (JNIEnv *, jobject, jobject); - -/* - * Class: android_widget_TextView - * Method: native_constructor - * Signature: (Landroid/content/Context;)V - */ -JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_content_Context_2 - (JNIEnv *, jobject, jobject); +JNIEXPORT jlong JNICALL Java_android_widget_TextView_native_1constructor + (JNIEnv *, jobject, jobject, jobject); /* * Class: android_widget_TextView diff --git a/src/api-impl-jni/util.c b/src/api-impl-jni/util.c index 0e77a37b..4bad3088 100644 --- a/src/api-impl-jni/util.c +++ b/src/api-impl-jni/util.c @@ -15,6 +15,9 @@ const char * attribute_set_get_string(JNIEnv *env, jobject attrs, char *attribut int attribute_set_get_int(JNIEnv *env, jobject attrs, char *attribute, char *schema, int default_value) { + if (!attrs) + return default_value; + if(!schema) schema = "http://schemas.android.com/apk/res/android"; diff --git a/src/api-impl-jni/views/android_view_View.c b/src/api-impl-jni/views/android_view_View.c index c56fc0ad..38ec04a9 100644 --- a/src/api-impl-jni/views/android_view_View.c +++ b/src/api-impl-jni/views/android_view_View.c @@ -174,7 +174,7 @@ gboolean tick_callback(GtkWidget* widget, GdkFrameClock* frame_clock, gpointer u return G_SOURCE_CONTINUE; } -JNIEXPORT void JNICALL Java_android_view_View_native_1constructor(JNIEnv *env, jobject this, jobject Context) +JNIEXPORT jlong JNICALL Java_android_view_View_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { GtkWidget *wrapper = wrapper_widget_new(); GtkWidget *area = gtk_drawing_area_new(); @@ -183,7 +183,7 @@ JNIEXPORT void JNICALL Java_android_view_View_native_1constructor(JNIEnv *env, j gtk_widget_add_tick_callback(area, tick_callback, NULL, NULL); - _SET_LONG_FIELD(this, "widget", (long)area); + return _INTPTR(area); } JNIEXPORT void JNICALL Java_android_view_View_nativeInvalidate(JNIEnv *env, jclass, jlong widget_ptr) { diff --git a/src/api-impl-jni/views/android_view_ViewGroup.c b/src/api-impl-jni/views/android_view_ViewGroup.c index 2d088303..b607d4ec 100644 --- a/src/api-impl-jni/views/android_view_ViewGroup.c +++ b/src/api-impl-jni/views/android_view_ViewGroup.c @@ -3,21 +3,32 @@ #include "../defines.h" #include "../util.h" +#include "../widgets/WrapperWidget.h" + #include "../generated_headers/android_view_ViewGroup.h" #include "../generated_headers/android_view_View.h" -JNIEXPORT void JNICALL Java_android_view_ViewGroup_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +/** + * Should be overwritten by ViewGroup subclasses. + * Fall back to vertical GtkBox if subclass is not implemented yet + */ +JNIEXPORT jlong JNICALL Java_android_view_ViewGroup_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { - GtkWidget *_child = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget")))); - jint child_width = -1; - jint child_height = -1; + GtkWidget *wrapper = wrapper_widget_new(); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1); // spacing of 1 + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); + gtk_widget_set_name(GTK_WIDGET(box), "ViewGroup"); + return _INTPTR(box); +} +JNIEXPORT void JNICALL Java_android_view_ViewGroup_native_1addView(JNIEnv *env, jobject this, jlong widget, jlong child, jint index, jobject layout_params) +{ if(layout_params) { - (*env)->CallVoidMethod(env, child, handle_cache.view.setLayoutParams, layout_params); - if((*env)->ExceptionCheck(env)) - (*env)->ExceptionDescribe(env); - /* + GtkWidget *_child = gtk_widget_get_parent(GTK_WIDGET(_PTR(child))); + jint child_width = -1; + jint child_height = -1; + jint child_width = _GET_INT_FIELD(layout_params, "width"); jint child_height = _GET_INT_FIELD(layout_params, "height"); @@ -33,34 +44,10 @@ JNIEXPORT void JNICALL Java_android_view_ViewGroup_addView(JNIEnv *env, jobject Java_android_view_View_setGravity(env, child, child_gravity); }*/ } - - _SET_OBJ_FIELD(child, "parent", "Landroid/view/ViewGroup;", this); - - jobject children = _GET_OBJ_FIELD(this, "children", "Ljava/util/ArrayList;"); - - (*env)->CallVoidMethod(env, children, handle_cache.array_list.add, child); + gtk_box_append(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); // FIXME - ignores index argument } - -JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeView(JNIEnv *env, jobject this, jobject child) +JNIEXPORT void JNICALL Java_android_view_ViewGroup_native_1removeView(JNIEnv *env, jobject this, jlong widget, jlong child) { - _SET_OBJ_FIELD(child, "parent", "Landroid/view/ViewGroup;", NULL); - - jobject children = _GET_OBJ_FIELD(this, "children", "Ljava/util/ArrayList;"); - - (*env)->CallVoidMethod(env, children, handle_cache.array_list.remove, child); -} - - -JNIEXPORT void JNICALL Java_android_view_ViewGroup_removeAllViews(JNIEnv *env, jobject this) -{ - jobject children = _GET_OBJ_FIELD(this, "children", "Ljava/util/ArrayList;"); - jint size = (*env)->CallIntMethod(env, children, handle_cache.array_list.size); - - for(int i = 0; i < size; i++) { - jobject child = (*env)->CallObjectMethod(env, children, handle_cache.array_list.get, i); - _SET_OBJ_FIELD(child, "parent", "Landroid/view/ViewGroup;", NULL); - } - - (*env)->CallVoidMethod(env, children, handle_cache.array_list.clear); + gtk_box_remove(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); } diff --git a/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c b/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c index c16a30fe..c71715cf 100644 --- a/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c +++ b/src/api-impl-jni/widgets/android_opengl_GLSurfaceView.c @@ -54,13 +54,13 @@ extern int FIXME__HEIGHT; #define ___GL_TRACE___(message) glDebugMessageInsert(GL_DEBUG_SOURCE_THIRD_PARTY, GL_DEBUG_TYPE_MARKER, 0xdeadbeef, GL_DEBUG_SEVERITY_NOTIFICATION, strlen(message), message) -JNIEXPORT void JNICALL Java_android_opengl_GLSurfaceView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) +JNIEXPORT jlong JNICALL Java_android_opengl_GLSurfaceView_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { GtkWidget *wrapper = wrapper_widget_new(); gtk_widget_set_vexpand(wrapper, TRUE); GtkWidget *gl_area = gtk_gl_area_new(); wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), gl_area); - _SET_LONG_FIELD(this, "widget", _INTPTR(gl_area)); + return _INTPTR(gl_area); } //two triangles put together to make a square diff --git a/src/api-impl-jni/widgets/android_view_SurfaceView.c b/src/api-impl-jni/widgets/android_view_SurfaceView.c index ce38e07a..72f23a2f 100644 --- a/src/api-impl-jni/widgets/android_view_SurfaceView.c +++ b/src/api-impl-jni/widgets/android_view_SurfaceView.c @@ -83,7 +83,7 @@ static void on_resize(GtkWidget* self, gint width, gint height, struct jni_callb width, height); } -JNIEXPORT void JNICALL Java_android_view_SurfaceView_native_1constructor(JNIEnv *env, jobject this, jobject context) +JNIEXPORT jlong JNICALL Java_android_view_SurfaceView_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { GtkWidget *wrapper = wrapper_widget_new(); GtkWidget *dummy = surface_view_widget_new(); @@ -103,5 +103,5 @@ JNIEXPORT void JNICALL Java_android_view_SurfaceView_native_1constructor(JNIEnv g_signal_connect(dummy, "resize", G_CALLBACK(on_resize), callback_data); - _SET_LONG_FIELD(this, "widget", _INTPTR(dummy)); + return _INTPTR(dummy); } diff --git a/src/api-impl-jni/widgets/android_widget_FrameLayout.c b/src/api-impl-jni/widgets/android_widget_FrameLayout.c index 56ca1928..1cc2d808 100644 --- a/src/api-impl-jni/widgets/android_widget_FrameLayout.c +++ b/src/api-impl-jni/widgets/android_widget_FrameLayout.c @@ -75,29 +75,19 @@ void frame_layout_widget_insert_child_at_index(FrameLayoutWidget *parent, GtkWid // --- -JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +JNIEXPORT jlong JNICALL Java_android_widget_FrameLayout_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { GtkWidget *wrapper = wrapper_widget_new(); GtkWidget *frame_layout = frame_layout_widget_new(); wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), frame_layout); gtk_widget_set_name(GTK_WIDGET(frame_layout), "FrameLayout"); - _SET_LONG_FIELD(this, "widget", _INTPTR(frame_layout)); + return _INTPTR(frame_layout); } -JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { - GtkWidget *wrapper = wrapper_widget_new(); - GtkWidget *frame_layout = frame_layout_widget_new(); - wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), frame_layout); - gtk_widget_set_name(GTK_WIDGET(frame_layout), "FrameLayout"); - _SET_LONG_FIELD(this, "widget", _INTPTR(frame_layout)); -} - -JNIEXPORT void JNICALL Java_android_widget_FrameLayout_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +JNIEXPORT void JNICALL Java_android_widget_FrameLayout_native_1addView(JNIEnv *env, jobject this, jlong widget, jlong child, jint index, jobject layout_params) { - Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); - if(index >= 0) - frame_layout_widget_insert_child_at_index(FRAME_LAYOUT_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget")))), index); + frame_layout_widget_insert_child_at_index(FRAME_LAYOUT_WIDGET(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child))), index); else - frame_layout_widget_insert_child(FRAME_LAYOUT_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); + frame_layout_widget_insert_child(FRAME_LAYOUT_WIDGET(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); } diff --git a/src/api-impl-jni/widgets/android_widget_ImageView.c b/src/api-impl-jni/widgets/android_widget_ImageView.c index 1e9f10e3..efe98457 100644 --- a/src/api-impl-jni/widgets/android_widget_ImageView.c +++ b/src/api-impl-jni/widgets/android_widget_ImageView.c @@ -7,21 +7,13 @@ #include "../generated_headers/android_widget_ImageView.h" -JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +JNIEXPORT jlong JNICALL Java_android_widget_ImageView_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { GtkWidget *wrapper = wrapper_widget_new(); GtkWidget *image = gtk_picture_new_for_resource("/org/gtk/libgtk/icons/16x16/status/image-missing.png"); // show "broken image" icon wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), image); wrapper_widget_set_jobject(WRAPPER_WIDGET(wrapper), env, this); - _SET_LONG_FIELD(this, "widget", _INTPTR(image));} - -JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) -{ - GtkWidget *wrapper = wrapper_widget_new(); - GtkWidget *image = gtk_picture_new_for_resource("/org/gtk/libgtk/icons/16x16/status/image-missing.png"); // show "broken image" icon - wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), image); - wrapper_widget_set_jobject(WRAPPER_WIDGET(wrapper), env, this); - _SET_LONG_FIELD(this, "widget", _INTPTR(image)); + return _INTPTR(image); } JNIEXPORT void JNICALL Java_android_widget_ImageView_native_1setPixbuf(JNIEnv *env, jobject this, jlong pixbuf_ptr) diff --git a/src/api-impl-jni/widgets/android_widget_LinearLayout.c b/src/api-impl-jni/widgets/android_widget_LinearLayout.c index 9d654f0a..c9df4853 100644 --- a/src/api-impl-jni/widgets/android_widget_LinearLayout.c +++ b/src/api-impl-jni/widgets/android_widget_LinearLayout.c @@ -10,55 +10,32 @@ #include "../generated_headers/android_widget_LinearLayout.h" #include "../generated_headers/android_view_ViewGroup.h" -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +JNIEXPORT jlong JNICALL Java_android_widget_LinearLayout_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { - int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 0); + int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 1); GtkWidget *wrapper = wrapper_widget_new(); GtkWidget *box = gtk_box_new(orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); gtk_widget_set_name(GTK_WIDGET(box), "LinearLayout"); - _SET_LONG_FIELD(this, "widget", _INTPTR(box)); -} - -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { - GtkWidget *wrapper = wrapper_widget_new(); - - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); // spacing of 0 - wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); - gtk_widget_set_name(GTK_WIDGET(box), "LinearLayout"); - gtk_widget_set_hexpand_set(box, true); // FIXME: to counteract expand on drawing areas - gtk_widget_set_vexpand_set(box, true); // XXX - _SET_LONG_FIELD(this, "widget", _INTPTR(box)); + if (!attrs) { + gtk_widget_set_hexpand_set(box, true); // FIXME: to counteract expand on drawing areas + gtk_widget_set_vexpand_set(box, true); // XXX + } + return _INTPTR(box); // struct ninepatch_t *ninepatch = ninepatch_new("/home/Mis012/Github_and_other_sources/org.happysanta.gd_29_src.tar.gz/res/drawable-mdpi/btn_br_down.9.png"); // g_object_set_data(G_OBJECT(wrapper), "background_ninepatch", ninepatch); } -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1addView(JNIEnv *env, jobject this, jlong widget, jlong child, jint index, jobject layout_params) { - Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); - - gtk_box_append(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); // FIXME - ignores index argument + gtk_box_append(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); // FIXME - ignores index argument } -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeView(JNIEnv *env, jobject this, jobject child) +JNIEXPORT void JNICALL Java_android_widget_LinearLayout_native_1removeView(JNIEnv *env, jobject this, jlong widget, jlong child) { - Java_android_view_ViewGroup_removeView(env, this, child); - - gtk_box_remove(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); -} - -JNIEXPORT void JNICALL Java_android_widget_LinearLayout_removeAllViews(JNIEnv *env, jobject this) -{ - Java_android_view_ViewGroup_removeAllViews(env, this); - - GtkBox *box = GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))); - - GtkWidget *child; - while((child = gtk_widget_get_first_child(GTK_WIDGET(box))) != NULL) { - gtk_box_remove(box, child); - } + gtk_box_remove(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); } JNIEXPORT void JNICALL Java_android_widget_LinearLayout_setOrientation(JNIEnv *env, jobject this, jint orientation) diff --git a/src/api-impl-jni/widgets/android_widget_RelativeLayout.c b/src/api-impl-jni/widgets/android_widget_RelativeLayout.c index 6eb0f3ea..74ab1b81 100644 --- a/src/api-impl-jni/widgets/android_widget_RelativeLayout.c +++ b/src/api-impl-jni/widgets/android_widget_RelativeLayout.c @@ -10,7 +10,7 @@ // FIXME not a relative layout -JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +JNIEXPORT jlong JNICALL Java_android_widget_RelativeLayout_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 1); @@ -18,20 +18,15 @@ JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__L GtkWidget *box = gtk_box_new(orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); gtk_widget_set_name(GTK_WIDGET(box), "RelativeLayout"); - _SET_LONG_FIELD(this, "widget", _INTPTR(box)); + return _INTPTR(box); } -JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { - GtkWidget *wrapper = wrapper_widget_new(); - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 1); // spacing of 1 - wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); - gtk_widget_set_name(GTK_WIDGET(box), "RelativeLayout"); - _SET_LONG_FIELD(this, "widget", _INTPTR(box)); -} - -JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1addView(JNIEnv *env, jobject this, jlong widget, jlong child, jint index, jobject layout_params) { - Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); - - gtk_box_append(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); + gtk_box_append(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); // FIXME - ignores index argument +} + +JNIEXPORT void JNICALL Java_android_widget_RelativeLayout_native_1removeView(JNIEnv *env, jobject this, jlong widget, jlong child) +{ + gtk_box_remove(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); } diff --git a/src/api-impl-jni/widgets/android_widget_ScrollView.c b/src/api-impl-jni/widgets/android_widget_ScrollView.c index e92821f6..6fe6ba75 100644 --- a/src/api-impl-jni/widgets/android_widget_ScrollView.c +++ b/src/api-impl-jni/widgets/android_widget_ScrollView.c @@ -10,7 +10,7 @@ // FIXME not a scrollview -JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +JNIEXPORT jlong JNICALL Java_android_widget_ScrollView_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { int orientation = attribute_set_get_int(env, attrs, "orientation", NULL, 0); @@ -18,43 +18,18 @@ JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landr GtkWidget *box = gtk_box_new(orientation ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); gtk_widget_set_name(GTK_WIDGET(box), "ScrollView"); - _SET_LONG_FIELD(this, "widget", _INTPTR(box)); + return _INTPTR(box); } -JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject context) { - GtkWidget *wrapper = wrapper_widget_new(); - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 1); // spacing of 1 - wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), box); - gtk_widget_set_name(GTK_WIDGET(box), "ScrollView"); - _SET_LONG_FIELD(this, "widget", _INTPTR(box)); -} - -JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeView(JNIEnv *env, jobject this, jobject child) +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1removeView(JNIEnv *env, jobject this, jlong widget, jlong child) { - Java_android_view_ViewGroup_removeView(env, this, child); + GtkWidget *_child = gtk_widget_get_parent(GTK_WIDGET(_PTR(child))); - GtkWidget *_child = gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget")))); - - gtk_box_remove(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), g_object_ref(_child)); + gtk_box_remove(GTK_BOX(_PTR(widget)), g_object_ref(_child)); g_object_force_floating(G_OBJECT(_child)); } -JNIEXPORT void JNICALL Java_android_widget_ScrollView_removeAllViews(JNIEnv *env, jobject this) +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1addView(JNIEnv *env, jobject this, jlong widget, jlong child, jint index, jobject layout_params) { - Java_android_view_ViewGroup_removeAllViews(env, this); - - GtkBox *box = GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))); - - GtkWidget *child; - while((child = gtk_widget_get_first_child(GTK_WIDGET(box))) != NULL) { - gtk_box_remove(box, g_object_ref(child)); - g_object_force_floating(G_OBJECT(child)); - } -} - -JNIEXPORT void JNICALL Java_android_widget_ScrollView_addView(JNIEnv *env, jobject this, jobject child, jint index, jobject layout_params) -{ - Java_android_view_ViewGroup_addView(env, this, child, index, layout_params); - - gtk_box_append(GTK_BOX(_PTR(_GET_LONG_FIELD(this, "widget"))), gtk_widget_get_parent(GTK_WIDGET(_PTR(_GET_LONG_FIELD(child, "widget"))))); + gtk_box_append(GTK_BOX(_PTR(widget)), gtk_widget_get_parent(GTK_WIDGET(_PTR(child)))); } diff --git a/src/api-impl-jni/widgets/android_widget_TextView.c b/src/api-impl-jni/widgets/android_widget_TextView.c index e490869e..2bea8c0a 100644 --- a/src/api-impl-jni/widgets/android_widget_TextView.c +++ b/src/api-impl-jni/widgets/android_widget_TextView.c @@ -7,26 +7,16 @@ #include "../generated_headers/android_widget_TextView.h" -JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_util_AttributeSet_2(JNIEnv *env, jobject this, jobject attrs) +JNIEXPORT jlong JNICALL Java_android_widget_TextView_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs) { - const char *text = attribute_set_get_string(env, attrs, "text", NULL); + const char *text = attribute_set_get_string(env, attrs, "text", NULL) ?: "FIXME"; // _SET_OBJ_FIELD(this, "text", "Ljava/lang/String;", _JSTRING(text)); //TODO: sadly this might be needed, but it's not atm GtkWidget *wrapper = wrapper_widget_new(); GtkWidget *label = gtk_label_new(text); wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), label); - _SET_LONG_FIELD(this, "widget", _INTPTR(label)); -} - -JNIEXPORT void JNICALL Java_android_widget_TextView_native_1constructor__Landroid_content_Context_2(JNIEnv *env, jobject this, jobject attrs) -{ -// _SET_OBJ_FIELD(this, "text", "Ljava/lang/String;", _JSTRING(text)); //TODO: sadly this might be needed, but it's not atm - - GtkWidget *wrapper = wrapper_widget_new(); - GtkWidget *label = gtk_label_new("FIXME"); - wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), label); - _SET_LONG_FIELD(this, "widget", _INTPTR(label)); + return _INTPTR(label); } JNIEXPORT void JNICALL Java_android_widget_TextView_native_1setText(JNIEnv *env, jobject this, jobject charseq) diff --git a/src/api-impl/android/opengl/GLSurfaceView.java b/src/api-impl/android/opengl/GLSurfaceView.java index 6fd24554..92a3916d 100644 --- a/src/api-impl/android/opengl/GLSurfaceView.java +++ b/src/api-impl/android/opengl/GLSurfaceView.java @@ -18,8 +18,8 @@ import javax.microedition.khronos.opengles.GL10; public class GLSurfaceView extends View implements SurfaceHolder.Callback { // TODO: have this extend SurfaceView? EGLContextFactory context_factory = new default_ContextFactory(); EGLConfigChooser config_chooser = new boolean_ConfigChooser(true); - EGL10 java_egl_wrapper; - GL10 java_gl_wrapper; + EGL10 java_egl_wrapper = (EGL10)EGLContext.getEGL(); + GL10 java_gl_wrapper = (GL10)EGLContext.getGL(); int opengl_version = 1; // from SurfaceHolder.Callback @@ -29,22 +29,14 @@ public class GLSurfaceView extends View implements SurfaceHolder.Callback { // T public GLSurfaceView(Context context, AttributeSet attrs) { super(context, attrs); - - java_egl_wrapper = (EGL10)EGLContext.getEGL(); - java_gl_wrapper = (GL10)EGLContext.getGL(); - native_constructor(attrs); } public GLSurfaceView(Context context) { super(context); - - java_egl_wrapper = (EGL10)EGLContext.getEGL(); - java_gl_wrapper = (GL10)EGLContext.getGL(); - native_constructor(context); } - private native void native_constructor(AttributeSet attrs); - private native void native_constructor(Context context); + @Override + protected native long native_constructor(Context context, AttributeSet attrs); // Resumes the rendering thread, re-creating the OpenGL context if necessary. It is the counterpart to onPause(). This method should typically be called in Activity.onStart. Must not be called before a renderer has been set. // TODO: make use of this diff --git a/src/api-impl/android/view/SurfaceView.java b/src/api-impl/android/view/SurfaceView.java index af8caa9e..3ace846f 100644 --- a/src/api-impl/android/view/SurfaceView.java +++ b/src/api-impl/android/view/SurfaceView.java @@ -3,6 +3,8 @@ package android.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rect; +import android.util.AttributeSet; + import java.util.ArrayList; public class SurfaceView extends View { @@ -12,8 +14,6 @@ public class SurfaceView extends View { public SurfaceView(Context context) { super(context); - native_constructor(context); - mSurface.widget = this.widget; } @@ -23,7 +23,8 @@ public class SurfaceView extends View { } } - private native void native_constructor(Context context); + @Override + protected native long native_constructor(Context context, AttributeSet attrs); public SurfaceHolder getHolder() { return mSurfaceHolder; diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 488f78f8..20057671 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -778,7 +778,7 @@ public class View extends Object { public View() {} // FIXME public View(Context context, AttributeSet attrs) { - this(context); + this(context, attrs, 0); if (attrs != null) { id = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "id", 0); @@ -788,7 +788,9 @@ public class View extends Object { } public View(Context context, AttributeSet attrs, int defStyle) { - this(context, attrs); + this.context = context; + + widget = native_constructor(context, attrs); } public View findViewById(int id) { @@ -799,21 +801,7 @@ public class View extends Object { public void onDraw(Canvas canvas) {} public View(Context context) { - boolean custom_drawing; - - this.context = context; - - try { - Class[] cArg = new Class[1]; - cArg[0] = Canvas.class; - custom_drawing = !(this.getClass().getMethod("onDraw", cArg).getDeclaringClass() == View.class); - } catch (NoSuchMethodException e) { - custom_drawing = false; - } - - if (custom_drawing) { - native_constructor(context); - } + this(context, null); } public final ViewParent getParent() { @@ -853,7 +841,7 @@ public class View extends Object { public native final int getWidth(); public native final int getHeight(); - private native void native_constructor(Context context); // will create a custom GtkWidget with a custom drawing function + protected native long native_constructor(Context context, AttributeSet attrs); // will create a custom GtkWidget with a custom drawing function private native void native_set_size_request(int width, int height); // --- stubs diff --git a/src/api-impl/android/view/ViewGroup.java b/src/api-impl/android/view/ViewGroup.java index ee5b28ec..40cd8e7e 100644 --- a/src/api-impl/android/view/ViewGroup.java +++ b/src/api-impl/android/view/ViewGroup.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import java.util.ArrayList; +import java.util.Iterator; public class ViewGroup extends View implements ViewParent, ViewManager { public int id; @@ -55,10 +56,34 @@ public class ViewGroup extends View implements ViewParent, ViewManager { addView(child, new LayoutParams(width, height)); } - public native void addView(View child, int index, LayoutParams params); + public void addView(View child, int index, LayoutParams params) { + if (params != null) { + child.setLayoutParams(params); + } + child.parent = this; + children.add(child); + native_addView(widget, child.widget, index, params); + } - public native void removeView(View view); - public native void removeAllViews(); + public void removeView(View child) { + child.parent = null; + children.remove(child); + native_removeView(widget, child.widget); + } + + public void removeAllViews() { + for (Iterator it = children.iterator(); it.hasNext();) { + View child = it.next(); + child.parent = null; + it.remove(); + native_removeView(widget, child.widget); + } + } + + @Override + protected native long native_constructor(Context context, AttributeSet attrs); + protected native void native_addView(long widget, long child, int index, LayoutParams params); + protected native void native_removeView(long widget, long child); public View getChildAt(int index) { return children.get(index); diff --git a/src/api-impl/android/widget/FrameLayout.java b/src/api-impl/android/widget/FrameLayout.java index 1d7850da..8365091f 100644 --- a/src/api-impl/android/widget/FrameLayout.java +++ b/src/api-impl/android/widget/FrameLayout.java @@ -10,27 +10,22 @@ public class FrameLayout extends ViewGroup { public FrameLayout(Context context, AttributeSet attrs) { super(context, attrs); - - native_constructor(attrs); } public FrameLayout(Context context) { super(context); - - native_constructor(context); } public FrameLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - - native_constructor(attrs); } - public native void native_constructor(AttributeSet attrs); - public native void native_constructor(Context context); - @Override - public native void addView(View child, int index, ViewGroup.LayoutParams params); + protected native long native_constructor(Context context, AttributeSet attrs); + @Override + protected native void native_addView(long widget, long child, int index, ViewGroup.LayoutParams params); + @Override + protected native void native_removeView(long widget, long child); public void addView(View child, int index) { addView(child, index, null); diff --git a/src/api-impl/android/widget/ImageView.java b/src/api-impl/android/widget/ImageView.java index a7bcda60..105c51a8 100644 --- a/src/api-impl/android/widget/ImageView.java +++ b/src/api-impl/android/widget/ImageView.java @@ -15,7 +15,6 @@ public class ImageView extends View { public ImageView(Context context, AttributeSet attrs) { super(context, attrs); - native_constructor(attrs); if (attrs != null) { int resource = attrs.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "src", 0); if (resource != 0) @@ -25,18 +24,14 @@ public class ImageView extends View { public ImageView(Context context) { super(context); - - native_constructor(context); } - public ImageView(Context context, AttributeSet attrs, int xxx) { - super(context); - - native_constructor(context); + public ImageView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); } - private native void native_constructor(AttributeSet attrs); - private native void native_constructor(Context context); + @Override + protected native long native_constructor(Context context, AttributeSet attrs); private native void native_setPixbuf(long pixbuf); public /*native*/ void setImageResource(final int resid) { diff --git a/src/api-impl/android/widget/LinearLayout.java b/src/api-impl/android/widget/LinearLayout.java index f11c357e..692945c5 100644 --- a/src/api-impl/android/widget/LinearLayout.java +++ b/src/api-impl/android/widget/LinearLayout.java @@ -11,25 +11,18 @@ public class LinearLayout extends ViewGroup { public LinearLayout(Context context, AttributeSet attrs) { super(context, attrs); - - native_constructor(attrs); } public LinearLayout(Context context) { super(context); - - native_constructor(context); } - private native void native_constructor(AttributeSet attrs); - private native void native_constructor(Context context); - @Override - public native void addView(View child, int index, ViewGroup.LayoutParams params); + protected native long native_constructor(Context context, AttributeSet attrs); @Override - public native void removeView(View view); + protected native void native_addView(long widget, long child, int index, ViewGroup.LayoutParams params); @Override - public native void removeAllViews(); + protected native void native_removeView(long widget, long child); public native void setOrientation(int orientation); public void setWeightSum(float weightSum) {} diff --git a/src/api-impl/android/widget/ProgressBar.java b/src/api-impl/android/widget/ProgressBar.java index 1ea937b2..a7a90b8c 100644 --- a/src/api-impl/android/widget/ProgressBar.java +++ b/src/api-impl/android/widget/ProgressBar.java @@ -7,18 +7,11 @@ import android.view.View; public class ProgressBar extends View { public ProgressBar(Context context, AttributeSet attrs) { super(context, attrs); - - native_constructor(attrs); } public ProgressBar(Context context) { super(context); - - // native_constructor(context); } - private native void native_constructor(AttributeSet attrs); - private native void native_constructor(Context context); - public synchronized void setIndeterminate(boolean indeterminate) {} } diff --git a/src/api-impl/android/widget/RelativeLayout.java b/src/api-impl/android/widget/RelativeLayout.java index 11b3022b..1668661b 100644 --- a/src/api-impl/android/widget/RelativeLayout.java +++ b/src/api-impl/android/widget/RelativeLayout.java @@ -12,21 +12,18 @@ public class RelativeLayout extends ViewGroup { public RelativeLayout(Context context, AttributeSet attrs) { super(context, attrs); - - native_constructor(attrs); } public RelativeLayout(Context context) { super(context); - - native_constructor(context); } - private native void native_constructor(AttributeSet attrs); - private native void native_constructor(Context context); - @Override - public native void addView(View child, int index, ViewGroup.LayoutParams params); + protected native long native_constructor(Context context, AttributeSet attrs); + @Override + protected native void native_addView(long widget, long child, int index, ViewGroup.LayoutParams params); + @Override + protected native void native_removeView(long widget, long child); public static class LayoutParams extends ViewGroup.LayoutParams { public LayoutParams(int width, int height) { diff --git a/src/api-impl/android/widget/ScrollView.java b/src/api-impl/android/widget/ScrollView.java index 9d2fc164..d7eb47ab 100644 --- a/src/api-impl/android/widget/ScrollView.java +++ b/src/api-impl/android/widget/ScrollView.java @@ -9,25 +9,18 @@ import android.view.ViewGroup.LayoutParams; public class ScrollView extends ViewGroup { public ScrollView(Context context, AttributeSet attrs) { super(context, attrs); - - native_constructor(attrs); } public ScrollView(Context context) { super(context); - - native_constructor(context); } - private native void native_constructor(AttributeSet attrs); - private native void native_constructor(Context context); - @Override - public native void addView(View child, int index, LayoutParams params); + protected native long native_constructor(Context context, AttributeSet attrs); @Override - public native void removeView(View view); + protected native void native_addView(long widget, long child, int index, ViewGroup.LayoutParams params); @Override - public native void removeAllViews(); + protected native void native_removeView(long widget, long child); protected void onScrollChanged(int x, int y, int oldx, int oldy) {} public void setFillViewport(boolean fillViewport) {} diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java index d2c3cb1a..dcddede2 100644 --- a/src/api-impl/android/widget/TextView.java +++ b/src/api-impl/android/widget/TextView.java @@ -21,22 +21,18 @@ public class TextView extends View { public TextView(Context context, AttributeSet attrs) { super(context, attrs); - - native_constructor(attrs); } public TextView(Context context) { super(context); - - native_constructor(context); } public TextView(Context context, AttributeSet attrs, int defStyleAttr) { this(context, attrs); } - native void native_constructor(AttributeSet attrs); - native void native_constructor(Context context); + @Override + protected native long native_constructor(Context context, AttributeSet attrs); public final void setText(CharSequence text) { if (text == null) {