UI widget framework (focus routing, layout, windows) #14

Open
opened 2026-07-16 23:44:42 +02:00 by marco · 1 comment
Owner

Grow the hand-rolled MonoGame UI into a proper widget framework as the client's UI surface expands.

Re-scoped (2026-07): the window substrate is now delivered by the Gump/GumpElement framework introduced with #116 — draggable, right-click-closable, input-routed windows composed from reusable elements (GumpBackground, GumpLabel, GumpPicture, GumpItemIcon, GumpButton, GumpHotspot, GumpCard) with base-level wheel scrolling. The paperdoll (#106), inventory panel, and /admin panel (#117) are all built on it. What remains are the two asks that framework did not cover.

Scope (residual)

  • Cross-window keyboard focus routing (Tab order) — Tab moves focus between fields/widgets; only the focused widget receives keyboard input.
  • Refactor login and chat onto the framework (they still use the standalone TextInputWidget/Button + bespoke screen code), with no behavioural regression.

Already delivered (by #116 / #117)

  • Draggable / right-click-closable windows.
  • Reusable elements (labels, pictures, item icons, buttons, hotspots, cards) + wheel scrolling.
  • Mouse hit-testing / z-order within a window; input routed to elements.
  • Consistent theming via shared palettes.

Out of scope

Gameplay for the windows (inventory logic etc.). This is the UI substrate only.

Definition of Done (residual)

Base DoD applies; delta below.

  • Keyboard focus moves with Tab across a window's fields; unfocused widgets ignore keyboard input.
  • Login and chat run on the Gump framework with no behavioural regression.
Grow the hand-rolled MonoGame UI into a proper widget framework as the client's UI surface expands. **Re-scoped (2026-07):** the window substrate is now delivered by the `Gump`/`GumpElement` framework introduced with #116 — draggable, right-click-closable, input-routed windows composed from reusable elements (`GumpBackground`, `GumpLabel`, `GumpPicture`, `GumpItemIcon`, `GumpButton`, `GumpHotspot`, `GumpCard`) with base-level wheel scrolling. The paperdoll (#106), inventory panel, and /admin panel (#117) are all built on it. What remains are the two asks that framework did **not** cover. ## Scope (residual) - [ ] Cross-window **keyboard focus routing (Tab order)** — Tab moves focus between fields/widgets; only the focused widget receives keyboard input. - [ ] Refactor **login and chat** onto the framework (they still use the standalone `TextInputWidget`/`Button` + bespoke screen code), with no behavioural regression. ## Already delivered (by #116 / #117) - [x] Draggable / right-click-closable windows. - [x] Reusable elements (labels, pictures, item icons, buttons, hotspots, cards) + wheel scrolling. - [x] Mouse hit-testing / z-order within a window; input routed to elements. - [x] Consistent theming via shared palettes. ## Out of scope Gameplay for the windows (inventory logic etc.). This is the UI substrate only. ## Definition of Done (residual) _Base DoD applies; delta below._ - [ ] Keyboard focus moves with Tab across a window's fields; unfocused widgets ignore keyboard input. - [ ] Login and chat run on the Gump framework with no behavioural regression.
marco added this to the Alpha milestone 2026-07-20 18:37:58 +02:00
Author
Owner

Re-scoped: the window/element substrate is now realized by the Gump framework (#116). Narrowed this issue to the two residual asks — Tab focus routing and moving login/chat onto the framework.

Re-scoped: the window/element substrate is now realized by the Gump framework (#116). Narrowed this issue to the two residual asks — Tab focus routing and moving login/chat onto the framework.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo#14
No description provided.