@@ -145,6 +145,11 @@ struct DockContainerWidgetPrivate
145
145
*/
146
146
bool restoreDockArea (QDataStream& Stream, QWidget*& CreatedWidget,
147
147
bool Testing);
148
+
149
+ /* *
150
+ * Helper function for recursive dumping of layout
151
+ */
152
+ void dumpRecursive (int level, QWidget* widget);
148
153
}; // struct DockContainerWidgetPrivate
149
154
150
155
@@ -169,7 +174,7 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
169
174
{
170
175
Splitter->setOrientation (InsertParam.orientation ());
171
176
}
172
- else
177
+ else if (Splitter-> orientation () != InsertParam. orientation ())
173
178
{
174
179
QSplitter* NewSplitter = internal::newSplitter (InsertParam.orientation ());
175
180
QLayoutItem* li = Layout->replaceWidget (Splitter, NewSplitter);
@@ -178,13 +183,8 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
178
183
}
179
184
180
185
// 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 )
188
188
{
189
189
insertWidgetIntoSplitter (Splitter, FloatingSplitter->widget (0 ), InsertParam.append ());
190
190
}
@@ -203,6 +203,7 @@ void DockContainerWidgetPrivate::dropIntoContainer(CFloatingDockContainer* Float
203
203
RootSplitter = Splitter;
204
204
addDockAreasToList (NewDockAreas);
205
205
FloatingWidget->deleteLater ();
206
+ _this->dumpLayout ();
206
207
}
207
208
208
209
@@ -278,6 +279,7 @@ void DockContainerWidgetPrivate::dropIntoSection(CFloatingDockContainer* Floatin
278
279
279
280
FloatingWidget->deleteLater ();
280
281
addDockAreasToList (NewDockAreas);
282
+ _this->dumpLayout ();
281
283
}
282
284
283
285
@@ -523,6 +525,33 @@ void DockContainerWidgetPrivate::addDockArea(CDockAreaWidget* NewDockArea, DockW
523
525
}
524
526
525
527
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
+
526
555
// ============================================================================
527
556
CDockAreaWidget* DockContainerWidgetPrivate::dockWidgetIntoDockArea (DockWidgetArea area,
528
557
CDockWidget* Dockwidget, CDockAreaWidget* TargetDockArea)
@@ -681,6 +710,7 @@ void CDockContainerWidget::removeDockArea(CDockAreaWidget* area)
681
710
QSplitter* ParentSplitter = internal::findParent<QSplitter*>(Splitter);
682
711
internal::replaceSplitterWidget (ParentSplitter, Splitter, widget);
683
712
delete Splitter;
713
+ dumpLayout ();
684
714
emit dockAreasRemoved ();
685
715
}
686
716
@@ -845,6 +875,20 @@ bool CDockContainerWidget::restoreState(QDataStream& stream, bool Testing)
845
875
}
846
876
847
877
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
+
848
892
} // namespace ads
849
893
850
894
// ---------------------------------------------------------------------------
0 commit comments