OSDN Git Service

Work around wrong click area of output buttons on Mac.
authorEike Ziller <eike.ziller@nokia.com>
Tue, 26 Jul 2011 12:32:34 +0000 (14:32 +0200)
committerEike Ziller <eike.ziller@nokia.com>
Tue, 26 Jul 2011 14:07:04 +0000 (16:07 +0200)
For some reason using push buttons in the status bar will make
the clickable area of the buttons too small (half of the button isn't
clickable). Using QToolButtons instead.

Task-number: QTCREATORBUG-4513
Change-Id: I8b0f97552ec9b2471d570d577522b7ce5f382fb9
Reviewed-on: http://codereview.qt.nokia.com/2193
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
Reviewed-by: Daniel Molkentin <daniel.molkentin@nokia.com>
src/plugins/coreplugin/mainwindow.cpp
src/plugins/coreplugin/outputpanemanager.cpp
src/plugins/coreplugin/outputpanemanager.h

index 3106626..973ddf1 100644 (file)
 #include <QtGui/QToolButton>
 #include <QtGui/QMessageBox>
 #include <QtGui/QMenuBar>
+#include <QtGui/QPushButton>
 
 /*
 #ifdef Q_OS_UNIX
index a7e1279..5ef5f2b 100644 (file)
@@ -279,7 +279,7 @@ void OutputPaneManager::init()
 
         if (outPane->priorityInStatusBar() != -1) {
             cmd->setDefaultKeySequence(QKeySequence(paneShortCut(shortcutNumber)));
-            QPushButton *button = new OutputPaneToggleButton(shortcutNumber, outPane->displayName(),
+            QToolButton *button = new OutputPaneToggleButton(shortcutNumber, outPane->displayName(),
                                                              cmd->action());
             ++shortcutNumber;
             m_buttonsWidget->layout()->addWidget(button);
@@ -339,8 +339,8 @@ void OutputPaneManager::slotMinMax()
 
 void OutputPaneManager::buttonTriggered()
 {
-    QPushButton *button = qobject_cast<QPushButton *>(sender());
-    QMap<int, QPushButton *>::const_iterator it, end;
+    QToolButton *button = qobject_cast<QToolButton *>(sender());
+    QMap<int, QToolButton *>::const_iterator it, end;
     end = m_buttons.constEnd();
     for (it = m_buttons.begin(); it != end; ++it) {
         if (it.value() == button)
@@ -514,22 +514,24 @@ void OutputPaneManager::clearPage()
 
 OutputPaneToggleButton::OutputPaneToggleButton(int number, const QString &text,
                                                QAction *action, QWidget *parent)
-    : QPushButton(parent)
+    : QToolButton(parent)
     , m_number(QString::number(number))
     , m_text(text)
     , m_action(action)
 {
     setFocusPolicy(Qt::NoFocus);
     setCheckable(true);
+    QFont fnt = QApplication::font();
+    setFont(fnt);
     setStyleSheet(
-            "QPushButton { border-image: url(:/core/images/panel_button.png) 2 2 2 19;"
+            "QToolButton { border-image: url(:/core/images/panel_button.png) 2 2 2 19;"
                          " border-width: 2px 2px 2px 19px; padding-left: -17; padding-right: 4 } "
-            "QPushButton:checked { border-image: url(:/core/images/panel_button_checked.png) 2 2 2 19 } "
-            "QPushButton::menu-indicator { width:0; height:0 }"
+            "QToolButton:checked { border-image: url(:/core/images/panel_button_checked.png) 2 2 2 19 } "
+            "QToolButton::menu-indicator { width:0; height:0 }"
 #ifndef Q_WS_MAC // Mac UIs usually don't hover
-            "QPushButton:checked:hover { border-image: url(:/core/images/panel_button_checked_hover.png) 2 2 2 19 } "
-            "QPushButton:pressed:hover { border-image: url(:/core/images/panel_button_pressed.png) 2 2 2 19 } "
-            "QPushButton:hover { border-image: url(:/core/images/panel_button_hover.png) 2 2 2 19 } "
+            "QToolButton:checked:hover { border-image: url(:/core/images/panel_button_checked_hover.png) 2 2 2 19 } "
+            "QToolButton:pressed:hover { border-image: url(:/core/images/panel_button_pressed.png) 2 2 2 19 } "
+            "QToolButton:hover { border-image: url(:/core/images/panel_button_hover.png) 2 2 2 19 } "
 #endif
             );
     if (m_action)
@@ -558,7 +560,7 @@ QSize OutputPaneToggleButton::sizeHint() const
 void OutputPaneToggleButton::paintEvent(QPaintEvent *event)
 {
     // For drawing the style sheet stuff
-    QPushButton::paintEvent(event);
+    QToolButton::paintEvent(event);
 
     const QFontMetrics fm = fontMetrics();
     const int baseLine = (height() - fm.height() + 1) / 2 + fm.ascent();
index 921e21d..5c20a31 100644 (file)
 #define OUTPUTPANEMANAGER_H
 
 #include <QtCore/QMap>
-#include <QtGui/QPushButton>
+#include <QtGui/QToolButton>
 
 QT_BEGIN_NAMESPACE
 class QAction;
 class QComboBox;
-class QToolButton;
 class QStackedWidget;
 class QSplitter;
 QT_END_NAMESPACE
@@ -118,14 +117,14 @@ private:
     QStackedWidget *m_outputWidgetPane;
     QStackedWidget *m_opToolBarWidgets;
     QWidget *m_buttonsWidget;
-    QMap<int, QPushButton *> m_buttons;
+    QMap<int, QToolButton *> m_buttons;
     QMap<QAction *, int> m_actions;
     QPixmap m_minimizeIcon;
     QPixmap m_maximizeIcon;
     bool m_maximised;
 };
 
-class OutputPaneToggleButton : public QPushButton
+class OutputPaneToggleButton : public QToolButton
 {
     Q_OBJECT
 public: