summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/outputpanemanager.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@theqtcompany.com>2016-03-08 14:09:01 +0100
committerEike Ziller <eike.ziller@theqtcompany.com>2016-03-09 11:18:59 +0000
commit9aee611520a788cf0223dda9ca6f8011ad88361e (patch)
treed458435d5507cdd4c0438d5f660a43aaec2f876e /src/plugins/coreplugin/outputpanemanager.cpp
parentea29a8309576314ba81c00a80b584674ddb418e6 (diff)
downloadqt-creator-9aee611520a788cf0223dda9ca6f8011ad88361e.tar.gz
OutputPanes: Fix various issues with restoring state
- maximize tool button was synced between modes, but the size didn't match that - size was restored to the last visible size, even if that was maximized, but maximize state didn't match that Manage the state (maximize state & non-maximized size) in the output pane placeholders themselves. The output pane manager is only responsible for the non maximized size setting that is restored at restart. Task-number: QTCREATORBUG-10992 Change-Id: I35b946bbffeef9fbf5301e34018dd0867bd902a6 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Diffstat (limited to 'src/plugins/coreplugin/outputpanemanager.cpp')
-rw-r--r--src/plugins/coreplugin/outputpanemanager.cpp51
1 files changed, 28 insertions, 23 deletions
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index 58e6f30d22..231ea7509c 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -103,8 +103,17 @@ void OutputPaneManager::updateStatusButtons(bool visible)
QTC_ASSERT(m_panes.size() == m_buttons.size(), return);
m_buttons.at(idx)->setChecked(visible);
m_panes.at(idx)->visibilityChanged(visible);
- OutputPanePlaceHolder *ph = OutputPanePlaceHolder::getCurrent();
- m_minMaxAction->setVisible(ph && ph->canMaximizeOrMinimize());
+}
+
+void OutputPaneManager::updateMaximizeButton(bool maximized)
+{
+ if (maximized) {
+ m_instance->m_minMaxAction->setIcon(m_instance->m_minimizeIcon);
+ m_instance->m_minMaxAction->setText(tr("Minimize Output Pane"));
+ } else {
+ m_instance->m_minMaxAction->setIcon(m_instance->m_maximizeIcon);
+ m_instance->m_minMaxAction->setText(tr("Maximize Output Pane"));
+ }
}
OutputPaneManager::OutputPaneManager(QWidget *parent) :
@@ -120,8 +129,7 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) :
m_opToolBarWidgets(new QStackedWidget),
m_minimizeIcon(Icons::ARROW_DOWN.icon()),
m_maximizeIcon(Icons::ARROW_UP.icon()),
- m_maximised(false),
- m_outputPaneHeight(0)
+ m_outputPaneHeightSetting(0)
{
setWindowTitle(tr("Output"));
@@ -231,7 +239,7 @@ void OutputPaneManager::init()
cmd->setAttribute(Command::CA_UpdateText);
cmd->setAttribute(Command::CA_UpdateIcon);
mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup");
- connect(m_minMaxAction, &QAction::triggered, this, &OutputPaneManager::slotMinMax);
+ connect(m_minMaxAction, &QAction::triggered, this, &OutputPaneManager::toggleMaximized);
m_minMaxButton->setDefaultAction(cmd->action());
mpanes->addSeparator("Coreplugin.OutputPane.ActionsGroup");
@@ -334,23 +342,24 @@ void OutputPaneManager::shortcutTriggered()
}
}
-bool OutputPaneManager::isMaximized()const
+int OutputPaneManager::outputPaneHeightSetting()
{
- return m_maximised;
+ return m_instance->m_outputPaneHeightSetting;
}
-void OutputPaneManager::slotMinMax()
+void OutputPaneManager::setOutputPaneHeightSetting(int value)
+{
+ m_instance->m_outputPaneHeightSetting = value;
+}
+
+void OutputPaneManager::toggleMaximized()
{
OutputPanePlaceHolder *ph = OutputPanePlaceHolder::getCurrent();
QTC_ASSERT(ph, return);
if (!ph->isVisible()) // easier than disabling/enabling the action
return;
- m_maximised = !m_maximised;
- ph->maximizeOrMinimize(m_maximised);
- m_minMaxAction->setIcon(m_maximised ? m_minimizeIcon : m_maximizeIcon);
- m_minMaxAction->setText(m_maximised ? tr("Minimize Output Pane")
- : tr("Maximize Output Pane"));
+ ph->setMaximized(!ph->isMaximized());
}
void OutputPaneManager::buttonTriggered(int idx)
@@ -380,7 +389,7 @@ void OutputPaneManager::readSettings()
m_buttons.at(i)->setVisible(m_buttonVisibility.value(m_ids.at(i)));
}
- m_outputPaneHeight = settings->value(QLatin1String("OutputPanePlaceHolder/Height"), 0).toInt();
+ m_outputPaneHeightSetting = settings->value(QLatin1String("OutputPanePlaceHolder/Height"), 0).toInt();
}
void OutputPaneManager::slotNext()
@@ -490,7 +499,6 @@ void OutputPaneManager::showPage(int idx, int flags)
ICore::raiseWindow(m_outputWidgetPane);
}
- ph->setDefaultHeight(m_outputPaneHeight);
if (flags & IOutputPane::EnsureSizeHint)
ph->ensureSizeHintAsMinimum();
}
@@ -511,13 +519,6 @@ void OutputPaneManager::focusInEvent(QFocusEvent *e)
w->setFocus(e->reason());
}
-void OutputPaneManager::resizeEvent(QResizeEvent *e)
-{
- if (e->size().height() == 0)
- return;
- m_outputPaneHeight = e->size().height();
-}
-
void OutputPaneManager::setCurrentIndex(int idx)
{
static int lastIndex = -1;
@@ -586,7 +587,11 @@ void OutputPaneManager::saveSettings() const
m_buttonVisibility.value(m_ids.at(i)));
}
settings->endArray();
- settings->setValue(QLatin1String("OutputPanePlaceHolder/Height"), m_outputPaneHeight);
+ int heightSetting = m_outputPaneHeightSetting;
+ // update if possible
+ if (OutputPanePlaceHolder *curr = OutputPanePlaceHolder::getCurrent())
+ heightSetting = curr->nonMaximizedSize();
+ settings->setValue(QLatin1String("OutputPanePlaceHolder/Height"), heightSetting);
}
void OutputPaneManager::clearPage()