mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-08-02 14:57:31 +03:00
macos: stop windows glitching when cascading
Noticed that windows glitch when cascading: they show up in center of screen, then quickly move to the correct position at last-cascade point. This fixes the issue, by moving the `showWindow` call to _after_ the setting of the last cascade point. Now if you look at the code and think: "shouldn't this work without the async-dispatch, like this?" ```swift if (!window.styleMask.contains(.fullScreen)) { Self.lastCascadePoint = window.cascadeTopLeft(from: Self.lastCascadePoint) } c.showWindow(self) ``` Then, yes, I had the same thought, but it doesn't. And as discussed on Discord, we probably don't know what's going on behind the scenes. So this is the simplified code of the version we have to live with: async dispatching the cascade and non-cascade versions both.
This commit is contained in:
@ -78,14 +78,13 @@ class TerminalManager {
|
||||
window.toggleFullScreen(nil)
|
||||
}
|
||||
|
||||
c.showWindow(self)
|
||||
|
||||
// Only cascade if we aren't fullscreen. This has to be dispatched async
|
||||
// because it takes one event loop tick for showWindow to work.
|
||||
if (!window.styleMask.contains(.fullScreen)) {
|
||||
// We're dispatching this async because otherwise the last-cascade-point won't work.
|
||||
DispatchQueue.main.async {
|
||||
// Only cascade if we aren't fullscreen.
|
||||
if (!window.styleMask.contains(.fullScreen)) {
|
||||
Self.lastCascadePoint = window.cascadeTopLeft(from: Self.lastCascadePoint)
|
||||
}
|
||||
c.showWindow(self)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user