From 99ce8b522f6910e8a94550c9944561e142cbbedf Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 4 Jun 2024 11:37:21 +0200 Subject: [PATCH] Core: compress shortcut settings widget updates reduces the number of calls to ShortcutSettingsWidget::initialize while the shortcut settings widget is open and actions get registered. For example when searching the preferences dialog the shortcut settings widget is alive and some setting page widgets create a text editor, which again registers some actions. Change-Id: Ieb3c3d1c7ce317c3407a9c97514f6cc4a4ce76c4 Reviewed-by: hjk --- src/plugins/coreplugin/dialogs/shortcutsettings.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 8649adc1679..4c7de88fd9b 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -420,6 +421,7 @@ private: QGridLayout *m_shortcutLayout; std::vector> m_shortcutInputs; QPointer m_addButton = nullptr; + QTimer m_updateTimer; }; ShortcutSettingsWidget::ShortcutSettingsWidget() @@ -428,7 +430,12 @@ ShortcutSettingsWidget::ShortcutSettingsWidget() setTargetHeader(Tr::tr("Shortcut")); setResetVisible(true); + m_updateTimer.setSingleShot(true); + m_updateTimer.setInterval(100); + connect(ActionManager::instance(), &ActionManager::commandListChanged, + &m_updateTimer, qOverload<>(&QTimer::start)); + connect(&m_updateTimer, &QTimer::timeout, this, &ShortcutSettingsWidget::initialize); connect(this, &ShortcutSettingsWidget::currentCommandChanged, this, &ShortcutSettingsWidget::handleCurrentCommandChanged);