@@ -300,16 +300,20 @@ void CFloatingDockContainer::moveEvent(QMoveEvent *event)
300300// ============================================================================
301301void 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// ============================================================================
310314void 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+
411430void CFloatingDockContainer::onDockAreasAddedOrRemoved ()
412431{
413432 qDebug () << " CFloatingDockContainer::onDockAreasAddedOrRemoved()" ;
0 commit comments