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 eb6eb209..c2e5888d 100644 --- a/src/api-impl-jni/generated_headers/android_view_View.h +++ b/src/api-impl-jni/generated_headers/android_view_View.h @@ -287,6 +287,14 @@ JNIEXPORT void JNICALL Java_android_view_View_native_1requestLayout JNIEXPORT void JNICALL Java_android_view_View_nativeInvalidate (JNIEnv *, jclass, jlong); +/* + * Class: android_view_View + * Method: setBackgroundColor + * Signature: (I)V + */ +JNIEXPORT void JNICALL Java_android_view_View_setBackgroundColor + (JNIEnv *, jobject, jint); + /* * Class: android_view_View * Method: setVisibility diff --git a/src/api-impl-jni/views/android_view_View.c b/src/api-impl-jni/views/android_view_View.c index 22875a85..ead3d463 100644 --- a/src/api-impl-jni/views/android_view_View.c +++ b/src/api-impl-jni/views/android_view_View.c @@ -321,3 +321,17 @@ JNIEXPORT void JNICALL Java_android_view_View_native_1requestLayout(JNIEnv *env, gtk_widget_queue_resize(widget); } + +// FIXME: this will probably behave unfortunately if called multiple times +JNIEXPORT void JNICALL Java_android_view_View_setBackgroundColor(JNIEnv *env, jobject this, jint color) +{ + GtkWidget *widget = GTK_WIDGET(_PTR(_GET_LONG_FIELD(this, "widget"))); + + GtkCssProvider *css_provider = gtk_css_provider_new(); + + char *css_string = g_markup_printf_escaped("* { background-color: #%06x%02x; }", color & 0xFFFFFF, (color >> 24) & 0xFF); + gtk_css_provider_load_from_string(css_provider, css_string); + g_free(css_string); + + gtk_style_context_add_provider(gtk_widget_get_style_context(gtk_widget_get_parent(widget)), GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); +} diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index c8eea335..185410ee 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -962,7 +962,7 @@ public class View extends Object { } private static native void nativeInvalidate(long widget); - public void setBackgroundColor(int color) {} + public native void setBackgroundColor(int color); public native void setVisibility(int visibility); public void setPadding(int left, int top, int right, int bottom) {} public void setBackgroundResource(int resid) {