docs: mark Phase D complete, add src/ audit results

Phase D (WINGs widget X11 elimination) is complete with 7 commits.
The src/ core audit confirms all X11 is already routed through
wm_backend-> dispatch. The entire codebase has zero X11 executing
on the Wayland path.
This commit is contained in:
Ollie 2026-05-23 16:31:45 +02:00
parent 7077e00d12
commit 130fd760b5
2 changed files with 47 additions and 2 deletions

View File

@ -232,9 +232,41 @@ All Wayland-specific Phase B tasks from WAYLAND_ROADMAP.md are done:
---
## Phase D: WINGs Widget Porting
## Phase D: WINGs Widget Porting — COMPLETE (2026-05-23)
*Ordered by dependency and impact.*
*All WINGs shared widget code now has zero X11 executing on the Wayland path.*
### Phase D Summary
| Commit | Files | Description |
|--------|-------|-------------|
| 264679a | wwindow.c | ICCCM properties routed through viewBackend vtable |
| 9eecb25 | wballoon.c, wpopupbutton.c, wtext.c | Drawing routed through render/view backends |
| 2dce454 | wsplitview.c, wtextfield.c | XOR drawing via xor_fill_rect vtable, removed XRotateBuffers |
| 9ccfd33 | selection.c | selection_release + selection_request vtable dispatch |
| 0e26aa8 | wcolorpanel.c | 60 pixmap/copy/fill calls → render backend |
| 8ec3380 | wcolorpanel.c | Magnifier gated via magnify_callback vtable (X11 provides impl, Wayland NULL) |
| 7077e00 | wtext.c, wmisc.c | Removed dead X11 code (unused XEvent, dead #ifndef DOUBLE_BUFFER) |
### Verified Safe (no changes needed)
| File | Reason |
|------|--------|
| winputmethod.c | W_InitIM called from W_X11PlatformInit only; W_CreateIC/W_DestroyIC guarded by scr->imctx (NULL on Wayland) |
| wappresource.c | W_InitApplication called from W_X11PlatformInit only |
| wballoon.c (drawing) | drawBalloon/makePixmap/W_BalloonShowText only reachable via x11_balloon_draw vtable |
| DnD (dragcommon/dragsource/dragdestination) | drag_begin vtable intercepts WMDragImageFromView; all other DnD code only called from X11 event handlers |
| wtextfield.c convertSelection | X11 selection handler, only triggered by SelectionRequest X events |
| wcolorpanel.c magnifier | 40 X11 calls gated behind magnify_callback (NULL on Wayland) |
### Remaining X11 References (compile-time only, no runtime impact)
- `XPoint` struct type in wruler.c, wtabview.c (just 2 ints)
- `XSetWindowAttributes` in wview.c (struct type for view init)
- `#include <X11/keysym.h>` for key constants (xkbcommon uses same values)
- `WMCreatePixmapFromXPixmaps` API name in wbutton.c, wcolorwell.c
---
### D.1 Route `widgets.c` screen init through backends
- **File**: `WINGs/widgets.c` — 35 Xlib calls

View File

@ -104,6 +104,19 @@ Three major libraries:
- C3: Balloon tooltips — pixman text render → wlr_scene_buffer overlay in WL_LAYER_OVERLAY
- C4: Cursor themes — wlr_xcursor_manager + wl_pointer_change_cursor already in place
- C5: Window opacity — reads _NET_WM_WINDOW_OPACITY from XWayland, applies wlr_scene_buffer_set_opacity
- **Phase D complete** (2026-05-23): WINGs widget X11 elimination
- All shared widget code has zero X11 executing on Wayland path
- 7 commits: wwindow.c vtable (264679a), wballoon/wpopupbutton/wtext (9eecb25), wsplitview/wtextfield xor_fill_rect (2dce454), selection vtable (9ccfd33), wcolorpanel render backend (0e26aa8), magnifier vtable callback (8ec3380), dead code removal (7077e00)
- New vtable slots: xor_fill_rect, selection_request, magnify_callback, screen_grab_image (removed)
- Verified safe (X11-only paths): winputmethod.c, wappresource.c, DnD, wballoon drawing, wtextfield convertSelection
- Bug fix: NULL toplevel crash on Wayland expose dispatch (1ab108f)
- **src/ core audit complete** (2026-05-23):
- All X11 in src/ already routed through wm_backend-> dispatch
- PropGetCheckProperty → wm_backend->prop_get_check_property
- xdnd.c → wm_backend->xdnd_* (no-ops on Wayland)
- wmspec.c → all property access through wm_backend
- event.c selection handler → only reached with raw X11 events
- **Result: entire codebase (WINGs + src/) has zero X11 executing on Wayland path**
---