From 659771f09b4a781d206ff4b5829a6186b1fe7af7 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 28 Oct 2020 16:49:41 +0100 Subject: [PATCH] Debugger: Provide keyboard shortcuts for "next" and "previous" ... to applicable analyzers. Rather than inventing separate shortcut categories for all the analyzers, we make use of the fact that only one analyzer view is active at any given time, and make them use the same shortcuts for consistency. Fixes: QTCREATORBUG-20659 Change-Id: Ifa60080def0e6b32395854cff588ab3af9ea33b9 Reviewed-by: Eike Ziller --- src/plugins/clangtools/clangtool.cpp | 1 + src/plugins/debugger/debuggermainwindow.cpp | 20 ++++++++++++++++++++ src/plugins/debugger/debuggermainwindow.h | 2 ++ src/plugins/valgrind/callgrindtool.cpp | 1 + src/plugins/valgrind/memchecktool.cpp | 1 + 5 files changed, 25 insertions(+) diff --git a/src/plugins/clangtools/clangtool.cpp b/src/plugins/clangtools/clangtool.cpp index 6473b9dc06b..fde13609b6d 100644 --- a/src/plugins/clangtools/clangtool.cpp +++ b/src/plugins/clangtools/clangtool.cpp @@ -597,6 +597,7 @@ ClangTool::ClangTool() m_perspective.addToolBarAction(m_showFilter); m_perspective.addToolBarWidget(m_selectFixitsCheckBox); m_perspective.addToolBarWidget(m_applyFixitsButton); + m_perspective.registerNextPrevShortcuts(m_goNext, m_goBack); update(); diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index fd9d0e52f54..c0de05494dd 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -152,7 +152,12 @@ public: void setCurrentPerspective(Perspective *perspective) { + const Core::Context oldContext = m_currentPerspective + ? Context(Id::fromString(m_currentPerspective->id())) : Context(); m_currentPerspective = perspective; + const Core::Context newContext = m_currentPerspective + ? Context(Id::fromString(m_currentPerspective->id())) : Context(); + ICore::updateAdditionalContexts(oldContext, newContext); } DebuggerMainWindow *q = nullptr; @@ -861,6 +866,21 @@ void Perspective::addToolbarSeparator() d->m_innerToolBarLayout->addWidget(new StyledSeparator(d->m_innerToolBar)); } +void Perspective::registerNextPrevShortcuts(QAction *next, QAction *prev) +{ + static const char nextId[] = "Analyzer.nextitem"; + static const char prevId[] = "Analyzer.previtem"; + + next->setText(tr("Next Item")); + Command * const nextCmd = ActionManager::registerAction(next, nextId, + Context(Id::fromString(id()))); + nextCmd->augmentActionWithShortcutToolTip(next); + prev->setText(tr("Previous Item")); + Command * const prevCmd = ActionManager::registerAction(prev, prevId, + Context(Id::fromString(id()))); + prevCmd->augmentActionWithShortcutToolTip(prev); +} + QWidget *Perspective::centralWidget() const { return d->m_centralWidget; diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h index ec7722c4028..522b45b19d7 100644 --- a/src/plugins/debugger/debuggermainwindow.h +++ b/src/plugins/debugger/debuggermainwindow.h @@ -90,6 +90,8 @@ public: void addToolBarWidget(QWidget *widget); void addToolbarSeparator(); + void registerNextPrevShortcuts(QAction *next, QAction *prev); + void useSubPerspectiveSwitcher(QWidget *widget); using ShouldPersistChecker = std::function; diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp index f7454306fa2..5a392a6511a 100644 --- a/src/plugins/valgrind/callgrindtool.cpp +++ b/src/plugins/valgrind/callgrindtool.cpp @@ -452,6 +452,7 @@ CallgrindToolPrivate::CallgrindToolPrivate() m_perspective.addToolBarAction(m_goNext); m_perspective.addToolbarSeparator(); m_perspective.addToolBarWidget(m_eventCombo); + m_perspective.registerNextPrevShortcuts(m_goNext, m_goBack); // Cost formatting { diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 8c05223843e..b6b518e311f 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -701,6 +701,7 @@ MemcheckToolPrivate::MemcheckToolPrivate() m_perspective.addToolBarAction(m_goBack); m_perspective.addToolBarAction(m_goNext); m_perspective.addToolBarWidget(filterButton); + m_perspective.registerNextPrevShortcuts(m_goNext, m_goBack); updateFromSettings(); maybeActiveRunConfigurationChanged();