@@ -141,7 +141,7 @@ class DockContainerWidgetPrivate
141141 CDockContainerWidget* _this;
142142 QPointer<CDockManager> DockManager;
143143 unsigned int zOrderIndex = 0 ;
144- QList<CDockAreaWidget* > DockAreas;
144+ QList<QPointer< CDockAreaWidget> > DockAreas;
145145 QList<CAutoHideDockContainer*> AutoHideWidgets;
146146 QMap<SideBarLocation, CAutoHideSideBar*> SideTabBarWidgets;
147147 QGridLayout* Layout = nullptr ;
@@ -299,7 +299,11 @@ class DockContainerWidgetPrivate
299299 VisibleDockAreaCount = 0 ;
300300 for (auto DockArea : DockAreas)
301301 {
302- VisibleDockAreaCount += DockArea->isHidden () ? 0 : 1 ;
302+ if (!DockArea)
303+ {
304+ continue ;
305+ }
306+ VisibleDockAreaCount += (DockArea->isHidden () ? 0 : 1 );
303307 }
304308 }
305309
@@ -924,7 +928,10 @@ void DockContainerWidgetPrivate::addDockAreasToList(const QList<CDockAreaWidget*
924928// ============================================================================
925929void DockContainerWidgetPrivate::appendDockAreas (const QList<CDockAreaWidget*> NewDockAreas)
926930{
927- DockAreas.append (NewDockAreas);
931+ for (auto *newDockArea : NewDockAreas)
932+ {
933+ DockAreas.append (newDockArea);
934+ }
928935 for (auto DockArea : NewDockAreas)
929936 {
930937 QObject::connect (DockArea,
@@ -1641,7 +1648,7 @@ CDockAreaWidget* CDockContainerWidget::dockAreaAt(const QPoint& GlobalPos) const
16411648{
16421649 for (const auto & DockArea : d->DockAreas )
16431650 {
1644- if (DockArea->isVisible () && DockArea->rect ().contains (DockArea->mapFromGlobal (GlobalPos)))
1651+ if (DockArea && DockArea ->isVisible () && DockArea->rect ().contains (DockArea->mapFromGlobal (GlobalPos)))
16451652 {
16461653 return DockArea;
16471654 }
@@ -1678,7 +1685,7 @@ int CDockContainerWidget::visibleDockAreaCount() const
16781685 int Result = 0 ;
16791686 for (auto DockArea : d->DockAreas )
16801687 {
1681- Result += DockArea->isHidden () ? 0 : 1 ;
1688+ Result += (! DockArea || DockArea ->isHidden () ) ? 0 : 1 ;
16821689 }
16831690
16841691 return Result;
@@ -1802,7 +1809,7 @@ QList<CDockAreaWidget*> CDockContainerWidget::openedDockAreas() const
18021809 QList<CDockAreaWidget*> Result;
18031810 for (auto DockArea : d->DockAreas )
18041811 {
1805- if (!DockArea->isHidden ())
1812+ if (DockArea && !DockArea->isHidden ())
18061813 {
18071814 Result.append (DockArea);
18081815 }
@@ -1818,7 +1825,7 @@ QList<CDockWidget*> CDockContainerWidget::openedDockWidgets() const
18181825 QList<CDockWidget*> DockWidgetList;
18191826 for (auto DockArea : d->DockAreas )
18201827 {
1821- if (!DockArea->isHidden ())
1828+ if (DockArea && !DockArea->isHidden ())
18221829 {
18231830 DockWidgetList.append (DockArea->openedDockWidgets ());
18241831 }
@@ -1833,7 +1840,7 @@ bool CDockContainerWidget::hasOpenDockAreas() const
18331840{
18341841 for (auto DockArea : d->DockAreas )
18351842 {
1836- if (!DockArea->isHidden ())
1843+ if (DockArea && !DockArea->isHidden ())
18371844 {
18381845 return true ;
18391846 }
@@ -2058,6 +2065,10 @@ QList<CDockWidget*> CDockContainerWidget::dockWidgets() const
20582065 QList<CDockWidget*> Result;
20592066 for (const auto DockArea : d->DockAreas )
20602067 {
2068+ if (!DockArea)
2069+ {
2070+ continue ;
2071+ }
20612072 Result.append (DockArea->dockWidgets ());
20622073 }
20632074
@@ -2090,6 +2101,10 @@ CDockWidget::DockWidgetFeatures CDockContainerWidget::features() const
20902101 CDockWidget::DockWidgetFeatures Features (CDockWidget::AllDockWidgetFeatures);
20912102 for (const auto DockArea : d->DockAreas )
20922103 {
2104+ if (!DockArea)
2105+ {
2106+ continue ;
2107+ }
20932108 Features &= DockArea->features ();
20942109 }
20952110
@@ -2109,7 +2124,7 @@ void CDockContainerWidget::closeOtherAreas(CDockAreaWidget* KeepOpenArea)
21092124{
21102125 for (const auto DockArea : d->DockAreas )
21112126 {
2112- if (DockArea == KeepOpenArea)
2127+ if (!DockArea || DockArea == KeepOpenArea)
21132128 {
21142129 continue ;
21152130 }
0 commit comments