diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-06-01 17:05:04 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2018-06-01 15:04:56 +0000 |
commit | 6a2f18cc44cf055048fe6731fd8cbd7dee7349eb (patch) | |
tree | c4d15b70b2217f82495f4edc6b8126cca0852ebc | |
parent | 9851f6cada7228aea14e356e0353f896973fd1bb (diff) |
Fix corrupted blank cursor during drag-adjusting floats
This works around QTBUG-61678, where the blank cursor gets corrupted
in multimonitor setups. Use a custom empty bitmap cursor instead.
Change-Id: I629265663ec5a6074e5e58ab978dc607fae735c8
Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r-- | src/Authoring/Studio/Palettes/Inspector/MouseHelper.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Palettes/Inspector/MouseHelper.cpp b/src/Authoring/Studio/Palettes/Inspector/MouseHelper.cpp index 947f957e..881ea489 100644 --- a/src/Authoring/Studio/Palettes/Inspector/MouseHelper.cpp +++ b/src/Authoring/Studio/Palettes/Inspector/MouseHelper.cpp @@ -36,6 +36,18 @@ #include <QtWidgets/qmainwindow.h> #include <QtCore/qtimer.h> #include <QtGui/qevent.h> +#include <QtGui/qbitmap.h> + +static void setBlankCursor() +{ + // Qt::BlankCursor gets corrupted in some situations, so use custom bitmap (QTBUG-61678) + static QBitmap *zeroBitmap = nullptr; + if (!zeroBitmap) { + zeroBitmap = new QBitmap(32, 32); + zeroBitmap->clear(); + } + QGuiApplication::setOverrideCursor(QCursor(*zeroBitmap, *zeroBitmap)); +} MouseHelper::MouseHelper(QObject *parent) : QObject(parent) @@ -51,7 +63,7 @@ MouseHelper::MouseHelper(QObject *parent) void MouseHelper::startUnboundedDrag() { m_dragState = StateDragging; - qApp->setOverrideCursor(QCursor(Qt::BlankCursor)); + setBlankCursor(); m_startPos = QCursor::pos(); QWindow *window = g_StudioApp.m_pMainWnd->windowHandle(); @@ -146,4 +158,3 @@ bool MouseHelper::eventFilter(QObject *obj, QEvent *event) } return false; } - |