macOS: stabilize context menu card layout

This commit is contained in:
Peter Steinberger
2025-12-13 03:52:09 +00:00
parent 772b5fdf0f
commit 36ff508fec
2 changed files with 24 additions and 13 deletions

View File

@@ -70,17 +70,22 @@ final class MenuContextCardInjector: NSObject, NSMenuDelegate {
self.adoptMenuWidthIfAvailable(for: menu, hosting: hosting)
}
self.loadTask = Task { [weak hosting] in
await self.refreshCache(force: initialIsLoading)
guard let hosting else { return }
let view = self.cachedView()
await MainActor.run {
hosting.rootView = view
hosting.invalidateIntrinsicContentSize()
self.adoptMenuWidthIfAvailable(for: menu, hosting: hosting)
let size = hosting.fittingSize
hosting.frame.size.height = size.height
if initialIsLoading {
self.loadTask = Task { [weak hosting] in
await self.refreshCache(force: true)
guard let hosting else { return }
let view = self.cachedView()
await MainActor.run {
hosting.rootView = view
hosting.invalidateIntrinsicContentSize()
self.adoptMenuWidthIfAvailable(for: menu, hosting: hosting)
let size = hosting.fittingSize
hosting.frame.size.height = size.height
}
}
} else {
// Keep the menu stable while it's open; refresh in the background for next open.
self.loadTask = Task { await self.refreshCache(force: false) }
}
}