diff --git a/src/api-impl-jni/content/android_content_Context.c b/src/api-impl-jni/content/android_content_Context.c index 98d5a973..7bf696b7 100644 --- a/src/api-impl-jni/content/android_content_Context.c +++ b/src/api-impl-jni/content/android_content_Context.c @@ -11,10 +11,18 @@ JNIEXPORT void JNICALL Java_android_content_Context_native_1updateConfig(JNIEnv *env, jclass class, jobject config) { GtkSettings *settings = gtk_settings_get_default(); - gchar *theme_name; - g_object_get(settings, "gtk-theme-name", &theme_name, NULL); - bool night_mode = strcasestr(theme_name, "dark") || strcasestr(theme_name, "black"); + char *theme_name; + gboolean prefer_dark = false; + gboolean theme_name_from_env = false; + + theme_name = getenv("GTK_THEME"); + theme_name_from_env = theme_name != NULL; + if (!theme_name_from_env) + g_object_get(settings, "gtk-theme-name", &theme_name, "gtk-application-prefer-dark-theme", &prefer_dark, NULL); + bool night_mode = prefer_dark || strcasestr(theme_name, "dark") || strcasestr(theme_name, "black"); if (night_mode) { _SET_INT_FIELD(config, "uiMode", /*UI_MODE_NIGHT_YES*/ 0x20); } -} \ No newline at end of file + if (!theme_name_from_env) + g_free(theme_name); +}