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
}
host.layoutSubtreeIfNeeded()
host.invalidateIntrinsicContentSize()
let fit = host.fittingSize
let height = max(42, min(fit.height, 180))
let size = NSSize(width: self.width, height: height)
@@ -174,7 +175,7 @@ final class VoiceWakeOverlayController: ObservableObject {
return NSRect(origin: origin, size: size)
}
private func updateWindowFrame(animate: Bool = false) {
func updateWindowFrame(animate: Bool = false) {
guard let window else { return }
let frame = self.targetFrame()
if animate {
@@ -232,7 +233,7 @@ private struct VoiceWakeOverlayView: View {
self.controller.sendNow()
})
.focused(self.$focused)
.frame(minHeight: 32, maxHeight: 80)
.frame(minHeight: 32)
Button {
self.controller.sendNow()
@@ -269,6 +270,9 @@ private struct VoiceWakeOverlayView: View {
.onChange(of: self.controller.model.isVisible) { _, visible in
if visible { self.focused = false }
}
.onChange(of: self.controller.model.attributed) { _, _ in
self.controller.updateWindowFrame(animate: true)
}
}
}