OutputPane: Show "manage" menu as context menu for the buttons too

Simply makes sense.

Change-Id: I2f68b0bfdea66185c0c70d8e888fe0965276a7ab
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Eike Ziller
2023-09-18 12:13:50 +02:00
parent 8a72318c97
commit ea47e6cbd7
2 changed files with 25 additions and 2 deletions

View File

@@ -533,6 +533,9 @@ void OutputPaneManager::initialize()
outPane->displayName(), outPane->displayName(),
cmd->action()); cmd->action());
data.button = button; data.button = button;
connect(button, &OutputPaneToggleButton::contextMenuRequested, m_instance, [] {
m_instance->popupMenu();
});
connect(outPane, &IOutputPane::flashButton, button, [button] { button->flash(); }); connect(outPane, &IOutputPane::flashButton, button, [button] { button->flash(); });
connect(outPane, connect(outPane,
@@ -562,7 +565,7 @@ void OutputPaneManager::initialize()
m_instance->m_titleLabel->setText(g_outputPanes[currentIdx].pane->displayName()); m_instance->m_titleLabel->setText(g_outputPanes[currentIdx].pane->displayName());
m_instance->m_buttonsWidget->layout()->addWidget(m_instance->m_manageButton); m_instance->m_buttonsWidget->layout()->addWidget(m_instance->m_manageButton);
connect(m_instance->m_manageButton, connect(m_instance->m_manageButton,
&QAbstractButton::clicked, &OutputPaneManageButton::menuRequested,
m_instance, m_instance,
&OutputPaneManager::popupMenu); &OutputPaneManager::popupMenu);
@@ -1004,6 +1007,10 @@ bool OutputPaneToggleButton::isPaneVisible() const
return isVisibleTo(parentWidget()); return isVisibleTo(parentWidget());
} }
void OutputPaneToggleButton::contextMenuEvent(QContextMenuEvent *)
{
emit contextMenuRequested();
}
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
// //
@@ -1016,6 +1023,7 @@ OutputPaneManageButton::OutputPaneManageButton()
setFocusPolicy(Qt::NoFocus); setFocusPolicy(Qt::NoFocus);
setCheckable(true); setCheckable(true);
setFixedWidth(StyleHelper::toolbarStyle() == Utils::StyleHelper::ToolbarStyleCompact ? 17 : 21); setFixedWidth(StyleHelper::toolbarStyle() == Utils::StyleHelper::ToolbarStyleCompact ? 17 : 21);
connect(this, &QToolButton::clicked, this, &OutputPaneManageButton::menuRequested);
} }
void OutputPaneManageButton::paintEvent(QPaintEvent*) void OutputPaneManageButton::paintEvent(QPaintEvent*)
@@ -1037,6 +1045,11 @@ void OutputPaneManageButton::paintEvent(QPaintEvent*)
s->drawPrimitive(QStyle::PE_IndicatorArrowDown, &arrowOpt, &p, this); s->drawPrimitive(QStyle::PE_IndicatorArrowDown, &arrowOpt, &p, this);
} }
void OutputPaneManageButton::contextMenuEvent(QContextMenuEvent *)
{
emit menuRequested();
}
BadgeLabel::BadgeLabel() BadgeLabel::BadgeLabel()
{ {
m_font = QApplication::font(); m_font = QApplication::font();

View File

@@ -108,6 +108,11 @@ public:
void setIconBadgeNumber(int number); void setIconBadgeNumber(int number);
bool isPaneVisible() const; bool isPaneVisible() const;
void contextMenuEvent(QContextMenuEvent *e) override;
signals:
void contextMenuRequested();
private: private:
void updateToolTip(); void updateToolTip();
void checkStateSet() override; void checkStateSet() override;
@@ -124,7 +129,12 @@ class OutputPaneManageButton : public QToolButton
Q_OBJECT Q_OBJECT
public: public:
OutputPaneManageButton(); OutputPaneManageButton();
void paintEvent(QPaintEvent*) override; void paintEvent(QPaintEvent *) override;
void contextMenuEvent(QContextMenuEvent *e) override;
signals:
void menuRequested();
}; };
} // namespace Internal } // namespace Internal