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,