Skip to content

Commit 641946b

Browse files
committed
Add CDockManager::removeDockWidget()
1 parent 27dd7a1 commit 641946b

File tree

5 files changed

+29
-4
lines changed

5 files changed

+29
-4
lines changed

src/DockAreaWidget.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,14 +414,15 @@ void CDockAreaWidget::removeDockWidget(CDockWidget* DockWidget)
414414
auto TabWidget = DockWidget->tabWidget();
415415
TabWidget->hide();
416416
d->tabBar()->removeTab(TabWidget);
417+
CDockContainerWidget* DockContainer = dockContainer();
417418
if (NextOpenDockWidget)
418419
{
419420
setCurrentDockWidget(NextOpenDockWidget);
420421
}
421-
else if (d->ContentsLayout->isEmpty())
422+
else if (d->ContentsLayout->isEmpty() && DockContainer->dockAreaCount() > 1)
422423
{
423424
qDebug() << "Dock Area empty";
424-
dockContainer()->removeDockArea(this);
425+
DockContainer->removeDockArea(this);
425426
this->deleteLater();
426427
}
427428
else
@@ -434,14 +435,13 @@ void CDockAreaWidget::removeDockWidget(CDockWidget* DockWidget)
434435

435436
d->updateCloseButtonState();
436437
updateTitleBarVisibility();
437-
auto TopLevelDockWidget = dockContainer()->topLevelDockWidget();
438+
auto TopLevelDockWidget = DockContainer->topLevelDockWidget();
438439
if (TopLevelDockWidget)
439440
{
440441
TopLevelDockWidget->emitTopLevelChanged(true);
441442
}
442443

443444
#if (ADS_DEBUG_LEVEL > 0)
444-
CDockContainerWidget* DockContainer = dockContainer();
445445
DockContainer->dumpLayout();
446446
#endif
447447
}

src/DockContainerWidget.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,15 @@ CDockAreaWidget* CDockContainerWidget::addDockWidget(DockWidgetArea area, CDockW
998998
}
999999
}
10001000

1001+
//============================================================================
1002+
void CDockContainerWidget::removeDockWidget(CDockWidget* Dockwidget)
1003+
{
1004+
CDockAreaWidget* Area = Dockwidget->dockAreaWidget();
1005+
if (Area)
1006+
{
1007+
Area->removeDockWidget(Dockwidget);
1008+
}
1009+
}
10011010

10021011
//============================================================================
10031012
unsigned int CDockContainerWidget::zOrderIndex() const

src/DockContainerWidget.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ class ADS_EXPORT CDockContainerWidget : public QFrame
166166
CDockAreaWidget* addDockWidget(DockWidgetArea area, CDockWidget* Dockwidget,
167167
CDockAreaWidget* DockAreaWidget = nullptr);
168168

169+
/**
170+
* Removes dockwidget
171+
*/
172+
void removeDockWidget(CDockWidget* Dockwidget);
173+
169174
/**
170175
* Returns the current zOrderIndex
171176
*/

src/DockManager.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -586,6 +586,12 @@ CDockWidget* CDockManager::findDockWidget(const QString& ObjectName) const
586586
return d->DockWidgetsMap.value(ObjectName, nullptr);
587587
}
588588

589+
//============================================================================
590+
void CDockManager::removeDockWidget(CDockWidget* Dockwidget)
591+
{
592+
d->DockWidgetsMap.remove(Dockwidget->objectName());
593+
CDockContainerWidget::removeDockWidget(Dockwidget);
594+
}
589595

590596
//============================================================================
591597
QMap<QString, CDockWidget*> CDockManager::dockWidgetsMap() const

src/DockManager.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,11 @@ class ADS_EXPORT CDockManager : public CDockContainerWidget
192192
*/
193193
CDockWidget* findDockWidget(const QString& ObjectName) const;
194194

195+
/**
196+
* Remove the given Dock from the dock manager
197+
*/
198+
void removeDockWidget(CDockWidget* Dockwidget);
199+
195200
/**
196201
* This function returns a readable reference to the internal dock
197202
* widgets map so that it is possible to iterate over all dock widgets

0 commit comments

Comments
 (0)