diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-02-12 22:44:32 +0100 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-02-15 20:00:23 +0000 |
commit | 23eab78f510a9cfb050980f522dc23409e23fbdb (patch) | |
tree | 2a515b8def09828c6792e9e258000c05e22f9558 /src/widgets/widgets | |
parent | ede6c447560b9419ee9d2991059e488a7d5a3208 (diff) |
QToolBar: Fix QToolbar extension button icon after LayoutDirectionChange
When the layout direction is changed after the QToolButton is created,
the extension button icon was not updated.
Task-number: QTBUG-66344
Change-Id: I8690b2c42c4f485a39490f16b15b8ee58e6f4ace
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qtoolbarextension.cpp | 20 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbarextension_p.h | 6 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/widgets/widgets/qtoolbarextension.cpp b/src/widgets/widgets/qtoolbarextension.cpp index 47cf16e0cc..bbe7eddaa4 100644 --- a/src/widgets/widgets/qtoolbarextension.cpp +++ b/src/widgets/widgets/qtoolbarextension.cpp @@ -38,7 +38,7 @@ ****************************************************************************/ #include "qtoolbarextension_p.h" -#include <qpixmap.h> +#include <qevent.h> #include <qstyle.h> #include <qstylepainter.h> #include <qstyleoption.h> @@ -47,10 +47,11 @@ QT_BEGIN_NAMESPACE QToolBarExtension::QToolBarExtension(QWidget *parent) : QToolButton(parent) + , m_orientation(Qt::Horizontal) { setObjectName(QLatin1String("qt_toolbar_ext_button")); setAutoRaise(true); - setOrientation(Qt::Horizontal); + setOrientation(m_orientation); setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); setCheckable(true); } @@ -63,7 +64,8 @@ void QToolBarExtension::setOrientation(Qt::Orientation o) setIcon(style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton, &opt)); } else { setIcon(style()->standardIcon(QStyle::SP_ToolBarVerticalExtensionButton, &opt)); - } + } + m_orientation = o; } void QToolBarExtension::paintEvent(QPaintEvent *) @@ -83,6 +85,18 @@ QSize QToolBarExtension::sizeHint() const return QSize(ext, ext); } +bool QToolBarExtension::event(QEvent *event) +{ + switch (event->type()) { + case QEvent::LayoutDirectionChange: + setOrientation(m_orientation); + break; + default: + break; + } + return QToolButton::event(event); +} + QT_END_NAMESPACE #include "moc_qtoolbarextension_p.cpp" diff --git a/src/widgets/widgets/qtoolbarextension_p.h b/src/widgets/widgets/qtoolbarextension_p.h index a388f1e40f..146e0e58c1 100644 --- a/src/widgets/widgets/qtoolbarextension_p.h +++ b/src/widgets/widgets/qtoolbarextension_p.h @@ -69,6 +69,12 @@ public: public Q_SLOTS: void setOrientation(Qt::Orientation o); + +protected: + bool event(QEvent *e) override; + +private: + Qt::Orientation m_orientation; }; QT_END_NAMESPACE |