diff options
author | Alexander Volkov <a.volkov@rusbitech.ru> | 2014-09-12 17:49:59 +0400 |
---|---|---|
committer | Alexander Volkov <a.volkov@rusbitech.ru> | 2014-09-16 20:35:31 +0200 |
commit | 80ca159b47f5923466301bc9a5f5e042c1c47ca1 (patch) | |
tree | 7c1a7d8e864dc6c4478aaf0f8e95a7a2a239fc42 /tests | |
parent | eb6507039f3a991f446b58500343086c26b243b3 (diff) |
Fix saving handle width in QSplitter::saveState()
QSplitter::handleWidth() returns either a style dependent value if
d->handleWidth is negative or the value of d->handleWidth itself.
So to preserve this choice after calling saveState()/restoreState()
we should save and restore the value of d->handleWidth rather than a
result of handleWidth() which is non-negative.
Change-Id: Idc11f8063d34b6c4a5f9b0a0032868679766dfb9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp index d66a10ae56..17fde2883a 100644 --- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp @@ -56,6 +56,7 @@ #include <qlabel.h> #include <qdialog.h> #include <qscreen.h> +#include <qproxystyle.h> #include <qdebug.h> // for file error messages QT_FORWARD_DECLARE_CLASS(QSplitter) @@ -88,6 +89,7 @@ private slots: void testRemoval(); void rubberBandNotInSplitter(); void saveAndRestoreStateOfNotYetShownSplitter(); + void saveAndRestoreHandleWidth(); // task-specific tests below me: void task187373_addAbstractScrollAreas(); @@ -301,6 +303,41 @@ void tst_QSplitter::saveAndRestoreStateOfNotYetShownSplitter() delete spl; } +class TestSplitterStyle : public QProxyStyle +{ +public: + TestSplitterStyle() : handleWidth(5) {} + int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) const Q_DECL_OVERRIDE + { + if (metric == QStyle::PM_SplitterWidth) + return handleWidth; + else + return QProxyStyle::pixelMetric(metric, option, widget); + } + int handleWidth; +}; + +void tst_QSplitter::saveAndRestoreHandleWidth() +{ + TestSplitterStyle style; + style.handleWidth = 5; + QSplitter spl; + spl.setStyle(&style); + + QCOMPARE(spl.handleWidth(), style.handleWidth); + style.handleWidth = 10; + QCOMPARE(spl.handleWidth(), style.handleWidth); + QByteArray ba = spl.saveState(); + spl.setHandleWidth(20); + QCOMPARE(spl.handleWidth(), 20); + spl.setHandleWidth(-1); + QCOMPARE(spl.handleWidth(), style.handleWidth); + spl.setHandleWidth(15); + QCOMPARE(spl.handleWidth(), 15); + spl.restoreState(ba); + QCOMPARE(spl.handleWidth(), style.handleWidth); +} + void tst_QSplitter::saveState_data() { QTest::addColumn<IntList>("initialSizes"); |