@@ -145,6 +145,11 @@ struct DockContainerWidgetPrivate
145145 */
146146 bool restoreDockArea (QDataStream& Stream, QWidget*& CreatedWidget,
147147 bool Testing);
148+
149+ /* *
150+ * Helper function for recursive dumping of layout
151+ */
152+ void dumpRecursive (int level, QWidget* widget);
148153}; // struct DockContainerWidgetPrivate
149154
150155
@@ -169,7 +174,7 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
169174 {
170175 Splitter->setOrientation (InsertParam.orientation ());
171176 }
172- else
177+ else if (Splitter-> orientation () != InsertParam. orientation ())
173178 {
174179 QSplitter* NewSplitter = internal::newSplitter (InsertParam.orientation ());
175180 QLayoutItem* li = Layout->replaceWidget (Splitter, NewSplitter);
@@ -178,13 +183,8 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
178183 }
179184
180185 // Now we can insert the floating widget content into this container
181- auto Widget = FloatingWidget->dockContainer ()->findChild <QWidget*>(QString (), Qt::FindDirectChildrenOnly);
182- auto FloatingSplitter = dynamic_cast <QSplitter*>(Widget);
183- if (DockAreas.isEmpty ())
184- {
185- Splitter->addWidget (Widget);
186- }
187- else if (FloatingSplitter->count () == 1 )
186+ auto FloatingSplitter = FloatingWidget->dockContainer ()->rootSplitter ();
187+ if (FloatingSplitter->count () == 1 )
188188 {
189189 insertWidgetIntoSplitter (Splitter, FloatingSplitter->widget (0 ), InsertParam.append ());
190190 }
@@ -203,6 +203,7 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
203203 RootSplitter = Splitter;
204204 addDockAreasToList (NewDockAreas);
205205 FloatingWidget->deleteLater ();
206+ _this->dumpLayout ();
206207}
207208
208209
@@ -278,6 +279,7 @@ void DockContainerWidgetPrivate::dropIntoSection(CFloatingDockContainer* Floatin
278279
279280 FloatingWidget->deleteLater ();
280281 addDockAreasToList (NewDockAreas);
282+ _this->dumpLayout ();
281283}
282284
283285
@@ -523,6 +525,33 @@ void DockContainerWidgetPrivate::addDockArea(CDockAreaWidget* NewDockArea, DockW
523525}
524526
525527
528+ // ============================================================================
529+ void DockContainerWidgetPrivate::dumpRecursive (int level, QWidget* widget)
530+ {
531+ QSplitter* Splitter = dynamic_cast <QSplitter*>(widget);
532+ QByteArray buf;
533+ buf.fill (' ' , level * 4 );
534+ if (Splitter)
535+ {
536+ std::cout << buf.toStdString () << " Splitter " << ((Splitter->orientation () == Qt::Vertical)
537+ ? " -" : " |" ) << std::endl;
538+ for (int i = 0 ; i < Splitter->count (); ++i)
539+ {
540+ dumpRecursive (level + 1 , Splitter->widget (i));
541+ }
542+ }
543+ else
544+ {
545+ CDockAreaWidget* DockArea = dynamic_cast <CDockAreaWidget*>(widget);
546+ if (!DockArea)
547+ {
548+ return ;
549+ }
550+ std::cout << buf.toStdString () << " DockArea" << std::endl;
551+ }
552+ }
553+
554+
526555// ============================================================================
527556CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea (DockWidgetArea area,
528557 CDockWidget* Dockwidget, CDockAreaWidget* TargetDockArea)
@@ -681,6 +710,7 @@ void CDockContainerWidget::removeDockArea(CDockAreaWidget* area)
681710 QSplitter* ParentSplitter = internal::findParent<QSplitter*>(Splitter);
682711 internal::replaceSplitterWidget (ParentSplitter, Splitter, widget);
683712 delete Splitter;
713+ dumpLayout ();
684714 emit dockAreasRemoved ();
685715}
686716
@@ -845,6 +875,20 @@ bool CDockContainerWidget::restoreState(QDataStream& stream, bool Testing)
845875}
846876
847877
878+ // ============================================================================
879+ QSplitter* CDockContainerWidget::rootSplitter () const
880+ {
881+ return d->RootSplitter ;
882+ }
883+
884+
885+ // ============================================================================
886+ void CDockContainerWidget::dumpLayout ()
887+ {
888+ d->dumpRecursive (0 , d->RootSplitter );
889+ }
890+
891+
848892} // namespace ads
849893
850894// ---------------------------------------------------------------------------
0 commit comments