From 8d0814f0f93e2e0a0b5c0aeb43a3c57c0b131c0d Mon Sep 17 00:00:00 2001
From: Jens Bache-Wiig <jbache@trolltech.com>
Date: Fri, 7 May 2010 13:16:45 +0200
Subject: [PATCH] Polish the min/max output pane button

We used to use the arrow up/down primitives for this button.
This looks broken in a lot of styles so we now use a proper
icon. Note that setDefaultAction is a bit broken at the moment
since it doesnt propagate the icon change.

Reviewed-by: thorbjorn
---
 src/plugins/coreplugin/core.qrc       |  2 ++
 src/plugins/coreplugin/outputpane.cpp | 25 +++++++++++++++----------
 src/plugins/coreplugin/outputpane.h   |  3 +++
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/plugins/coreplugin/core.qrc b/src/plugins/coreplugin/core.qrc
index 3767f039259..a38f9d148c4 100644
--- a/src/plugins/coreplugin/core.qrc
+++ b/src/plugins/coreplugin/core.qrc
@@ -57,5 +57,7 @@
         <file>images/darkarrowdown.png</file>
         <file>images/darkarrowup.png</file>
         <file>images/darkclose.png</file>
+        <file>images/arrowdown.png</file>
+        <file>images/arrowup.png</file>
     </qresource>
 </RCC>
diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp
index 89903d7f6d5..e3b48e00319 100644
--- a/src/plugins/coreplugin/outputpane.cpp
+++ b/src/plugins/coreplugin/outputpane.cpp
@@ -201,7 +201,10 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) :
     m_prevAction(0),
     m_lastIndex(-1),
     m_outputWidgetPane(new QStackedWidget),
-    m_opToolBarWidgets(new QStackedWidget)
+    m_opToolBarWidgets(new QStackedWidget),
+    m_minimizeIcon(":/core/images/arrowdown.png"),
+    m_maximizeIcon(":/core/images/arrowup.png"),
+    m_maximised(false)
 {
     setWindowTitle(tr("Output"));
     connect(m_widgetComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(changePage()));
@@ -221,8 +224,9 @@ OutputPaneManager::OutputPaneManager(QWidget *parent) :
     connect(m_prevAction, SIGNAL(triggered()), this, SLOT(slotPrev()));
 
     m_minMaxAction = new QAction(this);
-    m_minMaxAction->setText(tr("Maximize Output Pane"));
-    m_minMaxButton->setArrowType(Qt::UpArrow);
+    m_minMaxButton->setIcon(m_maximizeIcon);
+    m_minMaxButton->setToolTip(tr("Maximize Output Pane"));
+    m_minMaxAction->setText(m_minMaxButton->toolTip());
 
     m_closeButton->setIcon(QIcon(":/core/images/closebutton.png"));
     connect(m_closeButton, SIGNAL(clicked()), this, SLOT(slotHide()));
@@ -309,8 +313,8 @@ void OutputPaneManager::init()
 #endif
     cmd->setAttribute(Command::CA_UpdateText);
     mpanes->addAction(cmd, "Coreplugin.OutputPane.ActionsGroup");
-    m_minMaxButton->setDefaultAction(cmd->action());
     connect(m_minMaxAction, SIGNAL(triggered()), this, SLOT(slotMinMax()));
+    connect(m_minMaxButton, SIGNAL(clicked()), this, SLOT(slotMinMax()));
 
     QAction *sep = new QAction(this);
     sep->setSeparator(true);
@@ -403,7 +407,7 @@ void OutputPaneManager::shortcutTriggered()
 
 bool OutputPaneManager::isMaximized()const
 {
-    return m_minMaxButton->arrowType() == Qt::DownArrow;
+    return m_maximised;
 }
 
 void OutputPaneManager::slotMinMax()
@@ -412,11 +416,12 @@ void OutputPaneManager::slotMinMax()
 
     if (!OutputPanePlaceHolder::m_current->isVisible()) // easier than disabling/enabling the action
         return;
-    bool maximize = m_minMaxButton->arrowType() == Qt::UpArrow;
-    OutputPanePlaceHolder::m_current->maximizeOrMinimize(maximize);
-    m_minMaxButton->setArrowType(maximize ? Qt::DownArrow : Qt::UpArrow);
-    m_minMaxAction->setToolTip(maximize ? tr("Minimize Output Pane")
-                                        : tr("Maximize Output Pane"));
+    m_maximised = !m_maximised;
+    OutputPanePlaceHolder::m_current->maximizeOrMinimize(m_maximised);
+    m_minMaxButton->setIcon(m_maximised ? m_minimizeIcon : m_maximizeIcon);
+    m_minMaxButton->setToolTip(m_maximised ? tr("Minimize Output Pane")
+                                            : tr("Maximize Output Pane"));
+    m_minMaxAction->setText(m_minMaxButton->toolTip());
 }
 
 void OutputPaneManager::buttonTriggered()
diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h
index 64a0a0f7765..edfad8bb500 100644
--- a/src/plugins/coreplugin/outputpane.h
+++ b/src/plugins/coreplugin/outputpane.h
@@ -148,6 +148,9 @@ private:
     QWidget *m_buttonsWidget;
     QMap<int, QPushButton *> m_buttons;
     QMap<QAction *, int> m_actions;
+    QPixmap m_minimizeIcon;
+    QPixmap m_maximizeIcon;
+    bool m_maximised;
 };
 
 class OutputPaneToggleButton : public QPushButton
-- 
GitLab