aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2024-05-22 11:29:13 +0200
committerEike Ziller <eike.ziller@qt.io>2024-05-24 06:55:54 +0000
commita87ed65dbbe5c6cc8a012d58b7d759bc4e0fd97a (patch)
tree3c6949c73be1ccbfa1578ce5b4409e1f996c06e6
parentcc190fc71ba6b32058c7fa949c5a367f21df2cd8 (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.cpp64
-rw-r--r--src/plugins/help/helpwidget.cpp26
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);