Skip to content

Feature: Several objects selected at once - #43

Merged
StackEnjoyer merged 25 commits into
mainfrom
feature/multi-select
Oct 26, 2026
Merged

StackEnjoyer merged 25 commits into
mainfrom
feature/multi-select

Conversation

@StackEnjoyer

Copy link
Copy Markdown
Owner

Features

  • Ctrl/Cmd+click: adds an object to the selection or removes it, in the 3D view and the tree
  • Selection moved, rotated and stepped by keys as one, about its center; one undo step per gesture
  • Card and inspector of a selection: "N objects", its members, hide and remove all at once
  • select!(gui, objs::AbstractVector): selects several objects from code
  • Breaking: Ctrl+click no longer resets the camera; the selection takes the binding
select!(gui, [mirror1, mirror2, mirror3])   # like Ctrl+click on each
translate3d!(gui.controls.selected[], [0, 0.01, 0])

Doc changes

  • Live view and kinematic controls: selecting several objects, Ctrl+click in the key table
  • Agent skill: SKILL.md, API.md, WIDGETS.md updated

Closes #39

Hugo Uittenbosch and others added 16 commits October 23, 2026 22:57
…ui, objs)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The card (compact) and the inspector (app) of a _MultiSelection show
"N objects", the subtitle "Selection", a row per object whose button
selects it alone, the actions hide and remove, no pages and no pin.
Hiding hides all objects (shows all if all are hidden); hidden objects
leave a selection of several. A click on an object of a group of the
selection selects it alone. _label(::LiveView, ::_MultiSelection)
resolves the ambiguity with the generic _label.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… reset, history (W1)

Ctrl+click (Cmd on macOS) adds the top-level object to the selection or removes the
member; its press is consumed, such that Camera3D does not reset. A drag on any member,
the gizmo and the keys move the selection as one, without snapping; Esc deselects it,
Backspace resets all its objects as one undo action; the spectator mode restores it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e other features

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rl+click in the docs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tree sets `toggled` instead of `clicked` for a click on a label with Ctrl or Cmd held at
the press; `_tree_toggle!` toggles a movable object via `_toggle_select!`, other rows behave
like a plain click. `_set_selected!` takes a vector of keys (`selected_keys`), highlights all
their rows and scrolls to the last added one; `_on_selected!` reveals and highlights all objects
of a selection of several.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…_is_movable, _drag_snaps trait (W1)

The methods for KinematicController and _MultiSelection are self-contained, since the
untyped ones of the W0 core are removed; _drag_snaps is a trait by dispatch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the W0 ambiguities

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… on the layout

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@StackEnjoyer StackEnjoyer added this to the v0.3.0 milestone Oct 24, 2026
@StackEnjoyer StackEnjoyer added the enhancement New feature or request label Oct 24, 2026
@codecov-commenter

codecov-commenter commented Oct 24, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 96.29630% with 18 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/LiveLinks.jl 68.42% 6 Missing ⚠️
src/LiveMultiSelect.jl 93.42% 5 Missing ⚠️
src/LiveCards.jl 92.50% 3 Missing ⚠️
src/LiveCardPages.jl 0.00% 1 Missing ⚠️
src/LiveInteraction.jl 99.12% 1 Missing ⚠️
src/LiveMarkers.jl 0.00% 1 Missing ⚠️
src/LiveSystemTrace.jl 0.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Hugo Uittenbosch and others added 9 commits October 24, 2026 15:38
…fter a tilt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t of Camera3D, which also fired at a key event of Ctrl

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t: heading in the plane of the rotation axis

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o rotation, orthonormal frame of the selection); card rows of one widget are settled too

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sed _axis_angle_from_rotmatrix, _set_pose! is the exact one; clip planes keep their local control axes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	src/LiveInteraction.jl
#	src/LiveLinks.jl
#	src/LiveTrace.jl
#	test/runtests.jl
…ce a frame drew them, the viewports of their scenes grow by a pixel and take their size again a few ticks later

GLMakie kept the projection of the first frame (default size of a new scene, or the width before the label was set), e.g. for the names of a selection of several and the buttons in the head of the card. The settle now counts ticks and waits for a drawn frame instead of a later clock time, and covers the head actions too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f their viewports takes the cameras anew, a move in the same frame laid them out back to their size

Measured on the pages of cards with textboxes (60 steps per layout): with the move, 22 (compact) and 16 (app) plots kept an outdated projection, without it none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ixel and take their size again, instead of a move of the columns of its boxes

The form joins the settle list of the cards (`gui.cards.settle`, now the layouts per entry); `_settle_catalog_form!` and the field `settle` of the catalog widget are gone. Checked on all entries of the catalog (117 forms, 336 textboxes per layout): no plot with an outdated projection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@StackEnjoyer
StackEnjoyer merged commit 6f3cfea into main Oct 26, 2026
3 checks passed
@StackEnjoyer
StackEnjoyer deleted the feature/multi-select branch October 26, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Several objects are selected at once

2 participants