fix: resize overlay on text updates and keep final tint
This commit is contained in:
@@ -164,6 +164,7 @@ final class VoiceWakeOverlayController: ObservableObject {
|
|||||||
return .zero
|
return .zero
|
||||||
}
|
}
|
||||||
host.layoutSubtreeIfNeeded()
|
host.layoutSubtreeIfNeeded()
|
||||||
|
host.invalidateIntrinsicContentSize()
|
||||||
let fit = host.fittingSize
|
let fit = host.fittingSize
|
||||||
let height = max(42, min(fit.height, 180))
|
let height = max(42, min(fit.height, 180))
|
||||||
let size = NSSize(width: self.width, height: height)
|
let size = NSSize(width: self.width, height: height)
|
||||||
@@ -174,7 +175,7 @@ final class VoiceWakeOverlayController: ObservableObject {
|
|||||||
return NSRect(origin: origin, size: size)
|
return NSRect(origin: origin, size: size)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateWindowFrame(animate: Bool = false) {
|
func updateWindowFrame(animate: Bool = false) {
|
||||||
guard let window else { return }
|
guard let window else { return }
|
||||||
let frame = self.targetFrame()
|
let frame = self.targetFrame()
|
||||||
if animate {
|
if animate {
|
||||||
@@ -232,7 +233,7 @@ private struct VoiceWakeOverlayView: View {
|
|||||||
self.controller.sendNow()
|
self.controller.sendNow()
|
||||||
})
|
})
|
||||||
.focused(self.$focused)
|
.focused(self.$focused)
|
||||||
.frame(minHeight: 32, maxHeight: 80)
|
.frame(minHeight: 32)
|
||||||
|
|
||||||
Button {
|
Button {
|
||||||
self.controller.sendNow()
|
self.controller.sendNow()
|
||||||
@@ -269,6 +270,9 @@ private struct VoiceWakeOverlayView: View {
|
|||||||
.onChange(of: self.controller.model.isVisible) { _, visible in
|
.onChange(of: self.controller.model.isVisible) { _, visible in
|
||||||
if visible { self.focused = false }
|
if visible { self.focused = false }
|
||||||
}
|
}
|
||||||
|
.onChange(of: self.controller.model.attributed) { _, _ in
|
||||||
|
self.controller.updateWindowFrame(animate: true)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user