wayland: Phase 75 — frame NULL guards in cycling.c

raiseWindow: skip stacking operations when wwin->frame is NULL
(Wayland windows have no X11 frame window to restack).

change_focus_and_raise: skip fullscreen stacking-level restore when
oldFocused->frame is NULL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Levi Neely 2026-03-28 10:00:02 +01:00
parent b44d556351
commit 2c7407a6c8
2 changed files with 7 additions and 1 deletions

View File

@ -40,6 +40,9 @@ static void raiseWindow(WSwitchPanel * swpanel, WWindow * wwin)
{
WNativeWindow swwin = wSwitchPanelGetWindow(swpanel);
if (!wwin->frame)
return; /* Phase 75: Wayland — no frame window to raise */
if (wwin->flags.mapped || wwin->flags.shaded) {
if (swwin != WNATIVE_NONE) {
WNativeWindow win[2];
@ -60,7 +63,7 @@ static WWindow *change_focus_and_raise(WWindow *newFocused, WWindow *oldFocused,
return oldFocused;
/* allow the focused window to float on top of a fullscreen window */
if (oldFocused->flags.fullscreen)
if (oldFocused->flags.fullscreen && oldFocused->frame)
ChangeStackingLevel(oldFocused->frame->core, WMNormalLevel);
wWindowFocus(newFocused, oldFocused);

View File

@ -85,6 +85,9 @@
# client_synth_configure for Wayland windows; wWindowSingleFocus and
# wWindowSaveState use client geometry fallback when frame is NULL
# (build-only check).
# 33. (Phase 75) Frame NULL guards in cycling.c: raiseWindow skips stacking
# for Wayland windows; change_focus_and_raise skips fullscreen stacking
# restore when frame is NULL (build-only check).
#
# This test grows as wl_backend vtable slots are implemented.
#