diff options
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbdrag.cpp')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbdrag.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp index dce0cccf87..999ae16897 100644 --- a/src/plugins/platforms/xcb/qxcbdrag.cpp +++ b/src/plugins/platforms/xcb/qxcbdrag.cpp @@ -155,6 +155,8 @@ void QXcbDrag::init() dropped = false; canceled = false; + + source_sameanswer = QRect(); } bool QXcbDrag::eventFilter(QObject *o, QEvent *e) @@ -471,6 +473,17 @@ void QXcbDrag::move(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardMod else xcb_send_event(xcb_connection(), false, proxy_target, XCB_EVENT_MASK_NO_EVENT, (const char *)&move); } + + static const bool isUnity = qgetenv("XDG_CURRENT_DESKTOP").toLower() == "unity"; + if (isUnity && xdndCollectionWindow == XCB_NONE) { + QString name = QXcbWindow::windowTitle(connection(), target); + if (name == QStringLiteral("XdndCollectionWindowImp")) + xdndCollectionWindow = target; + } + if (target == xdndCollectionWindow) { + setCanDrop(false); + updateCursor(Qt::IgnoreAction); + } } void QXcbDrag::drop(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardModifiers mods) |