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 {
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)
{
}

View File

@@ -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);