From 20c54e292ffbd531e7547559fefab57c6e1d861b Mon Sep 17 00:00:00 2001 From: loner <2788892716@qq.com> Date: Fri, 10 Oct 2025 07:17:11 +0800 Subject: [PATCH] feat(tray): Implement debouncing for tray item updates --- Modules/Bar/Widgets/Tray.qml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Modules/Bar/Widgets/Tray.qml b/Modules/Bar/Widgets/Tray.qml index 88bd9f6b..b940d267 100644 --- a/Modules/Bar/Widgets/Tray.qml +++ b/Modules/Bar/Widgets/Tray.qml @@ -65,7 +65,18 @@ Rectangle { } } - function updateFilteredItems() { + // Debounce timer for updateFilteredItems to prevent excessive calls + // when multiple events (e.g., SystemTray changes, settings saves) + // trigger it in rapid succession, reducing redundant processing. + Timer { + id: updateDebounceTimer + interval: 100 // milliseconds + running: false + repeat: false + onTriggered: _performFilteredItemsUpdate() + } + + function _performFilteredItemsUpdate() { if (!root.blacklist || root.blacklist.length === 0) { if (SystemTray.items && SystemTray.items.values) { filteredItems = SystemTray.items.values @@ -103,6 +114,10 @@ Rectangle { filteredItems = newItems } + function updateFilteredItems() { + updateDebounceTimer.restart() + } + function onLoaded() { // When the widget is fully initialized with its props set the screen for the trayMenu if (trayMenu.item) {