@@ -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)
192198void 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// ============================================================================
332342bool 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