Fix stale hover latch on drag release, tooltip anchor, border off-by-one; pin gutter golden test, drop DPI framing

This commit is contained in:
2026-07-30 09:35:18 -04:00
parent ae23ee0882
commit 9812690b96
8 changed files with 64 additions and 20 deletions
+5
View File
@@ -242,3 +242,8 @@ slider couldn't. Two pure modules split the forward (draw) and inverse (edit) ma
Channel-mode (D-E) bus-renegotiation design and the earlier Preserve-onset-latency
framing in the S16 guardrails. Root `CLAUDE.md` is the current source of truth
for both — do not reintroduce either superseded design.
- **`keyboard_strip`'s width-uniformity guarantee is client-pixel only.** Its test sweep
covers client-pixel widths (including multiples standing in for larger client areas);
nothing in the instrument implements `IPlugViewContentScaleSupport`, so host-side DPI
scaling of the plugin window — which would resample the uniform integer key widths at the
physical-pixel level — is unverified.
+3 -4
View File
@@ -1,9 +1,7 @@
// keyboard_strip.h — piano-keyboard geometry for the editor's root strip: per-class key
// rects, hit-test, the root marker, and the note name a hovered key reports.
//
// Same-class keys are one integer width by construction. An arbitrary band width is not
// divisible by the 75 white keys, so the residue lands in symmetric end margins — uniform
// key widths and gap-free edge-to-edge tiling cannot both hold, and uniformity wins.
// See src/core/instrument/CLAUDE.md for the uniform-width-vs-edge-to-edge-tiling tradeoff.
#pragma once
@@ -21,7 +19,8 @@ inline constexpr int kStripKeyCount = 128;
inline constexpr int kStripWhiteKeyCount = 75;
struct StripLayout {
Rect band; // the surface handed in, edge to edge
Rect band; // the surface handed in, edge to edge (no src/ consumer; kept as the tests'
// reference bound instead of recomputing Rect::ltrb(0, 0, w, h) at each call site)
Rect keys; // the tiled key area, kStripWhiteKeyCount * whiteWidth, centred in band
int whiteWidth = 0;
int blackWidth = 0;
+1 -1
View File
@@ -4,7 +4,7 @@
#include <algorithm>
#include "core/instrument/ui/sample_bands.h" // kPad / kTitleHeight / kChromeRowHeight
#include "core/instrument/ui/sample_bands.h" // kPad
namespace reasampler::instrument::ui {