summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/widgets/qdockarealayout.cpp6
-rw-r--r--tests/auto/qdockwidget/tst_qdockwidget.cpp16
2 files changed, 19 insertions, 3 deletions
diff --git a/src/gui/widgets/qdockarealayout.cpp b/src/gui/widgets/qdockarealayout.cpp
index dffec11..27e145f 100644
--- a/src/gui/widgets/qdockarealayout.cpp
+++ b/src/gui/widgets/qdockarealayout.cpp
@@ -1933,6 +1933,9 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
item_list.append(item);
} else {
QDockAreaLayoutItem item(new QDockWidgetItem(widget));
+ if (!testing) {
+ item_list.append(item);
+ }
if (flags & StateFlagFloating) {
bool drawer = false;
#ifdef Q_WS_MAC // drawer support
@@ -1980,9 +1983,6 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
}
}
- if (!testing) {
- item_list.append(item);
- }
}
} else if (nextMarker == SequenceMarker) {
int dummy;
diff --git a/tests/auto/qdockwidget/tst_qdockwidget.cpp b/tests/auto/qdockwidget/tst_qdockwidget.cpp
index eb3f641..e04ed18 100644
--- a/tests/auto/qdockwidget/tst_qdockwidget.cpp
+++ b/tests/auto/qdockwidget/tst_qdockwidget.cpp
@@ -87,6 +87,7 @@ private slots:
void dockLocationChanged();
void setTitleBarWidget();
void titleBarDoubleClick();
+ void restoreStateOfFloating();
// task specific tests:
void task165177_deleteFocusWidget();
void task169808_setFloating();
@@ -715,6 +716,21 @@ void tst_QDockWidget::titleBarDoubleClick()
QCOMPARE(win.dockWidgetArea(&dock), Qt::TopDockWidgetArea);
}
+void tst_QDockWidget::restoreStateOfFloating()
+{
+ QMainWindow mw;
+ QDockWidget dock;
+ dock.setObjectName("dock1");
+ mw.addDockWidget(Qt::TopDockWidgetArea, &dock);
+ QVERIFY(!dock.isFloating());
+ QByteArray ba = mw.saveState();
+ dock.setFloating(true);
+ QVERIFY(dock.isFloating());
+ QVERIFY(mw.restoreState(ba));
+ QVERIFY(!dock.isFloating());
+}
+
+
void tst_QDockWidget::task165177_deleteFocusWidget()
{
QMainWindow mw;