Skip to content

Commit f5b3c05

Browse files
Merge pull request #8 from Opostol/master
DockWidgetClosable now prevents Floating Dock Windows from closing
2 parents 9d00a27 + 5b3841a commit f5b3c05

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

src/FloatingDockContainer.cpp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,16 +300,20 @@ void CFloatingDockContainer::moveEvent(QMoveEvent *event)
300300
//============================================================================
301301
void CFloatingDockContainer::closeEvent(QCloseEvent *event)
302302
{
303-
std::cout << "closeEvent" << std::endl;
303+
qDebug() << "CFloatingDockContainer closeEvent";
304304
d->setDraggingActive(false);
305-
QWidget::closeEvent(event);
305+
306+
if (isClosable())
307+
QWidget::closeEvent(event);
308+
else
309+
event->ignore();
306310
}
307311

308312

309313
//============================================================================
310314
void CFloatingDockContainer::hideEvent(QHideEvent *event)
311315
{
312-
std::cout << "hideEvent" << std::endl;
316+
qDebug() << "CFloatingDockContainer hideEvent";
313317
QWidget::hideEvent(event);
314318
auto OpenDockAreas = d->DockContainer->openedDockAreas();
315319
for (auto DockArea : OpenDockAreas)
@@ -408,6 +412,21 @@ void CFloatingDockContainer::moveFloating()
408412

409413

410414
//============================================================================
415+
bool CFloatingDockContainer::isClosable()
416+
{
417+
auto OpenDockAreas = d->DockContainer->openedDockAreas();
418+
for (auto DockArea : OpenDockAreas)
419+
{
420+
auto OpenDockWidgets = DockArea->openedDockWidgets();
421+
for (auto DockWidget : OpenDockWidgets)
422+
{
423+
if (!(DockWidget->features() & CDockWidget::DockWidgetClosable))
424+
return false;
425+
}
426+
}
427+
return true;
428+
}
429+
411430
void CFloatingDockContainer::onDockAreasAddedOrRemoved()
412431
{
413432
qDebug() << "CFloatingDockContainer::onDockAreasAddedOrRemoved()";

src/FloatingDockContainer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class ADS_EXPORT CFloatingDockContainer : public QWidget
5555
FloatingDockContainerPrivate* d; ///< private data (pimpl)
5656
friend struct FloatingDockContainerPrivate;
5757

58+
bool isClosable();
59+
5860
private slots:
5961
void onDockAreasAddedOrRemoved();
6062
void onDockAreaCurrentChanged(int Index);

0 commit comments

Comments
 (0)