Skip to content

Commit 378c647

Browse files
Fixed #481 issue Undocking an autohide dock widget does not close the AutoHideTab from the sidebar
1 parent bbfe99c commit 378c647

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

src/DockAreaTitleBar.cpp

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,16 @@ IFloatingWidget* DockAreaTitleBarPrivate::makeAreaFloating(const QPoint& Offset,
262262
{
263263
QSize Size = DockArea->size();
264264
this->DragState = DragState;
265-
bool OpaqueUndocking = CDockManager::testConfigFlag(CDockManager::OpaqueUndocking) ||
266-
(DraggingFloatingWidget != DragState);
265+
bool CreateFloatingDockContainer = CDockManager::testConfigFlag(
266+
CDockManager::OpaqueUndocking) || (DraggingFloatingWidget != DragState);
267267
CFloatingDockContainer* FloatingDockContainer = nullptr;
268268
IFloatingWidget* FloatingWidget;
269-
if (OpaqueUndocking)
269+
if (CreateFloatingDockContainer)
270270
{
271+
if (DockArea->autoHideDockContainer())
272+
{
273+
DockArea->autoHideDockContainer()->cleanupAndDelete();
274+
}
271275
FloatingWidget = FloatingDockContainer = new CFloatingDockContainer(DockArea);
272276
}
273277
else
@@ -297,7 +301,7 @@ IFloatingWidget* DockAreaTitleBarPrivate::makeAreaFloating(const QPoint& Offset,
297301
//============================================================================
298302
void DockAreaTitleBarPrivate::startFloating(const QPoint& Offset)
299303
{
300-
if (DockArea->autoHideDockContainer() != nullptr)
304+
if (DockArea->autoHideDockContainer())
301305
{
302306
DockArea->autoHideDockContainer()->hide();
303307
}
@@ -428,11 +432,6 @@ void CDockAreaTitleBar::onUndockButtonClicked()
428432
{
429433
if (d->DockArea->features().testFlag(CDockWidget::DockWidgetFloatable))
430434
{
431-
if (d->DockArea->autoHideDockContainer())
432-
{
433-
d->DockArea->autoHideDockContainer()->cleanupAndDelete();
434-
}
435-
436435
d->makeAreaFloating(mapFromGlobal(QCursor::pos()), DraggingInactive);
437436
}
438437
}
@@ -590,6 +589,10 @@ void CDockAreaTitleBar::mouseReleaseEvent(QMouseEvent* ev)
590589
if (ev->button() == Qt::LeftButton)
591590
{
592591
ADS_PRINT("CDockAreaTitleBar::mouseReleaseEvent");
592+
if (CDockManager::testConfigFlag(CDockManager::OpaqueUndocking))
593+
{
594+
releaseMouse();
595+
}
593596
ev->accept();
594597
auto CurrentDragState = d->DragState;
595598
d->DragStartMousePos = QPoint();
@@ -650,6 +653,10 @@ void CDockAreaTitleBar::mouseMoveEvent(QMouseEvent* ev)
650653
d->startFloating(d->DragStartMousePos);
651654
auto Overlay = d->DockArea->dockManager()->containerOverlay();
652655
Overlay->setAllowedAreas(OuterDockAreas);
656+
if (CDockManager::testConfigFlag(CDockManager::OpaqueUndocking))
657+
{
658+
grabMouse();
659+
}
653660
}
654661

655662
return;
@@ -671,10 +678,6 @@ void CDockAreaTitleBar::mouseDoubleClickEvent(QMouseEvent *event)
671678
{
672679
return;
673680
}
674-
if (d->DockArea->autoHideDockContainer())
675-
{
676-
d->DockArea->autoHideDockContainer()->cleanupAndDelete();
677-
}
678681

679682
d->makeAreaFloating(event->pos(), DraggingInactive);
680683
}

src/DockWidgetTab.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,10 @@ void CDockWidgetTab::mouseReleaseEvent(QMouseEvent* ev)
392392
{
393393
if (ev->button() == Qt::LeftButton)
394394
{
395+
if (CDockManager::testConfigFlag(CDockManager::OpaqueUndocking))
396+
{
397+
releaseMouse();
398+
}
395399
auto CurrentDragState = d->DragState;
396400
d->GlobalDragStartMousePosition = QPoint();
397401
d->DragStartMousePosition = QPoint();
@@ -490,6 +494,10 @@ void CDockWidgetTab::mouseMoveEvent(QMouseEvent* ev)
490494
parentWidget()->layout()->update();
491495
}
492496
d->startFloating();
497+
if (CDockManager::testConfigFlag(CDockManager::OpaqueUndocking))
498+
{
499+
grabMouse();
500+
}
493501
}
494502
return;
495503
}

src/ads_globals.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
#include <QStyle>
3939
#include <QMouseEvent>
4040

41+
#include <iostream>
42+
4143
#ifdef Q_OS_LINUX
4244
#include <xcb/xcb.h>
4345
#endif

0 commit comments

Comments
 (0)