Wire up color scheme change notifications on X11 as well

This commit is contained in:
Kovid Goyal
2024-08-11 22:20:39 +05:30
parent 2bff4af9bf
commit 191ccf2d54
3 changed files with 7 additions and 2 deletions

View File

@@ -111,7 +111,9 @@ HANDLER(process_desktop_settings)
if (!dbus_message_iter_next(&array)) break; if (!dbus_message_iter_next(&array)) break;
} }
#undef die #undef die
#ifndef _GLFW_X11
if (cursor_theme_changed) _glfwPlatformChangeCursorTheme(); if (cursor_theme_changed) _glfwPlatformChangeCursorTheme();
#endif
} }
#undef HANDLER #undef HANDLER
@@ -124,8 +126,7 @@ read_desktop_settings(DBusConnection *session_bus) {
dbus_message_iter_init_append(msg, &iter); dbus_message_iter_init_append(msg, &iter);
if (!dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &array_iter)) { return false; } if (!dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &array_iter)) { return false; }
if (!dbus_message_iter_close_container(&iter, &array_iter)) { return false; } if (!dbus_message_iter_close_container(&iter, &array_iter)) { return false; }
bool ok = call_method_with_msg(session_bus, msg, DBUS_TIMEOUT_USE_DEFAULT, process_desktop_settings, NULL); return call_method_with_msg(session_bus, msg, DBUS_TIMEOUT_USE_DEFAULT, process_desktop_settings, NULL);
return ok;
} }
void void

View File

@@ -144,6 +144,7 @@
"linux_joystick.h", "linux_joystick.h",
"null_joystick.h", "null_joystick.h",
"linux_notify.h", "linux_notify.h",
"linux_desktop_settings.h",
"main_loop.h" "main_loop.h"
], ],
"sources": [ "sources": [
@@ -160,6 +161,7 @@
"backend_utils.c", "backend_utils.c",
"linux_joystick.c", "linux_joystick.c",
"null_joystick.c", "null_joystick.c",
"linux_desktop_settings.c",
"linux_notify.c" "linux_notify.c"
] ]
} }

2
glfw/x11_init.c vendored
View File

@@ -30,6 +30,7 @@
#define _GNU_SOURCE #define _GNU_SOURCE
#include "internal.h" #include "internal.h"
#include "backend_utils.h" #include "backend_utils.h"
#include "linux_desktop_settings.h"
#include <X11/Xresource.h> #include <X11/Xresource.h>
@@ -648,6 +649,7 @@ int _glfwPlatformInit(void)
"X11: Failed to initialize event loop data"); "X11: Failed to initialize event loop data");
} }
glfw_dbus_init(&_glfw.x11.dbus, &_glfw.x11.eventLoopData); glfw_dbus_init(&_glfw.x11.dbus, &_glfw.x11.eventLoopData);
glfw_initialize_desktop_settings(); // needed for color scheme change notification
_glfw.x11.screen = DefaultScreen(_glfw.x11.display); _glfw.x11.screen = DefaultScreen(_glfw.x11.display);
_glfw.x11.root = RootWindow(_glfw.x11.display, _glfw.x11.screen); _glfw.x11.root = RootWindow(_glfw.x11.display, _glfw.x11.screen);