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
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if anchor.visibleOrigin.y <= 0 {
|
||||||
|
return scrollVisibleOrigin(
|
||||||
|
NSPoint(x: anchor.visibleOrigin.x, y: 0),
|
||||||
|
in: textView
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return scrollVisibleOrigin(
|
return scrollVisibleOrigin(
|
||||||
NSPoint(
|
NSPoint(
|
||||||
x: anchor.visibleOrigin.x,
|
x: anchor.visibleOrigin.x,
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,19 @@ final class HybridMarkdownLiveEditorHarnessTests: XCTestCase {
|
||||||
XCTAssertTrue(harness.headingMarkerIsHidden())
|
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 {
|
func testLiveParagraphGeometryReturnsAfterClickAndFocusAway() throws {
|
||||||
let source = """
|
let source = """
|
||||||
# Heading
|
# Heading
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue