QDockWidget: Make floating docks respect DockWidgetMovable feature
Currently, even if DockWidgetFeature::DockWidgetMovable is unset (i.e. moving docks to different dock areas is disabled), it is still possible to move a dock to a different dock area after it is made floating (i.e. the DockWidgetMovable setting is ignored). This change prevents this unexpected/inconsistent behavior. Fixes: QTBUG-71703 Change-Id: Iaecc293a5ba12dd5b53f5f0bd0cfe77ae54ab393 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>bb10
parent
e6d1071dd3
commit
3364be7859
|
|
@ -922,7 +922,8 @@ bool QDockWidgetPrivate::mousePressEvent(QMouseEvent *event)
|
|||
initDrag(event->pos(), false);
|
||||
|
||||
if (state)
|
||||
state->ctrlDrag = hasFeature(this, QDockWidget::DockWidgetFloatable) && event->modifiers() & Qt::ControlModifier;
|
||||
state->ctrlDrag = (hasFeature(this, QDockWidget::DockWidgetFloatable) && event->modifiers() & Qt::ControlModifier) ||
|
||||
(!hasFeature(this, QDockWidget::DockWidgetMovable) && q->isFloating());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1044,7 +1045,8 @@ void QDockWidgetPrivate::nonClientAreaMouseEvent(QMouseEvent *event)
|
|||
initDrag(event->pos(), true);
|
||||
if (state == 0)
|
||||
break;
|
||||
state->ctrlDrag = event->modifiers() & Qt::ControlModifier;
|
||||
state->ctrlDrag = (event->modifiers() & Qt::ControlModifier) ||
|
||||
(!hasFeature(this, QDockWidget::DockWidgetMovable) && q->isFloating());
|
||||
startDrag();
|
||||
break;
|
||||
case QEvent::NonClientAreaMouseMove:
|
||||
|
|
|
|||
Loading…
Reference in New Issue