diff options
author | Eike Ziller <eike.ziller@qt.io> | 2024-05-22 11:29:13 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2024-05-24 06:55:54 +0000 |
commit | a87ed65dbbe5c6cc8a012d58b7d759bc4e0fd97a (patch) | |
tree | 3c6949c73be1ccbfa1578ce5b4409e1f996c06e6 | |
parent | cc190fc71ba6b32058c7fa949c5a367f21df2cd8 (diff) |
Editors/Help: Open navigation history menu on right-click
Change-Id: I216dde672d84485511c3ac277eb5ab091095d4e1
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r-- | src/plugins/coreplugin/editortoolbar.cpp | 64 | ||||
-rw-r--r-- | src/plugins/help/helpwidget.cpp | 26 |
2 files changed, 65 insertions, 25 deletions
diff --git a/src/plugins/coreplugin/editortoolbar.cpp b/src/plugins/coreplugin/editortoolbar.cpp index d55ee7d6947..857a32b6372 100644 --- a/src/plugins/coreplugin/editortoolbar.cpp +++ b/src/plugins/coreplugin/editortoolbar.cpp @@ -39,6 +39,24 @@ enum { namespace Core { +class ButtonWithMenu : public QToolButton +{ +public: + ButtonWithMenu(QWidget *parent = nullptr) + : QToolButton(parent) + {} + +protected: + void mousePressEvent(QMouseEvent *e) override + { + if (e->button() == Qt::RightButton) { + showMenu(); + return; + } + QToolButton::mousePressEvent(e); + } +}; + struct EditorToolBarPrivate { explicit EditorToolBarPrivate(QWidget *parent, EditorToolBar *q); @@ -51,8 +69,8 @@ struct EditorToolBarPrivate EditorToolBar::MenuProvider m_menuProvider; QAction *m_goBackAction; QAction *m_goForwardAction; - QToolButton *m_backButton; - QToolButton *m_forwardButton; + ButtonWithMenu *m_backButton; + ButtonWithMenu *m_forwardButton; QToolButton *m_splitButton; QAction *m_horizontalSplitAction; QAction *m_verticalSplitAction; @@ -68,27 +86,27 @@ struct EditorToolBarPrivate bool m_isStandalone; }; -EditorToolBarPrivate::EditorToolBarPrivate(QWidget *parent, EditorToolBar *q) : - m_editorList(new QComboBox(q)), - m_closeEditorButton(new QToolButton(q)), - m_lockButton(new QToolButton(q)), - m_dragHandle(new QToolButton(q)), - m_dragHandleMenu(nullptr), - m_goBackAction(new QAction(Utils::Icons::PREV_TOOLBAR.icon(), Tr::tr("Go Back"), parent)), - m_goForwardAction(new QAction(Utils::Icons::NEXT_TOOLBAR.icon(), Tr::tr("Go Forward"), parent)), - m_backButton(new QToolButton(q)), - m_forwardButton(new QToolButton(q)), - m_splitButton(new QToolButton(q)), - m_horizontalSplitAction(new QAction(Utils::Icons::SPLIT_HORIZONTAL.icon(), - Tr::tr("Split"), parent)), - m_verticalSplitAction(new QAction(Utils::Icons::SPLIT_VERTICAL.icon(), - Tr::tr("Split Side by Side"), parent)), - m_splitNewWindowAction(new QAction(Tr::tr("Open in New Window"), parent)), - m_closeSplitButton(new QToolButton(q)), - m_activeToolBar(nullptr), - m_toolBarPlaceholder(new QWidget(q)), - m_defaultToolBar(new QWidget(q)), - m_isStandalone(false) +EditorToolBarPrivate::EditorToolBarPrivate(QWidget *parent, EditorToolBar *q) + : m_editorList(new QComboBox(q)) + , m_closeEditorButton(new QToolButton(q)) + , m_lockButton(new QToolButton(q)) + , m_dragHandle(new QToolButton(q)) + , m_dragHandleMenu(nullptr) + , m_goBackAction(new QAction(Utils::Icons::PREV_TOOLBAR.icon(), Tr::tr("Go Back"), parent)) + , m_goForwardAction(new QAction(Utils::Icons::NEXT_TOOLBAR.icon(), Tr::tr("Go Forward"), parent)) + , m_backButton(new ButtonWithMenu(q)) + , m_forwardButton(new ButtonWithMenu(q)) + , m_splitButton(new QToolButton(q)) + , m_horizontalSplitAction( + new QAction(Utils::Icons::SPLIT_HORIZONTAL.icon(), Tr::tr("Split"), parent)) + , m_verticalSplitAction( + new QAction(Utils::Icons::SPLIT_VERTICAL.icon(), Tr::tr("Split Side by Side"), parent)) + , m_splitNewWindowAction(new QAction(Tr::tr("Open in New Window"), parent)) + , m_closeSplitButton(new QToolButton(q)) + , m_activeToolBar(nullptr) + , m_toolBarPlaceholder(new QWidget(q)) + , m_defaultToolBar(new QWidget(q)) + , m_isStandalone(false) { } diff --git a/src/plugins/help/helpwidget.cpp b/src/plugins/help/helpwidget.cpp index 0aeb0b0fd8f..08f66b155cd 100644 --- a/src/plugins/help/helpwidget.cpp +++ b/src/plugins/help/helpwidget.cpp @@ -52,6 +52,24 @@ static const char kModeSideBarSettingsKey[] = "Help/ModeSideBar"; namespace Help { namespace Internal { +class ButtonWithMenu : public QToolButton +{ +public: + ButtonWithMenu(QWidget *parent = nullptr) + : QToolButton(parent) + {} + +protected: + void mousePressEvent(QMouseEvent *e) override + { + if (e->button() == Qt::RightButton) { + showMenu(); + return; + } + QToolButton::mousePressEvent(e); + } +}; + OpenPagesModel::OpenPagesModel(HelpWidget *parent) : m_parent(parent) {} @@ -282,7 +300,9 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget m_backAction->setMenu(m_backMenu); cmd = Core::ActionManager::registerAction(m_backAction, Constants::HELP_PREVIOUS, context); cmd->setDefaultKeySequence(QKeySequence::Back); - button = Core::Command::toolButtonWithAppendedShortcut(m_backAction, cmd); + button = new ButtonWithMenu; + button->setDefaultAction(m_backAction); + cmd->augmentActionWithShortcutToolTip(m_backAction); button->setPopupMode(QToolButton::DelayedPopup); layout->addWidget(button); @@ -293,7 +313,9 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget m_forwardAction->setMenu(m_forwardMenu); cmd = Core::ActionManager::registerAction(m_forwardAction, Constants::HELP_NEXT, context); cmd->setDefaultKeySequence(QKeySequence::Forward); - button = Core::Command::toolButtonWithAppendedShortcut(m_forwardAction, cmd); + button = new ButtonWithMenu; + button->setDefaultAction(m_forwardAction); + cmd->augmentActionWithShortcutToolTip(m_forwardAction); button->setPopupMode(QToolButton::DelayedPopup); layout->addWidget(button); |