aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2021-10-17 11:38:11 +0300
committerOrgad Shaneh <orgads@gmail.com>2021-10-21 07:09:10 +0000
commit75705e3eab3167e43717529a9f1000b7f9f2bcba (patch)
tree1e51752311d56d713567df3d8e7d1cad1973a38d
parentf41bebc843a8b4ab1ab29562ba200b032b5ab5ac (diff)
OutputPane: Fix inconsistency between output view buttons and popup menu
Since definition of function OutputPaneToggleButton::flash() sets the button visibility to true this leads to inconsistency which had been described in ticket. Task-number: QTCREATORBUG-19390 Change-Id: I5e88d2b42808cdec24d25e126b1c8de011a1db84 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/plugins/coreplugin/outputpanemanager.cpp16
-rw-r--r--src/plugins/coreplugin/outputpanemanager.h1
2 files changed, 9 insertions, 8 deletions
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index 0205801c27..7222e37168 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -79,7 +79,6 @@ public:
Id id;
OutputPaneToggleButton *button = nullptr;
QAction *action = nullptr;
- bool buttonVisible = false;
};
static QVector<OutputPaneData> g_outputPanes;
@@ -511,7 +510,6 @@ void OutputPaneManager::initialize()
bool visible = outPane->priorityInStatusBar() != -1;
data.button->setVisible(visible);
- data.buttonVisible = visible;
connect(data.action, &QAction::triggered, m_instance, [i] {
m_instance->shortcutTriggered(i);
@@ -595,7 +593,6 @@ void OutputPaneManager::readSettings()
if (idx < 0) // happens for e.g. disabled plugins (with outputpanes) that were loaded before
continue;
const bool visible = settings->value(QLatin1String(outputPaneVisibleKeyC)).toBool();
- g_outputPanes[idx].buttonVisible = visible;
g_outputPanes[idx].button->setVisible(visible);
}
settings->endArray();
@@ -707,7 +704,6 @@ void OutputPaneManager::setCurrentIndex(int idx)
OutputPaneData &data = g_outputPanes[idx];
IOutputPane *pane = data.pane;
data.button->show();
- data.buttonVisible = true;
pane->visibilityChanged(true);
bool canNavigate = pane->canNavigate();
@@ -727,7 +723,7 @@ void OutputPaneManager::popupMenu()
for (OutputPaneData &data : g_outputPanes) {
QAction *act = menu.addAction(data.pane->displayName());
act->setCheckable(true);
- act->setChecked(data.buttonVisible);
+ act->setChecked(data.button->isPaneVisible());
act->setData(idx);
++idx;
}
@@ -737,11 +733,10 @@ void OutputPaneManager::popupMenu()
idx = result->data().toInt();
QTC_ASSERT(idx >= 0 && idx < g_outputPanes.size(), return);
OutputPaneData &data = g_outputPanes[idx];
- if (data.buttonVisible) {
+ if (data.button->isPaneVisible()) {
data.pane->visibilityChanged(false);
data.button->setChecked(false);
data.button->hide();
- data.buttonVisible = false;
} else {
showPage(idx, IOutputPane::ModeSwitch);
}
@@ -756,7 +751,7 @@ void OutputPaneManager::saveSettings() const
const OutputPaneData &data = g_outputPanes.at(i);
settings->setArrayIndex(i);
settings->setValue(QLatin1String(outputPaneIdKeyC), data.id.toSetting());
- settings->setValue(QLatin1String(outputPaneVisibleKeyC), data.buttonVisible);
+ settings->setValue(QLatin1String(outputPaneVisibleKeyC), data.button->isPaneVisible());
}
settings->endArray();
int heightSetting = m_outputPaneHeightSetting;
@@ -933,6 +928,11 @@ void OutputPaneToggleButton::setIconBadgeNumber(int number)
updateGeometry();
}
+bool OutputPaneToggleButton::isPaneVisible() const
+{
+ return isVisibleTo(parentWidget());
+}
+
///////////////////////////////////////////////////////////////////////
//
diff --git a/src/plugins/coreplugin/outputpanemanager.h b/src/plugins/coreplugin/outputpanemanager.h
index f40f2c34ec..9914efe31b 100644
--- a/src/plugins/coreplugin/outputpanemanager.h
+++ b/src/plugins/coreplugin/outputpanemanager.h
@@ -138,6 +138,7 @@ public:
void paintEvent(QPaintEvent*) override;
void flash(int count = 3);
void setIconBadgeNumber(int number);
+ bool isPaneVisible() const;
private:
void updateToolTip();