diff --git a/src/plugins/coreplugin/fancyactionbar.cpp b/src/plugins/coreplugin/fancyactionbar.cpp index d0f7cf7013eb73c86e4729b59d3580f80a94e8bd..6fc39c6b33cf4f2e41bf53918b2d9d9f4b775ee9 100644 --- a/src/plugins/coreplugin/fancyactionbar.cpp +++ b/src/plugins/coreplugin/fancyactionbar.cpp @@ -77,27 +77,47 @@ FancyToolButton::FancyToolButton(QWidget *parent) , m_buttonElements(buttonElementsMap()) { setAttribute(Qt::WA_Hover, true); + setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); } void FancyToolButton::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter p(this); + QSize sh(sizeHint()); + double scale = (double)height() / sh.height(); + if (scale < 1) { + p.save(); + p.scale(1, scale); + } p.drawPicture(0, 0, m_buttonElements.value(svgIdButtonBase)); p.drawPicture(0, 0, m_buttonElements.value(isDown() ? svgIdButtonPressedBase : svgIdButtonNormalBase)); #ifndef Q_WS_MAC // Mac UIs usually don't hover if (underMouse() && isEnabled()) p.drawPicture(0, 0, m_buttonElements.value(svgIdButtonHoverOverlay)); #endif + + if (scale < 1) + p.restore(); + if (!icon().isNull()) { icon().paint(&p, rect()); } else { const int margin = 4; p.drawText(rect().adjusted(margin, margin, -margin, -margin), Qt::AlignCenter | Qt::TextWordWrap, text()); + + } + + if (scale < 1) { + p.scale(1, scale); } - if (!isEnabled()) + + if (isEnabled()) { + p.drawPicture(0, 0, m_buttonElements.value(isDown() ? + svgIdButtonPressedOverlay : svgIdButtonNormalOverlay)); + } else { p.drawPicture(0, 0, m_buttonElements.value(svgIdButtonDisabledOverlay)); - p.drawPicture(0, 0, m_buttonElements.value(isDown() ? svgIdButtonPressedOverlay : svgIdButtonNormalOverlay)); + } } void FancyActionBar::paintEvent(QPaintEvent *event) @@ -110,6 +130,11 @@ QSize FancyToolButton::sizeHint() const return m_buttonElements.value(svgIdButtonBase).boundingRect().size(); } +QSize FancyToolButton::minimumSizeHint() const +{ + return QSize(8, 8); +} + FancyActionBar::FancyActionBar(QWidget *parent) : QWidget(parent) { diff --git a/src/plugins/coreplugin/fancyactionbar.h b/src/plugins/coreplugin/fancyactionbar.h index 927e42eb820c85a14eb29d6a1b655194f54fd313..6a7e1279901f882ae857244e427fc9dc956bce68 100644 --- a/src/plugins/coreplugin/fancyactionbar.h +++ b/src/plugins/coreplugin/fancyactionbar.h @@ -48,6 +48,7 @@ public: void paintEvent(QPaintEvent *event); QSize sizeHint() const; + QSize minimumSizeHint() const; private: const QMap<QString, QPicture> &m_buttonElements; diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp index 918d138b3b49178b37d3fb308c6c21ee36b38e4a..aac67c8a2f4941c8bc1ef37b1ec1659ee32f7d08 100644 --- a/src/plugins/coreplugin/fancytabwidget.cpp +++ b/src/plugins/coreplugin/fancytabwidget.cpp @@ -305,12 +305,12 @@ FancyTabWidget::FancyTabWidget(QWidget *parent) bar->setFixedHeight(StyleHelper::navigationWidgetHeight()); selectionLayout->addWidget(bar); - selectionLayout->addWidget(m_tabBar); + selectionLayout->addWidget(m_tabBar, 1); m_selectionWidget->setLayout(selectionLayout); m_selectionWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); m_cornerWidgetContainer = new QWidget(this); - m_cornerWidgetContainer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); + m_cornerWidgetContainer->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); m_cornerWidgetContainer->setAutoFillBackground(false); QVBoxLayout *cornerWidgetLayout = new QVBoxLayout;