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 fb3965f3..4dd0a51f 100644 --- a/src/api-impl-jni/generated_headers/android_widget_ScrollView.h +++ b/src/api-impl-jni/generated_headers/android_widget_ScrollView.h @@ -207,6 +207,22 @@ extern "C" { JNIEXPORT jlong JNICALL Java_android_widget_ScrollView_native_1constructor (JNIEnv *, jobject, jobject, jobject); +/* + * Class: android_widget_ScrollView + * Method: native_addView + * Signature: (JJILandroid/view/ViewGroup/LayoutParams;)V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1addView + (JNIEnv *, jobject, jlong, jlong, jint, jobject); + +/* + * Class: android_widget_ScrollView + * Method: native_removeView + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1removeView + (JNIEnv *, jobject, jlong, jlong); + #ifdef __cplusplus } #endif diff --git a/src/api-impl-jni/widgets/android_widget_ScrollView.c b/src/api-impl-jni/widgets/android_widget_ScrollView.c index 9144ae14..19dff634 100644 --- a/src/api-impl-jni/widgets/android_widget_ScrollView.c +++ b/src/api-impl-jni/widgets/android_widget_ScrollView.c @@ -6,17 +6,27 @@ #include "WrapperWidget.h" #include "../generated_headers/android_widget_ScrollView.h" -#include "../generated_headers/android_view_ViewGroup.h" - -// FIXME not a scrollview 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); - GtkWidget *wrapper = g_object_ref(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), "ScrollView"); - return _INTPTR(box); + GtkWidget *scrolled_window = gtk_scrolled_window_new(); + wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), scrolled_window); + gtk_widget_set_name(scrolled_window, "ScrollView"); + return _INTPTR(scrolled_window); +} + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1addView(JNIEnv *env, jobject this, jlong widget_ptr, jlong child_ptr, jint index, jobject params) +{ + GtkScrolledWindow *widget = _PTR(widget_ptr); + GtkWidget *child = gtk_widget_get_parent(_PTR(child_ptr)); + + gtk_scrolled_window_set_child(widget, child); +} + +JNIEXPORT void JNICALL Java_android_widget_ScrollView_native_1removeView(JNIEnv *env, jobject this, jlong widget_ptr, jlong child_ptr) +{ + GtkScrolledWindow *widget = _PTR(widget_ptr); + + gtk_scrolled_window_set_child(widget, NULL); } diff --git a/src/api-impl/android/widget/ScrollView.java b/src/api-impl/android/widget/ScrollView.java index 34ae6c9e..16566002 100644 --- a/src/api-impl/android/widget/ScrollView.java +++ b/src/api-impl/android/widget/ScrollView.java @@ -15,6 +15,10 @@ public class ScrollView extends ViewGroup { @Override protected native long native_constructor(Context context, AttributeSet attrs); + @Override + protected native void native_addView(long widget, long child, int index, LayoutParams params); + @Override + protected native void native_removeView(long widget, long child); public void setFillViewport(boolean fillViewport) {} }