windowmaker-wl/src
lkn d29f2a29c9 wayland: fix close/iconify buttons and miniwindow rendering
Three bugs fixed:

1. Close and iconify buttons broken after frame rendering model change
   Buttons are composited into the titlebar buffer, so their scene_buf
   nodes carry no committed buffer and are invisible to wlr_scene_node_at.
   frame_buf_at() returned the titlebar fb for all button-area clicks,
   routing them to titlebarMouseDown instead of buttonMouseDown.

   Fix: add frame_buf_button_at() -- coordinate walk of frame_list entries
   with scene_buf->buffer == NULL -- and frame_buf_hit() which tries button
   resolution first then falls back to the scene graph. Replace all
   frame_buf_at() calls in button and motion handlers with frame_buf_hit().
   Also emit synthetic WME_LEAVE/WME_ENTER events on sub-window boundary
   crossings so buttonMouseDown's press-track loop works correctly.

2. Iconify crash (SIGSEGV in update_icon_title)
   WMDrawString() was passed icon->core->window (a frame_buf synthetic ID,
   0x10000000+) as the drawable. wl_font_resolve_drawable() only recognised
   WINGs view IDs (0x20000000+), so it cast the frame_buf ID directly as a
   pixman_image_t* -- wild pointer -- SIGSEGV.

   Fix: add W_RegisterBacking()/W_UnregisterBacking() to wview_wl.c.
   Register each frame_buf's pixman image in the backing table on creation
   and unregister on destroy. Extend the ID range check in wfont_wl.c and
   wrender_wl.c from 0x20000000 down to 0x10000000 so frame_buf IDs resolve
   correctly via W_GetViewBacking().

3. Resizebar visible after iconify + miniwindow not rendering
   wl_window_unmap() disabled fb->scene_buf->node individually, but a
   subsequent wl_frame_paint() could re-enable and re-commit it while the
   window was still iconified.

   Fix: for top-level frames, disable fb->tree->node -- hides the entire
   scene tree (frame buffer, titlebar, resizebar, client surface) atomically.
   Symmetric enable in wl_window_map().

   Miniwindow icons were invisible: icon_paint was a noop so the frame_buf
   image was never committed to the scene graph. Add wl_icon_paint() mirroring
   wl_appicon_paint(): tile + file_image composite + title text, committed
   via wlr_scene_buffer_set_buffer(). Wire into wIconPaint() in icon.c so
   the backend finalises the surface after policy-layer setup.
2026-05-15 09:49:06 +02:00
..
backend wayland: fix close/iconify buttons and miniwindow rendering 2026-05-15 09:49:06 +02:00
GNUstep.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
Makefile.am wayland: Phase 29 — pixman SHM surface primitives 2026-03-31 13:31:06 +02:00
WindowMaker.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
actions.c wl_backend: fix frame decoration repaint on maximize/unmaximize 2026-05-14 23:22:46 +02:00
actions.h moveres: replace XEvent with WMEvent in move/resize functions 2026-05-14 13:15:34 +02:00
appicon.c Remove XEvent from dock.c and appicon.c click handlers 2026-05-13 16:45:01 +02:00
appicon.h Remove XEvent from dock.c and appicon.c click handlers 2026-05-13 16:45:01 +02:00
application.c Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
application.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
appmenu.c Phase 80d: clean X11 from appmenu, main, switchpanel, window, xutil, texture 2026-05-13 10:42:06 +02:00
appmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
balloon.c Fix input dispatch: custom event loop + modal menu support 2026-05-13 16:22:13 +02:00
balloon.h Phase 80p: clean X11 from balloon.c, dock.c 2026-05-13 12:25:57 +02:00
client.c Phase 80t: ZERO X11 symbols in policy files — architecture complete 2026-05-13 13:03:14 +02:00
client.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
colormap.c Phase 80g: clean X11 from motif.c, colormap.c, resources.c 2026-05-13 10:55:30 +02:00
colormap.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
cycling.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
cycling.h WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
def_pixmaps.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
defaults.c Phase 80l: clean X11 from defaults.c 2026-05-13 11:27:07 +02:00
defaults.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dialog.c x11: resize fake leader window to panel dimensions before reparenting 2026-05-14 21:25:51 +02:00
dialog.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dock.c Remove XEvent from dock.c and appicon.c click handlers 2026-05-13 16:45:01 +02:00
dock.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
dockedapp.c x11: resize fake leader window to panel dimensions before reparenting 2026-05-14 21:25:51 +02:00
dockedapp.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
event.c WINGs/wevent: remove _x11_raw from WMHandleEvent dispatch path 2026-05-14 20:24:05 +02:00
event.h WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
extend_pixmaps.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
framewin.c wl_backend: fix button positioning on frame resize 2026-05-14 23:29:50 +02:00
framewin.h Remove XEvent from frame callbacks (titlebar, resizebar, buttons) 2026-05-13 17:27:02 +02:00
geom.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
geom.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
geomview.c WIP: Wayland backend - fix atoms, OR surface compositing, frame/window ops 2026-05-13 07:05:22 +02:00
geomview.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
icon.c wayland: fix close/iconify buttons and miniwindow rendering 2026-05-15 09:49:06 +02:00
icon.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
keybind.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
main.c Phase 84: eliminate all backend guards from policy code 2026-05-14 12:41:01 +02:00
main.h Phase 84: eliminate all backend guards from policy code 2026-05-14 12:41:01 +02:00
menu.c menu: include window_menu in findMenu hit-testing 2026-05-14 19:25:42 +02:00
menu.h Phase 80c: add vtable slots for cross-mode rendering functions 2026-05-13 10:24:21 +02:00
misc.c Phase 80s: clean X11 from menu.c, misc.c 2026-05-13 12:55:58 +02:00
misc.h Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
monitor.c Phase 84: eliminate all backend guards from policy code 2026-05-14 12:41:01 +02:00
monitor.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
motif.c Phase 80g: clean X11 from motif.c, colormap.c, resources.c 2026-05-13 10:55:30 +02:00
motif.h Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
moveres.c moveres: replace XEvent with WMEvent in move/resize functions 2026-05-14 13:15:34 +02:00
osdep.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_bsd.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_darwin.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_linux.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
osdep_stub.c WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
pixmap.c Phase 80f: clean X11 from client.c, pixmap.c 2026-05-13 10:48:54 +02:00
pixmap.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
placement.c wayland: Phase 70 — apply WIN_WORKSPACE macro to all frame->workspace reads 2026-03-28 09:46:35 +01:00
placement.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
properties.c Phase 80j: clean X11 from shutdown.c, framewin.c, properties.c 2026-05-13 11:18:19 +02:00
properties.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
resources.c Phase 80g: clean X11 from motif.c, colormap.c, resources.c 2026-05-13 10:55:30 +02:00
resources.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
rootmenu.c Phase 80h: clean X11 from rootmenu.c 2026-05-13 10:59:18 +02:00
rootmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
screen.c Phase 84: eliminate all backend guards from policy code 2026-05-14 12:41:01 +02:00
screen.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
session.c wayland: Phase 69 — WIN_WORKSPACE macro; safe workspace reads without frame 2026-03-28 09:43:09 +01:00
session.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
shutdown.c Phase 84: eliminate all backend guards from policy code 2026-05-14 12:41:01 +02:00
shutdown.h Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
stacking.c wayland: implement correct stacking model with scene-graph level trees 2026-05-15 09:11:46 +02:00
stacking.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
startup.c Phase 84: eliminate all backend guards from policy code 2026-05-14 12:41:01 +02:00
startup.h Phase 80k: clean X11 from startup.c 2026-05-13 11:24:45 +02:00
superfluous.c Phase 80o: clean X11 from superfluous.c 2026-05-13 11:46:40 +02:00
superfluous.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
switchmenu.c wayland: Phase 69 — WIN_WORKSPACE macro; safe workspace reads without frame 2026-03-28 09:43:09 +01:00
switchmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
switchpanel.c Phase 80d: clean X11 from appmenu, main, switchpanel, window, xutil, texture 2026-05-13 10:42:06 +02:00
switchpanel.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
texture.c Move wDrawBevel X11 rendering to backend via draw_bevel vtable slot 2026-05-13 10:34:22 +02:00
texture.h Fix FREE_PIXMAP macro to use vtable instead of direct XFreePixmap 2026-05-13 10:32:47 +02:00
usermenu.c wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
usermenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wconfig.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wconfig.h.in Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wcore.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wcore.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wdefaults.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
wdefaults.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
window.c moveres: replace XEvent with WMEvent in move/resize functions 2026-05-14 13:15:34 +02:00
window.h Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
winmenu.c Phase 80b: eliminate if(dpy) guards and replace X11 calls with vtable dispatch 2026-05-13 10:21:00 +02:00
winmenu.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
winspector.c x11: resize fake leader window to panel dimensions before reparenting 2026-05-14 21:25:51 +02:00
winspector.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wmspec.c wl_backend: fix unshade — re-enable and raise client surface and frame 2026-05-14 22:26:07 +02:00
wmspec.h Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
workspace.c Phase 80b: eliminate if(dpy) guards and replace X11 calls with vtable dispatch 2026-05-13 10:21:00 +02:00
workspace.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
wsmap.c Phase 80i: clean X11 from winspector.c, wsmap.c 2026-05-13 11:04:26 +02:00
wsmap.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
xdg-shell-protocol.h wayland: Phase 35 — advertise core Wayland protocol globals 2026-03-27 23:09:39 +01:00
xdnd.c Phase 80: eliminate all 43 if(!dpy) return guards via vtable dispatch 2026-05-13 10:01:57 +02:00
xdnd.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00
xinerama.c Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
xinerama.h Wayland backend abstraction: WMBackend vtable (Phases 0–30) 2026-03-27 19:20:00 +01:00
xmodifier.c wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
xmodifier.h wayland: Phase 77 — XKB keymap + keysym_to_keycode + modifier masks 2026-03-28 20:32:07 +01:00
xutil.c Phase 80d: clean X11 from appmenu, main, switchpanel, window, xutil, texture 2026-05-13 10:42:06 +02:00
xutil.h WindowMaker 0.96.0 upstream source 2026-03-26 15:38:49 +01:00