@@ -300,16 +300,20 @@ void CFloatingDockContainer::moveEvent(QMoveEvent *event)
300
300
// ============================================================================
301
301
void CFloatingDockContainer::closeEvent (QCloseEvent *event)
302
302
{
303
- std::cout << " closeEvent" << std::endl ;
303
+ qDebug () << " CFloatingDockContainer closeEvent" ;
304
304
d->setDraggingActive (false );
305
- QWidget::closeEvent (event);
305
+
306
+ if (isClosable ())
307
+ QWidget::closeEvent (event);
308
+ else
309
+ event->ignore ();
306
310
}
307
311
308
312
309
313
// ============================================================================
310
314
void CFloatingDockContainer::hideEvent (QHideEvent *event)
311
315
{
312
- std::cout << " hideEvent" << std::endl ;
316
+ qDebug () << " CFloatingDockContainer hideEvent" ;
313
317
QWidget::hideEvent (event);
314
318
auto OpenDockAreas = d->DockContainer ->openedDockAreas ();
315
319
for (auto DockArea : OpenDockAreas)
@@ -408,6 +412,21 @@ void CFloatingDockContainer::moveFloating()
408
412
409
413
410
414
// ============================================================================
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
+
411
430
void CFloatingDockContainer::onDockAreasAddedOrRemoved ()
412
431
{
413
432
qDebug () << " CFloatingDockContainer::onDockAreasAddedOrRemoved()" ;
0 commit comments