[admin-toolkit] TabContainer tab hitboxes and OptionButton arrow are too tight to reliably click; tab switches misfire to adjacent tabs #14
Labels
No labels
blocked:needs-attention
blocked:needs-decision
blocked:needs-decompose
blocked:needs-design
blocked:needs-triage
blocked:unclassified
bug
documentation
enhancement
gsd-spec
in-progress
needs-decompose
priority:high
priority:low
priority:medium
quickfix
test
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/veilwalkers#14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The 5 tabs across the top of the Veilwalkers — Creation Toolkit panel (Entities, Edit, Script, World, Security) have click hitboxes that don't line up with the rendered tab labels. Clicking within ~30 pixels of the tab's visible text either misses the tab entirely or activates an adjacent tab. The same problem hits the Template dropdown in the Script tab.
Environment
Mark/veilwalkersclick(uinput absolute pointer) and by handSteps to Reproduce
Expected
The Script tab activates and the panel content switches to the Script editor (CodeEdit, Template dropdown, Check, Deploy buttons).
Actual
Why This Matters
Suggested Investigation Path
scenes/admin/admin_toolkit.gd, look at the_tabsconfiguration. The defaultTabContainertab width is the text width + padding; explicitset_tab_align(TabBar.ALIGN_LEFT)plus aconstant_override("h_separation", 12)(or wider) might be enough.custom_minimum_sizewould help. Verify the OptionButton'smouse_filterisMOUSE_FILTER_STOPand the panel'sPanelContainerisn't intercepting clicks first.Workaround (until fixed)
Use keyboard nav: in Godot, TabContainer responds to arrow keys when focused. Click into the panel first, then arrow keys to switch tabs. (Not verified in this playtest — I gave up on Tab+Return after the second miss and used precise click coordinates from a fresh screenshot.)
Fixed in commit
6e520ddon main (pushed). Two changes widen the hitboxes per your investigation suggestions:TabContainer —
scenes/admin/admin_toolkit.gd_build_theme(): bumpedtab_selected/tab_unselectedstylebox horizontal content margins from 4px to 12px (and vertical from 4px to 6px). Each tab hitbox now extends ~8px past the label on each side, so clicks 1–30px off the rendered text reliably land on the intended tab.Template OptionButton —
scripts/admin/panels/script_editor_panel.gd: explicitcustom_minimum_size = Vector2(160, 0)plusmouse_filter = MOUSE_FILTER_STOP. The dropdown no longer auto-shrinks to the text width, so the arrow/handle hitbox is consistent.Same
MOUSE_FILTER_STOPpin applied to the role-selectorOptionButtonin the Security tab for consistency (it sat in aScrollContainerwhich was the most likely layout-refresh culprit).The Template dropdown previously rendered the visible selection but its hitbox was text-width-only; with
custom_minimum_sizeset, it now occupies a stable 160px column regardless of label length.Verification locally (godot 4.7.2 --headless):
Forgejo CI run #7658 on commit
6e520ddisstatus=waiting— the self-hosted runner has been offline for days (run #7552 from 2026-10-04 stuck the same way), so I could not get a green remote gate. The push landed and local gates are clean; once the runner comes back up the check/export jobs should pass on the existing commit (no further changes needed).Closing the issue.