Skip to content

Commit 412f13e

Browse files
author
Uwe Kindler
committed
Implemented fix to prevent display of drop overlays and overlay icons when resizing a floating widget
1 parent 11a3080 commit 412f13e

File tree

1 file changed

+28
-11
lines changed

1 file changed

+28
-11
lines changed

src/FloatingDockContainer.cpp

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ struct FloatingDockContainerPrivate
5959
unsigned int zOrderIndex = ++zOrderCounter;
6060
QPointer<CDockManager> DockManager;
6161
bool DraggingActive = false;
62+
bool NonClientAreaMouseButtonPress = false;
6263
QPoint DragStartMousePosition;
6364
CDockContainerWidget* DropContainer = nullptr;
6465
CDockAreaWidget* SingleDockArea = nullptr;
@@ -92,19 +93,24 @@ void FloatingDockContainerPrivate::titleMouseReleaseEvent()
9293
return;
9394
}
9495

95-
// Resize the floating widget to the size of the highlighted drop area
96-
// rectangle
97-
QRect Rect = DockManager->containerOverlay()->dropOverlayRect();
98-
if (!Rect.isValid())
96+
if (DockManager->dockAreaOverlay()->dropAreaUnderCursor() != InvalidDockWidgetArea
97+
|| DockManager->containerOverlay()->dropAreaUnderCursor() != InvalidDockWidgetArea)
9998
{
100-
Rect = DockManager->dockAreaOverlay()->rect();
101-
}
99+
// Resize the floating widget to the size of the highlighted drop area
100+
// rectangle
101+
QRect Rect = DockManager->containerOverlay()->dropOverlayRect();
102+
if (!Rect.isValid())
103+
{
104+
Rect = DockManager->dockAreaOverlay()->rect();
105+
}
102106

103-
if (Rect.isValid())
104-
{
105-
_this->resize(Rect.size());
107+
if (Rect.isValid())
108+
{
109+
_this->resize(Rect.size());
110+
}
111+
DropContainer->dropFloatingWidget(_this, QCursor::pos());
106112
}
107-
DropContainer->dropFloatingWidget(_this, QCursor::pos());
113+
108114
DockManager->containerOverlay()->hideOverlay();
109115
DockManager->dockAreaOverlay()->hideOverlay();
110116
}
@@ -192,6 +198,10 @@ void FloatingDockContainerPrivate::updateDropOverlays(const QPoint& GlobalPos)
192198
void FloatingDockContainerPrivate::setDraggingActive(bool Active)
193199
{
194200
DraggingActive = Active;
201+
if (!DraggingActive)
202+
{
203+
NonClientAreaMouseButtonPress = false;
204+
}
195205
}
196206

197207

@@ -331,12 +341,13 @@ void CFloatingDockContainer::showEvent(QShowEvent *event)
331341
//============================================================================
332342
bool CFloatingDockContainer::event(QEvent *e)
333343
{
334-
if ((e->type() == QEvent::NonClientAreaMouseButtonPress))
344+
if (e->type() == QEvent::NonClientAreaMouseButtonPress)
335345
{
336346
if (QGuiApplication::mouseButtons() == Qt::LeftButton)
337347
{
338348
qDebug() << "FloatingWidget::event Event::NonClientAreaMouseButtonPress" << e->type();
339349
d->setDraggingActive(true);
350+
d->NonClientAreaMouseButtonPress = true;
340351
}
341352
}
342353
else if (e->type() == QEvent::NonClientAreaMouseButtonDblClick)
@@ -349,6 +360,12 @@ bool CFloatingDockContainer::event(QEvent *e)
349360
qDebug() << "FloatingWidget::event QEvent::NonClientAreaMouseButtonRelease";
350361
d->titleMouseReleaseEvent();
351362
}
363+
else if (d->NonClientAreaMouseButtonPress && (e->type() == QEvent::Resize))
364+
{
365+
// If user resizes the floating widget, we do not want to show any
366+
// drop overlays or drop overlay icons
367+
d->setDraggingActive(false);
368+
}
352369

353370
return QWidget::event(e);
354371
}

0 commit comments

Comments
 (0)