mirror of
https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
synced 2025-02-03 09:49:13 +08:00
Implemented fix to prevent display of drop overlays and overlay icons when resizing a floating widget
This commit is contained in:
parent
11a30806f6
commit
412f13e1c4
@ -59,6 +59,7 @@ struct FloatingDockContainerPrivate
|
|||||||
unsigned int zOrderIndex = ++zOrderCounter;
|
unsigned int zOrderIndex = ++zOrderCounter;
|
||||||
QPointer<CDockManager> DockManager;
|
QPointer<CDockManager> DockManager;
|
||||||
bool DraggingActive = false;
|
bool DraggingActive = false;
|
||||||
|
bool NonClientAreaMouseButtonPress = false;
|
||||||
QPoint DragStartMousePosition;
|
QPoint DragStartMousePosition;
|
||||||
CDockContainerWidget* DropContainer = nullptr;
|
CDockContainerWidget* DropContainer = nullptr;
|
||||||
CDockAreaWidget* SingleDockArea = nullptr;
|
CDockAreaWidget* SingleDockArea = nullptr;
|
||||||
@ -92,6 +93,9 @@ void FloatingDockContainerPrivate::titleMouseReleaseEvent()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (DockManager->dockAreaOverlay()->dropAreaUnderCursor() != InvalidDockWidgetArea
|
||||||
|
|| DockManager->containerOverlay()->dropAreaUnderCursor() != InvalidDockWidgetArea)
|
||||||
|
{
|
||||||
// Resize the floating widget to the size of the highlighted drop area
|
// Resize the floating widget to the size of the highlighted drop area
|
||||||
// rectangle
|
// rectangle
|
||||||
QRect Rect = DockManager->containerOverlay()->dropOverlayRect();
|
QRect Rect = DockManager->containerOverlay()->dropOverlayRect();
|
||||||
@ -105,6 +109,8 @@ void FloatingDockContainerPrivate::titleMouseReleaseEvent()
|
|||||||
_this->resize(Rect.size());
|
_this->resize(Rect.size());
|
||||||
}
|
}
|
||||||
DropContainer->dropFloatingWidget(_this, QCursor::pos());
|
DropContainer->dropFloatingWidget(_this, QCursor::pos());
|
||||||
|
}
|
||||||
|
|
||||||
DockManager->containerOverlay()->hideOverlay();
|
DockManager->containerOverlay()->hideOverlay();
|
||||||
DockManager->dockAreaOverlay()->hideOverlay();
|
DockManager->dockAreaOverlay()->hideOverlay();
|
||||||
}
|
}
|
||||||
@ -192,6 +198,10 @@ void FloatingDockContainerPrivate::updateDropOverlays(const QPoint& GlobalPos)
|
|||||||
void FloatingDockContainerPrivate::setDraggingActive(bool Active)
|
void FloatingDockContainerPrivate::setDraggingActive(bool Active)
|
||||||
{
|
{
|
||||||
DraggingActive = Active;
|
DraggingActive = Active;
|
||||||
|
if (!DraggingActive)
|
||||||
|
{
|
||||||
|
NonClientAreaMouseButtonPress = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -331,12 +341,13 @@ void CFloatingDockContainer::showEvent(QShowEvent *event)
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
bool CFloatingDockContainer::event(QEvent *e)
|
bool CFloatingDockContainer::event(QEvent *e)
|
||||||
{
|
{
|
||||||
if ((e->type() == QEvent::NonClientAreaMouseButtonPress))
|
if (e->type() == QEvent::NonClientAreaMouseButtonPress)
|
||||||
{
|
{
|
||||||
if (QGuiApplication::mouseButtons() == Qt::LeftButton)
|
if (QGuiApplication::mouseButtons() == Qt::LeftButton)
|
||||||
{
|
{
|
||||||
qDebug() << "FloatingWidget::event Event::NonClientAreaMouseButtonPress" << e->type();
|
qDebug() << "FloatingWidget::event Event::NonClientAreaMouseButtonPress" << e->type();
|
||||||
d->setDraggingActive(true);
|
d->setDraggingActive(true);
|
||||||
|
d->NonClientAreaMouseButtonPress = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (e->type() == QEvent::NonClientAreaMouseButtonDblClick)
|
else if (e->type() == QEvent::NonClientAreaMouseButtonDblClick)
|
||||||
@ -349,6 +360,12 @@ bool CFloatingDockContainer::event(QEvent *e)
|
|||||||
qDebug() << "FloatingWidget::event QEvent::NonClientAreaMouseButtonRelease";
|
qDebug() << "FloatingWidget::event QEvent::NonClientAreaMouseButtonRelease";
|
||||||
d->titleMouseReleaseEvent();
|
d->titleMouseReleaseEvent();
|
||||||
}
|
}
|
||||||
|
else if (d->NonClientAreaMouseButtonPress && (e->type() == QEvent::Resize))
|
||||||
|
{
|
||||||
|
// If user resizes the floating widget, we do not want to show any
|
||||||
|
// drop overlays or drop overlay icons
|
||||||
|
d->setDraggingActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
return QWidget::event(e);
|
return QWidget::event(e);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user