From 130fd760b52d7d63571e191eedbddf06946ab777 Mon Sep 17 00:00:00 2001 From: Ollie Date: Sat, 23 May 2026 16:31:45 +0200 Subject: [PATCH] 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. --- ACTION_PLAN.md | 36 ++++++++++++++++++++++++++++++++++-- WAYLAND_ROADMAP.md | 13 +++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/ACTION_PLAN.md b/ACTION_PLAN.md index a584292..b203782 100644 --- a/ACTION_PLAN.md +++ b/ACTION_PLAN.md @@ -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 ` 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 diff --git a/WAYLAND_ROADMAP.md b/WAYLAND_ROADMAP.md index 880d384..2acd9da 100644 --- a/WAYLAND_ROADMAP.md +++ b/WAYLAND_ROADMAP.md @@ -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** ---