QDockWidget: Don't use QWidgetResizeHandler on Windows

QWidgetResizeHandler sets its own mouse cursor, which can cause the
wrong icon being shown in corner cases (e.g. floating dock with custom
title bar and windows container).

Windows handles resizing of toplevel windows on platform level. A
QWidgetResizeHandler is not necessary.

=> Do not create one on Windows.

Resizing of floating dock widgets is tested in
tst_QDockWidget::dockPermissions(), floatingTabs(), hideAndShow().
=> No separate autotest needed.

Fixes: QTBUG-102196
Pick-to: 6.5 6.2
Change-Id: I20ab203e6b7ecc1dbda0524c7ff9bef271a7c04f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Timothée Keller <timothee.keller@qt.io>
(cherry picked from commit 975c0bdf732ea7c5f7632913a27a1b6ae5cd5b26)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Axel Spoerl 2023-09-26 14:28:57 +02:00 committed by Qt Cherry-pick Bot
parent 114c8eb7a5
commit c224c98b81

View File

@ -892,11 +892,15 @@ Qt::DockWidgetArea QDockWidgetPrivate::toDockWidgetArea(QInternal::DockPosition
void QDockWidgetPrivate::setResizerActive(bool active) void QDockWidgetPrivate::setResizerActive(bool active)
{ {
#ifdef Q_OS_WINDOWS
Q_UNUSED(active);
#else
Q_Q(QDockWidget); Q_Q(QDockWidget);
if (active && !resizer) if (active && !resizer)
resizer = new QWidgetResizeHandler(q); resizer = new QWidgetResizeHandler(q);
if (resizer) if (resizer)
resizer->setEnabled(active); resizer->setEnabled(active);
#endif
} }
bool QDockWidgetPrivate::isAnimating() const bool QDockWidgetPrivate::isAnimating() const