From 35f26faa90ed6e22d1667ad50529c860b901b076 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sun, 24 Mar 2024 16:55:04 +0100 Subject: [PATCH] ImageButton: implement setDrawable() --- .../generated_headers/android_widget_ImageButton.h | 8 ++++++++ src/api-impl-jni/widgets/android_widget_ImageButton.c | 8 ++++++++ src/api-impl/android/widget/ImageButton.java | 2 ++ src/api-impl/android/widget/ImageView.java | 2 ++ 4 files changed, 20 insertions(+) diff --git a/src/api-impl-jni/generated_headers/android_widget_ImageButton.h b/src/api-impl-jni/generated_headers/android_widget_ImageButton.h index 2e3e7d5a..1c6489da 100644 --- a/src/api-impl-jni/generated_headers/android_widget_ImageButton.h +++ b/src/api-impl-jni/generated_headers/android_widget_ImageButton.h @@ -215,6 +215,14 @@ JNIEXPORT jlong JNICALL Java_android_widget_ImageButton_native_1constructor JNIEXPORT void JNICALL Java_android_widget_ImageButton_native_1setPixbuf (JNIEnv *, jobject, jlong); +/* + * Class: android_widget_ImageButton + * Method: native_setDrawable + * Signature: (JJ)V + */ +JNIEXPORT void JNICALL Java_android_widget_ImageButton_native_1setDrawable + (JNIEnv *, jobject, jlong, jlong); + /* * Class: android_widget_ImageButton * Method: native_setOnClickListener diff --git a/src/api-impl-jni/widgets/android_widget_ImageButton.c b/src/api-impl-jni/widgets/android_widget_ImageButton.c index ba0e1665..348b0f6c 100644 --- a/src/api-impl-jni/widgets/android_widget_ImageButton.c +++ b/src/api-impl-jni/widgets/android_widget_ImageButton.c @@ -62,3 +62,11 @@ JNIEXPORT void JNICALL Java_android_widget_ImageButton_native_1setOnClickListene g_signal_connect(button, "clicked", G_CALLBACK(clicked_cb), callback_data); } + +JNIEXPORT void JNICALL Java_android_widget_ImageButton_native_1setDrawable(JNIEnv *env, jobject this, jlong widget_ptr, jlong paintable_ptr) +{ + GtkButton *button = _PTR(_GET_LONG_FIELD(this, "widget")); + GtkPicture *picture = GTK_PICTURE(gtk_button_get_child(GTK_BUTTON(button))); + GdkPaintable *paintable = _PTR(paintable_ptr); + gtk_picture_set_paintable(picture, paintable); +} diff --git a/src/api-impl/android/widget/ImageButton.java b/src/api-impl/android/widget/ImageButton.java index 38829d54..25e77c08 100644 --- a/src/api-impl/android/widget/ImageButton.java +++ b/src/api-impl/android/widget/ImageButton.java @@ -21,6 +21,8 @@ public class ImageButton extends ImageView { protected native long native_constructor(Context context, AttributeSet attrs); @Override protected native void native_setPixbuf(long pixbuf); + @Override + protected native void native_setDrawable(long widget, long paintable); protected native void native_setOnClickListener(long widget, OnClickListener l); @Override diff --git a/src/api-impl/android/widget/ImageView.java b/src/api-impl/android/widget/ImageView.java index 4f177390..1d9e229b 100644 --- a/src/api-impl/android/widget/ImageView.java +++ b/src/api-impl/android/widget/ImageView.java @@ -33,6 +33,8 @@ public class ImageView extends View { if (resid != 0 && !getResources().getString(resid).endsWith(".xml")) { bitmap = BitmapFactory.decodeResource(getResources(), resid); native_setPixbuf(bitmap.pixbuf); + } else if (resid != 0) { + setImageDrawable(getResources().getDrawable(resid)); } } }