Improve annotation controls and selection editing - #397
Merged
Merged
Conversation
Stepping rounded first and then added the delta, so a 30.8 px stroke went to 32 on + and a 3.2 px one to 2 on -, skipping a value. One shared helper next to the stroke limits now lands on the nearest whole pixel in the step's direction, and both the selection steppers and the tool nudges (wheel, keyboard, radial) use it.
Only the zoom chip centred its zoom, through a pointer-in-chip check in the backend; the command palette zoomed on the pointer wherever it was, the toolbar on its own button, and the context menu on the menu row. Zoom requests now carry a ZoomAnchor: shortcuts keep the pointer, the chip, toolbar, and palette centre the screen, and the context menu centres where it was opened (the screen centre when opened from the keyboard into a corner). The backend resolves the anchor instead of testing the chip rectangle.
A focused slider kept its navigation keys even with Ctrl, Alt, or Super held, so Ctrl+PgUp/PgDn and other chords never reached the overlay, and the relay kept keypad arrows the slider then ignored. The relay and the slider now share one navigation-key map, and chords always go to the overlay. After Escape released a slider's keyboard focus, Hyprland moved focus only on the next pointer motion, so shortcuts typed meanwhile were lost. The relay now reports that the toolbar gave up the keyboard, and the overlay reclaims it the way startup does, asking for Exclusive until the keyboard enters and giving up after 750 ms so the GTK bars never stay click-through.
The chip's "Fit" button reset to 100% and fit nothing; it now reads "Reset". At 100% the zoom-out and Reset buttons have nothing to do, so they are dimmed, get no hover or pointer cursor, and consume clicks without acting or nudging the shortcut coach. They keep their place, and the pill reserves the Lock label's line metrics so no button shifts when Lock appears. Ctrl+wheel now zooms at the pointer, the gesture most canvas apps use; Ctrl+Alt+wheel keeps working and Ctrl+Shift+wheel stays font size. A stroke in progress consumes the zoom wheel instead of zooming mid-drag. The help overlay's Zoom section, README, and --help text say so, and the --help text now gives the right wheel direction for thickness.
The thickness track was linear from 1 to 50 px, so the widths people use most shared a sliver of it. A per-spec curve now gives half the track to 1-10 px (value = 1 + 49 * t^log2(49/9)), with faint ticks at 5, 10, and 20 px drawn by one helper in both frontends; other sliders stay linear and unticked. The wheel over a style-pill slider, or over the thickness or text-size number beside it, now steps it: one spec step per notch in GTK, and in the built-in toolbar through the meters' notch accumulator, now generic over what it steps. Thickness and text size step relatively, so eraser size and whole pixels follow the input side. The numerals' tooltips say they take a typed value and the wheel.
Replay Tour opened an older nine-step modal tour, keyboard-only and styled apart from the six first-run cards new users see, and the cards themselves could not be replayed. Replay Tour now restarts the cards from the first step through a backend action, with an empty checklist. The quick-access and find-anything cards wait on lifetime usage flags that also keep later tips quiet, so a replay saves and clears them and gives them back, merged with anything used meanwhile, when it completes or is skipped; the saved set persists across restarts. A profile that already answered the background-mode prompt ends the replay one card early. A replay runs even with onboarding hints off, as documented. The old tour had no other entry point, so it is removed with its modal registry slot, key and pointer guards, and the toolbar helpers only it used.
The status bar's segments open the board picker, the color picker, the radial menu, and help, but read as plain text. Resting the pointer on a segment for 450 ms now shows a tooltip saying what a click does, above a bottom bar and below a top one. It is laid out once per frame with the bar, damaged only where it appears or goes, and drawn through a tooltip helper shared with the color picker instead of a third copy. The size segment follows the tool: Select and the click-highlight tool show no pen width, typing shows the text size once rather than again as a separate indicator, and the highlight tool is named once. The default status font drops from 21 px to 15 px (padding 15 -> 11 px), so the bar stops being the heaviest text on screen; the zoom chip follows. The board picker's count reads "Boards (5 of 9 max)", no longer a "5/9" that looked like the bar's "1/5".
The GTK slider's wheel and arrow keys added a step and rounded, so a fractional 30.8 px went to 32 scrolling up and 3.2 to 2 scrolling down, while the numeral and the canvas wheel stepped to the neighbour. A direction-aware step on the shared slider spec lands on the adjacent grid value, and the GTK wheel and keys and the built-in slider wheel all use it.
The key relay reported a keyboard release for every Escape on a focused slider, including during a drag, where the slider keeps focus, so the overlay asked for Exclusive focus in the middle of the gesture. The relay now only arms the Escape guard; the slider reports the release itself, through a new KeyboardReleased feedback, when it actually gives up the toolbar's keyboard (not mid-drag, not in a popover).
Replay Tour reset and saved progress even in presenter mode or while zoomed, where every card is hidden, so the replay ran with no visible card or Skip control. It now leaves zoom first, and in presenter mode it keeps the mode and says to leave it, without touching progress.
…range Properties sat below eight other rows, so the shape menu now opens with the editing entries: Edit Text or Edit Note, then Properties. The four stacking moves collapse into an Arrange submenu that dims what cannot move, Delete moves to the bottom behind a separator, and Select This Shape shows only when it would narrow the selection.
With the Select tool, or Alt+click with any tool, a double-click opens the shape in the properties panel; text and sticky notes enter editing instead. A plain double-click narrows the selection to that shape, and Alt+Shift keeps the rest of the selection. The panel opens on the second release, since a release outside the panel dismisses it. MovingSelection now carries the grab, which tells a click from a drag by pointer travel rather than by whether the shape moved: the selection holds still until the pointer leaves the 4 px click radius, so a click never nudges it, and travel against a canvas edge still counts as a drag. Locked shapes take clicks too, because Properties is where they unlock. The click tracker is cleared when the board or page changes: shape ids are page-local, so a click on one page could pair with a click on another, which the existing text double-click was open to as well.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Make everyday annotation controls easier to use and make shape editing easier to discover.