From 02244520e80647b761ef8fad2d3ff6225898478c Mon Sep 17 00:00:00 2001 From: Marco Russo Date: Thu, 27 Aug 2026 16:40:33 +0200 Subject: [PATCH] Draw the pen's wet stroke over containers, and bump to 1.1.2 Pen ink moved out of the InkCanvas and into BoardSurface.OnRender, where draw order matters, and the pending stroke was drawn before the document objects. Images, text and LiveViews therefore painted over the wet ink, which reappeared only on lift, when the stroke commits with the topmost z-index. It is now drawn after the objects and before the hover and selection chrome, which is where it will sit once committed. Co-Authored-By: Claude Opus 5 --- Directory.Build.props | 2 +- TODO.md | 2 +- src/SQLBI.Whiteboard/BoardSurface.cs | 13 ++++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index d7c1a99..3a08133 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -5,7 +5,7 @@ scripts/build-installer.ps1 both read it from here, so releasing is a reviewed change to this line rather than an edit in a pipeline variable group. --> - 1.1.1 + 1.1.2 latest enable enable diff --git a/TODO.md b/TODO.md index 598ab01..6dc7195 100644 --- a/TODO.md +++ b/TODO.md @@ -16,7 +16,7 @@ The delivery chain works end to end: a merge to `main` builds, signs, and publis pre-release to GitHub Releases, and one approval promotes that same build to a release. reads its download links from the release manifest deployed beside it and needs no edit per release. The current product version is `VersionPrefix` in `Directory.Build.props` -(1.1.1). Identity version for the Store package is `VersionPrefix.0` (`1.1.1.0`). +(1.1.2). Identity version for the Store package is `VersionPrefix.0` (`1.1.2.0`). Declaring that number is decision 20 in [docs/decisions.md](docs/decisions.md). What 1.0 was waiting on shipped during 0.9.x: Preferences, `.wimport`, Explorer and VS Code diff --git a/src/SQLBI.Whiteboard/BoardSurface.cs b/src/SQLBI.Whiteboard/BoardSurface.cs index 0cbe520..912d39b 100644 --- a/src/SQLBI.Whiteboard/BoardSurface.cs +++ b/src/SQLBI.Whiteboard/BoardSurface.cs @@ -61,11 +61,6 @@ protected override void OnRender(DrawingContext drawingContext) return; } - if (PendingStroke is { Count: > 1 } pending) - { - DrawStroke(drawingContext, pending, PendingStrokeStyle, _camera); - } - foreach (var item in _document.Query(_camera.VisibleWorldBounds)) { if (item.Id == HiddenObjectId) @@ -95,6 +90,14 @@ protected override void OnRender(DrawingContext drawingContext) } } + // Over the containers, not under them: the stroke is committed with the + // topmost z-index, so drawing it first made the wet ink disappear behind + // whatever it crossed and reappear only once the pen lifted. + if (PendingStroke is { Count: > 1 } pending) + { + DrawStroke(drawingContext, pending, PendingStrokeStyle, _camera); + } + if (HoveredObjectId is Guid hoveredId && hoveredId != SelectedObjectId && _document.Objects.FirstOrDefault(item => item.Id == hoveredId) is { } hovered)