From f4c73fd6dd23f89301e6ef9667d4730843e5dc39 Mon Sep 17 00:00:00 2001 From: lkn Date: Wed, 24 Jun 2026 19:49:47 +0200 Subject: [PATCH] fix noop violations: implement wipe_desktop, get_shortcut_string, icon_select/change_title wipe_desktop: iterate windows sending DELETE_WINDOW or killing (needed for proper compositor shutdown). get_shortcut_string, icon_select, icon_change_title: delegate to pure WM functions that have no X11 dependency. --- src/backend/wayland/wl_stubs.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/backend/wayland/wl_stubs.c b/src/backend/wayland/wl_stubs.c index 1f8b88e..4974e83 100644 --- a/src/backend/wayland/wl_stubs.c +++ b/src/backend/wayland/wl_stubs.c @@ -209,7 +209,19 @@ void wl_noop_icon_update_pixmap(WIcon *icon) { (void)icon; } void wl_noop_restore_desktop(WScreen *scr) { (void)scr; } -void wl_noop_wipe_desktop(WScreen *scr) { (void)scr; }void wl_noop_free_color(WScreen *scr, unsigned long pixel) +static void wl_wipe_desktop(WScreen *scr) +{ + WWindow *wwin = scr->focused_window; + while (wwin) { + WWindow *prev = wwin->prev; + if (wwin->protocols.DELETE_WINDOW) + wClientSendProtocol(wwin, w_global.atom.wm.delete_window, + w_global.timestamp.last_event); + else + wClientKill(wwin); + wwin = prev; + } +}void wl_noop_free_color(WScreen *scr, unsigned long pixel) { (void)scr; (void)pixel; } void wl_noop_colormap_install(WScreen *scr, WWindow *wwin) @@ -530,7 +542,7 @@ const WMBackend wl_backend = { .appicon_show = wl_appicon_show, .appicon_paint = wl_appicon_paint, .restore_desktop = wl_noop_restore_desktop, - .wipe_desktop = wl_noop_wipe_desktop, + .wipe_desktop = wl_wipe_desktop, .get_color_for_colormap = wl_get_color_for_colormap, .free_color = wl_noop_free_color, .colormap_install = wl_noop_colormap_install,