Designer: Fix morphing of widgets in QSplitters.
authorFriedemann Kleint <Friedemann.Kleint@digia.com>
Fri, 21 Jun 2013 08:21:36 +0000 (10:21 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 21 Jun 2013 11:10:47 +0000 (13:10 +0200)
They were not handled at all, children were just reparented
resulting in the morphed widgets being appended.

Task-number: QTBUG-31911
Change-Id: Idae8f66663416d514a2f3c299e58d726a3dd578a
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
src/designer/src/lib/shared/morphmenu.cpp

index 516734d..8a47784 100644 (file)
@@ -62,6 +62,7 @@
 #include <QtWidgets/QApplication>
 #include <QtWidgets/QLayout>
 #include <QtWidgets/QUndoStack>
+#include <QtWidgets/QSplitter>
 
 #include <QtWidgets/QFrame>
 #include <QtWidgets/QGroupBox>
@@ -457,6 +458,13 @@ void MorphWidgetCommand::morph(QWidget *before, QWidget *after)
         Q_ASSERT(lh);
         lh->replaceWidget(containingLayout, before, after);
         delete lh;
+    } else if (QSplitter *splitter = qobject_cast<QSplitter *>(parent)) {
+        const int index = splitter->indexOf(before);
+        before->hide();
+        before->setParent(0);
+        splitter->insertWidget(index, after);
+        after->setParent(parent);
+        after->setGeometry(oldGeom);
     } else {
         before->hide();
         before->setParent(0);