macOS: temporarily disable window.isMovable to fix #10110 (#10125)

Fixes #10110
This commit is contained in:
Mitchell Hashimoto
2026-01-01 12:45:08 -08:00
committed by GitHub
3 changed files with 13 additions and 21 deletions

View File

@@ -152,7 +152,6 @@
Helpers/AppInfo.swift,
Helpers/CodableBridge.swift,
Helpers/Cursor.swift,
Helpers/DraggableWindowView.swift,
Helpers/ExpiringUndoManager.swift,
"Helpers/Extensions/Double+Extension.swift",
"Helpers/Extensions/EventModifiers+Extension.swift",

View File

@@ -104,7 +104,11 @@ extension Ghostty {
/// Whether the current drag was cancelled by pressing escape.
private var dragCancelledByEscape: Bool = false
/// Original value of `window.isMovable` to restore
/// when the mouse exits.
private var isWindowMovable: Bool?
deinit {
if let escapeMonitor {
NSEvent.removeMonitor(escapeMonitor)
@@ -131,10 +135,18 @@ extension Ghostty {
}
override func mouseEntered(with event: NSEvent) {
// Temporarily disable `isMovable` to fix
// https://github.com/ghostty-org/ghostty/issues/10110
isWindowMovable = window?.isMovable
window?.isMovable = false
onHoverChanged?(true)
}
override func mouseExited(with event: NSEvent) {
if let isWindowMovable {
window?.isMovable = isWindowMovable
self.isWindowMovable = nil
}
onHoverChanged?(false)
}

View File

@@ -1,19 +0,0 @@
import Cocoa
import SwiftUI
struct DraggableWindowView: NSViewRepresentable {
func makeNSView(context: Context) -> DraggableWindowNSView {
return DraggableWindowNSView()
}
func updateNSView(_ nsView: DraggableWindowNSView, context: Context) {
// No need to update anything here
}
}
class DraggableWindowNSView: NSView {
override func mouseDown(with event: NSEvent) {
guard let window = self.window else { return }
window.performDrag(with: event)
}
}