summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2018-06-01 17:05:04 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2018-06-01 15:04:56 +0000
commit6a2f18cc44cf055048fe6731fd8cbd7dee7349eb (patch)
treec4d15b70b2217f82495f4edc6b8126cca0852ebc
parent9851f6cada7228aea14e356e0353f896973fd1bb (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.cpp15
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;
}
-