From dd91cbcf80bccd4abf67a4ea4dd9975d161519c9 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 26 Jul 2011 14:32:34 +0200 Subject: [PATCH] Work around wrong click area of output buttons on Mac. 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 Reviewed-by: Leandro T. C. Melo Reviewed-by: Daniel Molkentin --- src/plugins/coreplugin/mainwindow.cpp | 1 + src/plugins/coreplugin/outputpanemanager.cpp | 24 +++++++++++++----------- src/plugins/coreplugin/outputpanemanager.h | 7 +++---- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 3106626d7c..973ddf1c7f 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -103,6 +103,7 @@ #include #include #include +#include /* #ifdef Q_OS_UNIX diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp index a7e1279166..5ef5f2bb66 100644 --- a/src/plugins/coreplugin/outputpanemanager.cpp +++ b/src/plugins/coreplugin/outputpanemanager.cpp @@ -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(sender()); - QMap::const_iterator it, end; + QToolButton *button = qobject_cast(sender()); + QMap::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(); diff --git a/src/plugins/coreplugin/outputpanemanager.h b/src/plugins/coreplugin/outputpanemanager.h index 921e21dd12..5c20a31dcd 100644 --- a/src/plugins/coreplugin/outputpanemanager.h +++ b/src/plugins/coreplugin/outputpanemanager.h @@ -34,12 +34,11 @@ #define OUTPUTPANEMANAGER_H #include -#include +#include 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 m_buttons; + QMap m_buttons; QMap m_actions; QPixmap m_minimizeIcon; QPixmap m_maximizeIcon; bool m_maximised; }; -class OutputPaneToggleButton : public QPushButton +class OutputPaneToggleButton : public QToolButton { Q_OBJECT public: -- 2.11.0