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>
This commit is contained in:
Eike Ziller
2024-05-22 11:29:13 +02:00
parent cc190fc71b
commit a87ed65dbb
2 changed files with 65 additions and 25 deletions

View File

@@ -39,6 +39,24 @@ enum {
namespace Core { 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 struct EditorToolBarPrivate
{ {
explicit EditorToolBarPrivate(QWidget *parent, EditorToolBar *q); explicit EditorToolBarPrivate(QWidget *parent, EditorToolBar *q);
@@ -51,8 +69,8 @@ struct EditorToolBarPrivate
EditorToolBar::MenuProvider m_menuProvider; EditorToolBar::MenuProvider m_menuProvider;
QAction *m_goBackAction; QAction *m_goBackAction;
QAction *m_goForwardAction; QAction *m_goForwardAction;
QToolButton *m_backButton; ButtonWithMenu *m_backButton;
QToolButton *m_forwardButton; ButtonWithMenu *m_forwardButton;
QToolButton *m_splitButton; QToolButton *m_splitButton;
QAction *m_horizontalSplitAction; QAction *m_horizontalSplitAction;
QAction *m_verticalSplitAction; QAction *m_verticalSplitAction;
@@ -68,27 +86,27 @@ struct EditorToolBarPrivate
bool m_isStandalone; bool m_isStandalone;
}; };
EditorToolBarPrivate::EditorToolBarPrivate(QWidget *parent, EditorToolBar *q) : EditorToolBarPrivate::EditorToolBarPrivate(QWidget *parent, EditorToolBar *q)
m_editorList(new QComboBox(q)), : m_editorList(new QComboBox(q))
m_closeEditorButton(new QToolButton(q)), , m_closeEditorButton(new QToolButton(q))
m_lockButton(new QToolButton(q)), , m_lockButton(new QToolButton(q))
m_dragHandle(new QToolButton(q)), , m_dragHandle(new QToolButton(q))
m_dragHandleMenu(nullptr), , m_dragHandleMenu(nullptr)
m_goBackAction(new QAction(Utils::Icons::PREV_TOOLBAR.icon(), Tr::tr("Go Back"), parent)), , 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_goForwardAction(new QAction(Utils::Icons::NEXT_TOOLBAR.icon(), Tr::tr("Go Forward"), parent))
m_backButton(new QToolButton(q)), , m_backButton(new ButtonWithMenu(q))
m_forwardButton(new QToolButton(q)), , m_forwardButton(new ButtonWithMenu(q))
m_splitButton(new QToolButton(q)), , m_splitButton(new QToolButton(q))
m_horizontalSplitAction(new QAction(Utils::Icons::SPLIT_HORIZONTAL.icon(), , m_horizontalSplitAction(
Tr::tr("Split"), parent)), new QAction(Utils::Icons::SPLIT_HORIZONTAL.icon(), Tr::tr("Split"), parent))
m_verticalSplitAction(new QAction(Utils::Icons::SPLIT_VERTICAL.icon(), , m_verticalSplitAction(
Tr::tr("Split Side by Side"), parent)), 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_splitNewWindowAction(new QAction(Tr::tr("Open in New Window"), parent))
m_closeSplitButton(new QToolButton(q)), , m_closeSplitButton(new QToolButton(q))
m_activeToolBar(nullptr), , m_activeToolBar(nullptr)
m_toolBarPlaceholder(new QWidget(q)), , m_toolBarPlaceholder(new QWidget(q))
m_defaultToolBar(new QWidget(q)), , m_defaultToolBar(new QWidget(q))
m_isStandalone(false) , m_isStandalone(false)
{ {
} }

View File

@@ -52,6 +52,24 @@ static const char kModeSideBarSettingsKey[] = "Help/ModeSideBar";
namespace Help { namespace Help {
namespace Internal { 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) OpenPagesModel::OpenPagesModel(HelpWidget *parent)
: m_parent(parent) : m_parent(parent)
{} {}
@@ -282,7 +300,9 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
m_backAction->setMenu(m_backMenu); m_backAction->setMenu(m_backMenu);
cmd = Core::ActionManager::registerAction(m_backAction, Constants::HELP_PREVIOUS, context); cmd = Core::ActionManager::registerAction(m_backAction, Constants::HELP_PREVIOUS, context);
cmd->setDefaultKeySequence(QKeySequence::Back); 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); button->setPopupMode(QToolButton::DelayedPopup);
layout->addWidget(button); layout->addWidget(button);
@@ -293,7 +313,9 @@ HelpWidget::HelpWidget(const Core::Context &context, WidgetStyle style, QWidget
m_forwardAction->setMenu(m_forwardMenu); m_forwardAction->setMenu(m_forwardMenu);
cmd = Core::ActionManager::registerAction(m_forwardAction, Constants::HELP_NEXT, context); cmd = Core::ActionManager::registerAction(m_forwardAction, Constants::HELP_NEXT, context);
cmd->setDefaultKeySequence(QKeySequence::Forward); 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); button->setPopupMode(QToolButton::DelayedPopup);
layout->addWidget(button); layout->addWidget(button);