mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
macOS: fix VoiceWakeOverlayController exclusivity violation #39275
This commit is contained in:
committed by
Peter Steinberger
parent
eebee84093
commit
58ae5582f4
@@ -61,9 +61,11 @@ final class NotifyOverlayController {
|
||||
self.ensureWindow()
|
||||
self.hostingView?.rootView = NotifyOverlayView(controller: self)
|
||||
let target = self.targetFrame()
|
||||
let isFirst = !self.model.isVisible
|
||||
if isFirst { self.model.isVisible = true }
|
||||
OverlayPanelFactory.present(
|
||||
window: self.window,
|
||||
isVisible: &self.model.isVisible,
|
||||
isFirstPresent: isFirst,
|
||||
target: target)
|
||||
{ window in
|
||||
self.updateWindowFrame(animate: true)
|
||||
|
||||
@@ -64,15 +64,14 @@ enum OverlayPanelFactory {
|
||||
@MainActor
|
||||
static func present(
|
||||
window: NSWindow?,
|
||||
isVisible: inout Bool,
|
||||
isFirstPresent: Bool,
|
||||
target: NSRect,
|
||||
startOffsetY: CGFloat = -6,
|
||||
onFirstPresent: (() -> Void)? = nil,
|
||||
onAlreadyVisible: (NSWindow) -> Void)
|
||||
{
|
||||
guard let window else { return }
|
||||
if !isVisible {
|
||||
isVisible = true
|
||||
if isFirstPresent {
|
||||
onFirstPresent?()
|
||||
let start = target.offsetBy(dx: 0, dy: startOffsetY)
|
||||
self.animatePresent(window: window, from: start, to: target)
|
||||
|
||||
@@ -30,9 +30,11 @@ final class TalkOverlayController {
|
||||
self.ensureWindow()
|
||||
self.hostingView?.rootView = TalkOverlayView(controller: self)
|
||||
let target = self.targetFrame()
|
||||
let isFirst = !self.model.isVisible
|
||||
if isFirst { self.model.isVisible = true }
|
||||
OverlayPanelFactory.present(
|
||||
window: self.window,
|
||||
isVisible: &self.model.isVisible,
|
||||
isFirstPresent: isFirst,
|
||||
target: target)
|
||||
{ window in
|
||||
window.setFrame(target, display: true)
|
||||
|
||||
@@ -13,9 +13,11 @@ extension VoiceWakeOverlayController {
|
||||
self.ensureWindow()
|
||||
self.hostingView?.rootView = VoiceWakeOverlayView(controller: self)
|
||||
let target = self.targetFrame()
|
||||
let isFirst = !self.model.isVisible
|
||||
if isFirst { self.model.isVisible = true }
|
||||
OverlayPanelFactory.present(
|
||||
window: self.window,
|
||||
isVisible: &self.model.isVisible,
|
||||
isFirstPresent: isFirst,
|
||||
target: target,
|
||||
onFirstPresent: {
|
||||
self.logger.log(
|
||||
|
||||
Reference in New Issue
Block a user