Skip to content

Scene panel: scroll the rows - #230

Merged
rixnobis merged 4 commits into
mainfrom
scene-scroll
Oct 21, 2026
Merged

rixnobis merged 4 commits into
mainfrom
scene-scroll

Conversation

@rixnobis

Copy link
Copy Markdown
Contributor

The Scene panel now scrolls once the object list is taller than the panel. The wheel scrolls the rows, and a thin thumb at the right edge, like the inspector's, can be dragged. Dragging a row near the top or bottom edge scrolls the list too.

Picking an object in the viewport, adding one, or using --select brings its row into view and opens any closed groups above it. Rows scrolled out of the list take no drops. tests/treescrollcheck.py covers it with 80 objects plus a nested group, and runs in CI.

Fixes #227

A scripted editor run now ends with "selected: <name>" (or "(none)")
next to its other state lines, so a GUI check can tell what a click
picked without reading the inspector. The Scene panel's filter field is
the named control treesearch, and the part of the panel the rows are
drawn in is treelist.panel, which --scroll-to also takes as a panel.
Nothing is drawn differently.
A scene with more objects than the panel fits could not reach its last
rows. The rows now scroll with the wheel, clamped to them, with a thin
thumb at the right edge as in the inspector that can also be dragged.
A row dragged near the top or bottom edge scrolls the list. A selection
made anywhere (viewport, a new object, --select) or a new filter brings
the selected row into view once; the wheel is not fought otherwise.
Rows scrolled out of the list take no drop or dropped file. The scroll
arithmetic is in ui/list_scroll.hh with unit tests; treescrollcheck.py
runs in CI.
The markers the viewport draws for objects with neither mesh nor
children (and the lightbulbs for lights) are now the named controls
vp.marker.<object name>, so a scripted check can click one with
--click @vp.marker.<name> and select that object the way a user picks
it in the view. Nothing is drawn differently.
An object picked in the viewport, added, or given with --select while
a group above it is closed had no row to scroll to. The tree now opens
every closed group above it, the scene row included, and scrolls to
the row on the next frame. It tries once per selection: a selection
made by clicking a row in the tree never opens anything, and a group
the user closes again afterwards stays closed while the selection is
unchanged. treescrollcheck.py picks a child of a closed group from its
viewport marker.
@rixnobis
rixnobis merged commit 8c3d6d6 into main Oct 21, 2026
5 checks passed
@rixnobis
rixnobis deleted the scene-scroll branch October 21, 2026 04:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Can't scroll Scene panel

1 participant