B1: fix appicon_show for Wayland (was no-op, icons never placed)
The Wayland backend already had full wl_appicon_paint and wl_icon_paint implementations (tile + image composite + text + scene commit), but appicon_show was a no-op stub. This meant app icons were never initially placed or mapped when applications launched. Fix: wl_appicon_show now calls paint_app_icon() (pure policy code that handles PlaceIcon + wAppIconMove + wLowerFrame + window_map via vtable), identical to the X11 backend. Also mark A7 (placement) as verified — pure policy, zero backend calls.
This commit is contained in:
parent
1e4caddb9f
commit
57a6497137
|
|
@ -81,6 +81,8 @@ Three major libraries:
|
|||
- C.1 skipped: XOR rubber-band drawing in `moveres.c` is inside `#if 0` — dead code
|
||||
- Native XDG client rendering fix: `surface_commit_listener` calls `wlr_output_schedule_frame()` on every buffer commit (commit 8d963e7)
|
||||
- **A4 Workspace switching**: map/unmap via vtable already worked; added workspace name badge overlay (pixman text rendering in WL_LAYER_OVERLAY, fade animation via new `workspace_badge_get_background` vtable slot)
|
||||
- **A7 Placement**: verified pure policy code, zero backend calls needed
|
||||
- **B1 App icon rendering**: wl_appicon_paint/wl_icon_paint already implemented; fixed wl_appicon_show (was no-op, now calls paint_app_icon for initial placement + map)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -96,7 +98,7 @@ Priority: HIGH — needed for daily-driver use.
|
|||
| A4 | ~~Workspace switching (create/destroy/switch)~~ | workspace.c, scene tree reparenting | ✅ Done |
|
||||
| A5 | ~~Alt-Tab window cycling + switch panel~~ | cycling.c, switchpanel.c, vtable switchpanel_enter | Medium |
|
||||
| A6 | ~~Window iconification (minimize) + miniwindow~~ | icon.c, appicon.c, vtable icon_paint/icon_update_pixmap | Done |
|
||||
| A7 | Window placement algorithms (smart/cascade/random) | placement.c (may already work via vtable) | Low |
|
||||
| A7 | ~~Window placement algorithms (smart/cascade/random)~~ | placement.c (pure policy, no backend calls) | ✅ Done |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -104,7 +106,7 @@ Priority: HIGH — needed for daily-driver use.
|
|||
|
||||
| # | Task | Key Files | Complexity |
|
||||
|---|------|-----------|------------|
|
||||
| B1 | App icon rendering (load .tiff/.png, render into dock) | appicon.c, wrlib loaders, vtable appicon_show | Medium |
|
||||
| B1 | ~~App icon rendering (load .tiff/.png, render into dock)~~ | appicon.c, wrlib loaders, vtable appicon_show | ✅ Done |
|
||||
| B2 | Dock icon drag & drop (reorder, add/remove) | dock.c DnD handlers | Medium |
|
||||
| B3 | Dock auto-launch on login | dock.c session restore | Low |
|
||||
| B4 | Clip workspace indicator (number, arrows) | dock.c clip paint | Low |
|
||||
|
|
@ -230,7 +232,7 @@ NOW (daily-driver basics):
|
|||
~~A4. Workspace switching~~ ✅
|
||||
~~A5. Alt-Tab cycling~~ ✅
|
||||
A6. Icon/minimize
|
||||
A7. Placement (verify)
|
||||
~~A7. Placement (verify)~~ ✅
|
||||
|
||||
NEXT (visual completeness):
|
||||
B1. App icon rendering (wrlib → pixman)
|
||||
|
|
|
|||
|
|
@ -7766,7 +7766,7 @@ wl_icon_paint(WIcon *icon)
|
|||
if (fb->tree)
|
||||
wlr_scene_node_set_enabled(&fb->tree->node, true);
|
||||
}
|
||||
static void wl_noop_appicon_show(WApplication *wapp) { (void)wapp; }
|
||||
static void wl_appicon_show(WApplication *wapp) { paint_app_icon(wapp); }
|
||||
static void wl_appicon_paint(WAppIcon *aicon)
|
||||
{
|
||||
WIcon *icon = aicon->icon;
|
||||
|
|
@ -8499,7 +8499,7 @@ const WMBackend wl_backend = {
|
|||
.get_command_for_window = wl_get_command_for_window,
|
||||
.icon_update_pixmap = wl_noop_icon_update_pixmap,
|
||||
.icon_paint = wl_icon_paint,
|
||||
.appicon_show = wl_noop_appicon_show,
|
||||
.appicon_show = wl_appicon_show,
|
||||
.appicon_paint = wl_appicon_paint,
|
||||
.restore_desktop = wl_noop_restore_desktop,
|
||||
.wipe_desktop = wl_noop_wipe_desktop,
|
||||
|
|
|
|||
Loading…
Reference in New Issue