diff options
author | Jens Bache-Wiig <jbache@trolltech.com> | 2009-11-17 12:22:11 (GMT) |
---|---|---|
committer | Jens Bache-Wiig <jbache@trolltech.com> | 2009-11-17 12:22:11 (GMT) |
commit | 4c7d869bc103de36b5a97dd50f323f7af680656e (patch) | |
tree | 4a97b51a7678ad0fd220ae47d97d6ed1e806ad4f | |
parent | 5c4fce677e58b17fdc7ee19803b9939f56530b06 (diff) | |
download | Qt-4c7d869bc103de36b5a97dd50f323f7af680656e.zip Qt-4c7d869bc103de36b5a97dd50f323f7af680656e.tar.gz Qt-4c7d869bc103de36b5a97dd50f323f7af680656e.tar.bz2 |
Fix for tabwidget elidemode being overriden by stylesheet
Setting a stylesheet or reparenting a widget into a
widget using style sheet would cause the elidemode
to be reset. Instead we now keep the elidemode whenever
it has been explicitly set by the user rather than
querying from the style again.
Task-number: QT-1914
Reviewed-by: ogoffart
-rw-r--r-- | src/gui/widgets/qtabbar.cpp | 4 | ||||
-rw-r--r-- | src/gui/widgets/qtabbar_p.h | 3 | ||||
-rw-r--r-- | tests/auto/qtabbar/tst_qtabbar.cpp | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp index 3935c55..98c69c0 100644 --- a/src/gui/widgets/qtabbar.cpp +++ b/src/gui/widgets/qtabbar.cpp @@ -1947,7 +1947,8 @@ void QTabBar::changeEvent(QEvent *event) { Q_D(QTabBar); if (event->type() == QEvent::StyleChange) { - d->elideMode = Qt::TextElideMode(style()->styleHint(QStyle::SH_TabBar_ElideMode, 0, this)); + if (!d->elideModeSetByUser) + d->elideMode = Qt::TextElideMode(style()->styleHint(QStyle::SH_TabBar_ElideMode, 0, this)); d->useScrollButtons = !style()->styleHint(QStyle::SH_TabBar_PreferNoArrows, 0, this); d->refresh(); } else if (event->type() == QEvent::FontChange) { @@ -1979,6 +1980,7 @@ void QTabBar::setElideMode(Qt::TextElideMode mode) { Q_D(QTabBar); d->elideMode = mode; + d->elideModeSetByUser = true; d->refresh(); } diff --git a/src/gui/widgets/qtabbar_p.h b/src/gui/widgets/qtabbar_p.h index 9f3285b..2854cde 100644 --- a/src/gui/widgets/qtabbar_p.h +++ b/src/gui/widgets/qtabbar_p.h @@ -75,7 +75,7 @@ class QTabBarPrivate : public QWidgetPrivate public: QTabBarPrivate() :currentIndex(-1), pressedIndex(-1), shape(QTabBar::RoundedNorth), layoutDirty(false), - drawBase(true), scrollOffset(0), expanding(true), closeButtonOnTabs(false), + drawBase(true), scrollOffset(0), elideModeSetByUser(false), expanding(true), closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab), paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false), movingTab(0) #ifdef Q_WS_MAC @@ -186,6 +186,7 @@ public: void makeVisible(int index); QSize iconSize; Qt::TextElideMode elideMode; + bool elideModeSetByUser; bool useScrollButtons; bool expanding; diff --git a/tests/auto/qtabbar/tst_qtabbar.cpp b/tests/auto/qtabbar/tst_qtabbar.cpp index 2db72b9..78c65ae 100644 --- a/tests/auto/qtabbar/tst_qtabbar.cpp +++ b/tests/auto/qtabbar/tst_qtabbar.cpp @@ -273,6 +273,9 @@ void tst_QTabBar::setElideMode() if (tabElideMode != -128) tabBar.setElideMode(Qt::TextElideMode(tabElideMode)); QTEST(int(tabBar.elideMode()), "expectedMode"); + // Make sure style sheet does not override user set mode + tabBar.setStyleSheet("QWidget { background-color: #ABA8A6;}"); + QTEST(int(tabBar.elideMode()), "expectedMode"); } void tst_QTabBar::setUsesScrollButtons_data() |