Fix stuck split resize cursor outside divider range (#291)
* Keep split dividers visible in tiny panes * Fix collapsed split border resize hit-testing * Stabilize sidebar and split divider resize routing * Fix split divider resize cursor routing regressions * Fix stuck split resize cursor outside divider range
This commit is contained in:
parent
78fe5a9b04
commit
8f2a52fbf2
2 changed files with 16 additions and 10 deletions
|
|
@ -49,7 +49,7 @@ final class WindowBrowserHostView: NSView {
|
|||
override func viewDidMoveToWindow() {
|
||||
super.viewDidMoveToWindow()
|
||||
if window == nil {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: false)
|
||||
}
|
||||
window?.invalidateCursorRects(for: self)
|
||||
}
|
||||
|
|
@ -111,7 +111,7 @@ final class WindowBrowserHostView: NSView {
|
|||
}
|
||||
|
||||
override func mouseExited(with event: NSEvent) {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: true)
|
||||
}
|
||||
|
||||
override func hitTest(_ point: NSPoint) -> NSView? {
|
||||
|
|
@ -180,22 +180,25 @@ final class WindowBrowserHostView: NSView {
|
|||
|
||||
private func updateDividerCursor(at point: NSPoint) {
|
||||
if shouldPassThroughToSidebarResizer(at: point) {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: false)
|
||||
return
|
||||
}
|
||||
|
||||
guard let nextKind = splitDividerCursorKind(at: point) else {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: true)
|
||||
return
|
||||
}
|
||||
activeDividerCursorKind = nextKind
|
||||
nextKind.cursor.set()
|
||||
}
|
||||
|
||||
private func clearActiveDividerCursor() {
|
||||
private func clearActiveDividerCursor(restoreArrow: Bool) {
|
||||
guard activeDividerCursorKind != nil else { return }
|
||||
window?.invalidateCursorRects(for: self)
|
||||
activeDividerCursorKind = nil
|
||||
if restoreArrow {
|
||||
NSCursor.arrow.set()
|
||||
}
|
||||
}
|
||||
|
||||
private func splitDividerCursorKind(at point: NSPoint) -> DividerCursorKind? {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ final class WindowTerminalHostView: NSView {
|
|||
override func viewDidMoveToWindow() {
|
||||
super.viewDidMoveToWindow()
|
||||
if window == nil {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: false)
|
||||
}
|
||||
window?.invalidateCursorRects(for: self)
|
||||
}
|
||||
|
|
@ -113,7 +113,7 @@ final class WindowTerminalHostView: NSView {
|
|||
}
|
||||
|
||||
override func mouseExited(with event: NSEvent) {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: true)
|
||||
}
|
||||
|
||||
override func hitTest(_ point: NSPoint) -> NSView? {
|
||||
|
|
@ -212,22 +212,25 @@ final class WindowTerminalHostView: NSView {
|
|||
|
||||
private func updateDividerCursor(at point: NSPoint) {
|
||||
if shouldPassThroughToSidebarResizer(at: point) {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: false)
|
||||
return
|
||||
}
|
||||
|
||||
guard let nextKind = splitDividerCursorKind(at: point) else {
|
||||
clearActiveDividerCursor()
|
||||
clearActiveDividerCursor(restoreArrow: true)
|
||||
return
|
||||
}
|
||||
activeDividerCursorKind = nextKind
|
||||
nextKind.cursor.set()
|
||||
}
|
||||
|
||||
private func clearActiveDividerCursor() {
|
||||
private func clearActiveDividerCursor(restoreArrow: Bool) {
|
||||
guard activeDividerCursorKind != nil else { return }
|
||||
window?.invalidateCursorRects(for: self)
|
||||
activeDividerCursorKind = nil
|
||||
if restoreArrow {
|
||||
NSCursor.arrow.set()
|
||||
}
|
||||
}
|
||||
|
||||
private func splitDividerCursorKind(at point: NSPoint) -> DividerCursorKind? {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue