fix(editor): prevent top viewport scroll jump
This commit is contained in:
parent
1eb9ede960
commit
373a05b265
2 changed files with 20 additions and 0 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue