fix: resize overlay on text updates and keep final tint

This commit is contained in:
Peter Steinberger
2025-12-08 17:07:40 +01:00
parent 7a7c59e91a
commit 838a9c000c

View File

@@ -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)
}
} }
} }