Skip to content

Commit d928791

Browse files
committed
Fixes a regression, we could trigger a link open while dragging/copying
Implemented the fix. - Sources/SwiftTerm/Mac/MacTerminalView.swift:2672 now opens a link only when didSelectionDrag is false. - Tests/SwiftTermTests/MouseTrackingTests.swift:331 now expects a selection drag to open no link. It also confirms that the drag state resets.
1 parent 1b1235d commit d928791

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

Sources/SwiftTerm/Mac/MacTerminalView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2669,7 +2669,8 @@ open class TerminalView: NSView, NSTextInputClient, NSUserInterfaceValidations,
26692669
lastSelectionDragPoint = nil
26702670
let hit = calculateMouseHit(with: event).grid
26712671
updateHoverLink(at: hit, commandOverride: commandActive || event.modifierFlags.contains(.command))
2672-
if let result = linkForClick(at: hit, hasCommandModifier: event.modifierFlags.contains(.command)) {
2672+
if !didSelectionDrag,
2673+
let result = linkForClick(at: hit, hasCommandModifier: event.modifierFlags.contains(.command)) {
26732674
terminalDelegate?.requestOpenLink(source: self, link: result.link, params: result.params)
26742675
return
26752676
}

Tests/SwiftTermTests/MouseTrackingTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ struct MouseTrackingTests {
328328
}
329329
}
330330

331-
@Test @MainActor func linkClickClearsStaleSelectionDragState() async {
331+
@Test @MainActor func selectionDragDoesNotOpenLinkAndClearsDragState() async {
332332
let view = TerminalView(frame: CGRect(x: 0, y: 0, width: 320, height: 160))
333333
view.semanticClickCoalescingDelay = 0.01
334334
let window = NSWindow(
@@ -364,7 +364,7 @@ struct MouseTrackingTests {
364364
view.didSelectionDrag = true
365365
view.mouseUp(with: linkUp)
366366

367-
#expect(delegate.openedLinks == ["https://example.com"])
367+
#expect(delegate.openedLinks.isEmpty)
368368
#expect(!view.didSelectionDrag)
369369

370370
let promptPoint = CGPoint(

0 commit comments

Comments
 (0)