fix(editor): prevent top viewport scroll jump

This commit is contained in:
Feror 2026-06-02 15:15:09 +02:00
parent 1eb9ede960
commit 373a05b265
2 changed files with 20 additions and 0 deletions

View file

@ -689,6 +689,13 @@ private struct NativeMarkdownTextView: NSViewRepresentable {
return false
}
if anchor.visibleOrigin.y <= 0 {
return scrollVisibleOrigin(
NSPoint(x: anchor.visibleOrigin.x, y: 0),
in: textView
)
}
return scrollVisibleOrigin(
NSPoint(
x: anchor.visibleOrigin.x,

View file

@ -14,6 +14,19 @@ final class HybridMarkdownLiveEditorHarnessTests: XCTestCase {
XCTAssertTrue(harness.headingMarkerIsHidden())
}
func testClickAtTopOfDocumentDoesNotScrollViewportDown() {
let source = (["# Heading", "Opening paragraph"] + (1...80).map { "Line \($0)" })
.joined(separator: "\n")
let harness = HybridMarkdownLiveEditorHarness(source: source)
harness.simulateLaunchFirstResponder()
harness.scrollViewport(toY: 0)
let paragraphLocation = (source as NSString).range(of: "Opening").location
harness.setSelectionByMouse(NSRange(location: paragraphLocation, length: 0))
XCTAssertEqual(harness.viewportOrigin().y, 0, accuracy: 0.001)
}
func testLiveParagraphGeometryReturnsAfterClickAndFocusAway() throws {
let source = """
# Heading