diff --git a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift index a368c34..c383813 100644 --- a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift +++ b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizer.swift @@ -372,13 +372,22 @@ private extension KeyboardVisualizer { func collapseActiveRepeatIfNeeded(_ group: KeyboardVisualizerGroupView?) { guard self.visualizerSettings.collapseRepeatedGroups, let group else { return } - guard let previous = self.lastFinalizedGroup, previous.group !== group else { return } + guard let previous = self.lastFinalizedGroup, previous.group !== group else { + self.visualizerWindow.enforceMaxCount() + return + } let items = self.eventCoordinator.items(for: group) - guard !items.isEmpty else { return } + guard !items.isEmpty else { + self.visualizerWindow.enforceMaxCount() + return + } let identity = self.groupIdentity(for: items) - guard previous.identity == identity else { return } + guard previous.identity == identity else { + self.visualizerWindow.enforceMaxCount() + return + } let nextRepeatCount = previous.repeatCount + 1 self.visualizerWindow.updateGroup(previous.group, with: items, repeatCount: nextRepeatCount) diff --git a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizerWindow.swift b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizerWindow.swift index 5130596..2cb18a6 100644 --- a/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizerWindow.swift +++ b/Apps/Keyty/Sources/Keyty/Features/Visualizers/Keyboard/KeyboardVisualizerWindow.swift @@ -117,10 +117,15 @@ final class KeyboardVisualizerWindow: NSWindow { func enforceMaxCount() { let maxCount = self.settings.maxCount + var removedGroups = false while self.groupViews.count > maxCount { let view = self.groupViews.removeFirst() view.removeFromSuperview() self.onGroupRemoved?(view) + removedGroups = true + } + if removedGroups { + self.layoutGroups() } }