@@ -1,18 +1,8 @@
|
|||||||
diff --git a/src/client/configure.json b/src/client/configure.json
|
diff --git a/src/client/configure.json b/src/client/configure.json
|
||||||
index 2f424580..29222357 100644
|
index 73f233622..6247f85e6 100644
|
||||||
--- a/src/client/configure.json
|
--- a/src/client/configure.json
|
||||||
+++ b/src/client/configure.json
|
+++ b/src/client/configure.json
|
||||||
@@ -149,8 +149,7 @@
|
@@ -167,7 +167,8 @@
|
||||||
"#endif"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
- "libs": "-ldrm",
|
|
||||||
- "use": "egl"
|
|
||||||
+ "use": "drm egl"
|
|
||||||
},
|
|
||||||
"vulkan-server-buffer": {
|
|
||||||
"label": "Vulkan Buffer Sharing",
|
|
||||||
@@ -168,7 +167,8 @@
|
|
||||||
"exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
|
"exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
|
||||||
"return 0;"
|
"return 0;"
|
||||||
]
|
]
|
||||||
@@ -22,7 +12,7 @@ index 2f424580..29222357 100644
|
|||||||
},
|
},
|
||||||
"egl_1_5-wayland": {
|
"egl_1_5-wayland": {
|
||||||
"label": "EGL 1.5 with Wayland Platform",
|
"label": "EGL 1.5 with Wayland Platform",
|
||||||
@@ -183,7 +183,7 @@
|
@@ -182,7 +183,7 @@
|
||||||
"eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);"
|
"eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -32,7 +22,7 @@ index 2f424580..29222357 100644
|
|||||||
},
|
},
|
||||||
|
|
||||||
diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp
|
diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp
|
||||||
index 966096a8..36609c08 100644
|
index 966096a88..36609c08f 100644
|
||||||
--- a/src/client/global/qwaylandclientextension.cpp
|
--- a/src/client/global/qwaylandclientextension.cpp
|
||||||
+++ b/src/client/global/qwaylandclientextension.cpp
|
+++ b/src/client/global/qwaylandclientextension.cpp
|
||||||
@@ -74,7 +74,10 @@ void QWaylandClientExtensionPrivate::handleRegistryGlobal(void *data, ::wl_regis
|
@@ -74,7 +74,10 @@ void QWaylandClientExtensionPrivate::handleRegistryGlobal(void *data, ::wl_regis
|
||||||
@@ -62,7 +52,7 @@ index 966096a8..36609c08 100644
|
|||||||
{
|
{
|
||||||
Q_D(const QWaylandClientExtension);
|
Q_D(const QWaylandClientExtension);
|
||||||
diff --git a/src/client/global/qwaylandclientextension.h b/src/client/global/qwaylandclientextension.h
|
diff --git a/src/client/global/qwaylandclientextension.h b/src/client/global/qwaylandclientextension.h
|
||||||
index 98272e57..5bd28398 100644
|
index 98272e571..5bd283985 100644
|
||||||
--- a/src/client/global/qwaylandclientextension.h
|
--- a/src/client/global/qwaylandclientextension.h
|
||||||
+++ b/src/client/global/qwaylandclientextension.h
|
+++ b/src/client/global/qwaylandclientextension.h
|
||||||
@@ -63,6 +63,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtension : public QObject
|
@@ -63,6 +63,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtension : public QObject
|
||||||
@@ -74,7 +64,7 @@ index 98272e57..5bd28398 100644
|
|||||||
QtWaylandClient::QWaylandIntegration *integration() const;
|
QtWaylandClient::QWaylandIntegration *integration() const;
|
||||||
int version() const;
|
int version() const;
|
||||||
diff --git a/src/client/global/qwaylandclientextension_p.h b/src/client/global/qwaylandclientextension_p.h
|
diff --git a/src/client/global/qwaylandclientextension_p.h b/src/client/global/qwaylandclientextension_p.h
|
||||||
index 69cc46a0..9091efbe 100644
|
index 69cc46a0a..9091efbe5 100644
|
||||||
--- a/src/client/global/qwaylandclientextension_p.h
|
--- a/src/client/global/qwaylandclientextension_p.h
|
||||||
+++ b/src/client/global/qwaylandclientextension_p.h
|
+++ b/src/client/global/qwaylandclientextension_p.h
|
||||||
@@ -68,6 +68,7 @@ public:
|
@@ -68,6 +68,7 @@ public:
|
||||||
@@ -86,7 +76,7 @@ index 69cc46a0..9091efbe 100644
|
|||||||
|
|
||||||
class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate
|
class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate
|
||||||
diff --git a/src/client/qwaylandabstractdecoration.cpp b/src/client/qwaylandabstractdecoration.cpp
|
diff --git a/src/client/qwaylandabstractdecoration.cpp b/src/client/qwaylandabstractdecoration.cpp
|
||||||
index b628930d..d15a7f9f 100644
|
index b628930df..d15a7f9fe 100644
|
||||||
--- a/src/client/qwaylandabstractdecoration.cpp
|
--- a/src/client/qwaylandabstractdecoration.cpp
|
||||||
+++ b/src/client/qwaylandabstractdecoration.cpp
|
+++ b/src/client/qwaylandabstractdecoration.cpp
|
||||||
@@ -122,7 +122,7 @@ const QImage &QWaylandAbstractDecoration::contentImage()
|
@@ -122,7 +122,7 @@ const QImage &QWaylandAbstractDecoration::contentImage()
|
||||||
@@ -98,92 +88,8 @@ index b628930d..d15a7f9f 100644
|
|||||||
const QSize imageSize = waylandWindow()->surfaceSize() * bufferScale;
|
const QSize imageSize = waylandWindow()->surfaceSize() * bufferScale;
|
||||||
d->m_decorationContentImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied);
|
d->m_decorationContentImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied);
|
||||||
// Only scale by buffer scale, not QT_SCALE_FACTOR etc.
|
// Only scale by buffer scale, not QT_SCALE_FACTOR etc.
|
||||||
diff --git a/src/client/qwaylandclipboard.cpp b/src/client/qwaylandclipboard.cpp
|
|
||||||
index 81f48e05..14561c77 100644
|
|
||||||
--- a/src/client/qwaylandclipboard.cpp
|
|
||||||
+++ b/src/client/qwaylandclipboard.cpp
|
|
||||||
@@ -54,10 +54,15 @@ namespace QtWaylandClient {
|
|
||||||
QWaylandClipboard::QWaylandClipboard(QWaylandDisplay *display)
|
|
||||||
: mDisplay(display)
|
|
||||||
{
|
|
||||||
+ m_clientClipboard[QClipboard::Clipboard] = nullptr;
|
|
||||||
+ m_clientClipboard[QClipboard::Selection] = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
QWaylandClipboard::~QWaylandClipboard()
|
|
||||||
{
|
|
||||||
+ if (m_clientClipboard[QClipboard::Clipboard] != m_clientClipboard[QClipboard::Selection])
|
|
||||||
+ delete m_clientClipboard[QClipboard::Clipboard];
|
|
||||||
+ delete m_clientClipboard[QClipboard::Selection];
|
|
||||||
}
|
|
||||||
|
|
||||||
QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode)
|
|
||||||
@@ -69,8 +74,8 @@ QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode)
|
|
||||||
switch (mode) {
|
|
||||||
case QClipboard::Clipboard:
|
|
||||||
if (auto *dataDevice = seat->dataDevice()) {
|
|
||||||
- if (auto *source = dataDevice->selectionSource())
|
|
||||||
- return source->mimeData();
|
|
||||||
+ if (dataDevice->selectionSource())
|
|
||||||
+ return m_clientClipboard[QClipboard::Clipboard];
|
|
||||||
if (auto *offer = dataDevice->selectionOffer())
|
|
||||||
return offer->mimeData();
|
|
||||||
}
|
|
||||||
@@ -78,8 +83,8 @@ QMimeData *QWaylandClipboard::mimeData(QClipboard::Mode mode)
|
|
||||||
case QClipboard::Selection:
|
|
||||||
#if QT_CONFIG(wayland_client_primary_selection)
|
|
||||||
if (auto *selectionDevice = seat->primarySelectionDevice()) {
|
|
||||||
- if (auto *source = selectionDevice->selectionSource())
|
|
||||||
- return source->mimeData();
|
|
||||||
+ if (selectionDevice->selectionSource())
|
|
||||||
+ return m_clientClipboard[QClipboard::Selection];
|
|
||||||
if (auto *offer = selectionDevice->selectionOffer())
|
|
||||||
return offer->mimeData();
|
|
||||||
}
|
|
||||||
@@ -104,17 +109,27 @@ void QWaylandClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
|
|
||||||
if (data && data->hasFormat(plain) && !data->hasFormat(utf8))
|
|
||||||
data->setData(utf8, data->data(plain));
|
|
||||||
|
|
||||||
+ if (m_clientClipboard[mode]) {
|
|
||||||
+ if (m_clientClipboard[QClipboard::Clipboard] != m_clientClipboard[QClipboard::Selection])
|
|
||||||
+ delete m_clientClipboard[mode];
|
|
||||||
+ m_clientClipboard[mode] = nullptr;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ m_clientClipboard[mode] = data;
|
|
||||||
+
|
|
||||||
switch (mode) {
|
|
||||||
case QClipboard::Clipboard:
|
|
||||||
if (auto *dataDevice = seat->dataDevice()) {
|
|
||||||
- dataDevice->setSelectionSource(data ? new QWaylandDataSource(mDisplay->dndSelectionHandler(), data) : nullptr);
|
|
||||||
+ dataDevice->setSelectionSource(data ? new QWaylandDataSource(mDisplay->dndSelectionHandler(),
|
|
||||||
+ m_clientClipboard[QClipboard::Clipboard]) : nullptr);
|
|
||||||
emitChanged(mode);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case QClipboard::Selection:
|
|
||||||
#if QT_CONFIG(wayland_client_primary_selection)
|
|
||||||
if (auto *selectionDevice = seat->primarySelectionDevice()) {
|
|
||||||
- selectionDevice->setSelectionSource(data ? new QWaylandPrimarySelectionSourceV1(mDisplay->primarySelectionManager(), data) : nullptr);
|
|
||||||
+ selectionDevice->setSelectionSource(data ? new QWaylandPrimarySelectionSourceV1(mDisplay->primarySelectionManager(),
|
|
||||||
+ m_clientClipboard[QClipboard::Selection]) : nullptr);
|
|
||||||
emitChanged(mode);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
diff --git a/src/client/qwaylandclipboard_p.h b/src/client/qwaylandclipboard_p.h
|
|
||||||
index ce14e124..bb52683d 100644
|
|
||||||
--- a/src/client/qwaylandclipboard_p.h
|
|
||||||
+++ b/src/client/qwaylandclipboard_p.h
|
|
||||||
@@ -80,6 +80,7 @@ public:
|
|
||||||
private:
|
|
||||||
QWaylandDisplay *mDisplay = nullptr;
|
|
||||||
QMimeData m_emptyData;
|
|
||||||
+ QMimeData *m_clientClipboard[2];
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp
|
diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp
|
||||||
index e4eca9d4..ba76ba2d 100644
|
index e4eca9d4e..ba76ba2d0 100644
|
||||||
--- a/src/client/qwaylandcursor.cpp
|
--- a/src/client/qwaylandcursor.cpp
|
||||||
+++ b/src/client/qwaylandcursor.cpp
|
+++ b/src/client/qwaylandcursor.cpp
|
||||||
@@ -44,6 +44,7 @@
|
@@ -44,6 +44,7 @@
|
||||||
@@ -224,7 +130,7 @@ index e4eca9d4..ba76ba2d 100644
|
|||||||
memcpy(buffer->image()->bits(), img.bits(), size_t(img.sizeInBytes()));
|
memcpy(buffer->image()->bits(), img.bits(), size_t(img.sizeInBytes()));
|
||||||
return buffer;
|
return buffer;
|
||||||
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
|
||||||
index 1e2db786..07b18ab0 100644
|
index 4d2459d1c..c57f1a499 100644
|
||||||
--- a/src/client/qwaylanddatadevice.cpp
|
--- a/src/client/qwaylanddatadevice.cpp
|
||||||
+++ b/src/client/qwaylanddatadevice.cpp
|
+++ b/src/client/qwaylanddatadevice.cpp
|
||||||
@@ -72,6 +72,8 @@ QWaylandDataDevice::QWaylandDataDevice(QWaylandDataDeviceManager *manager, QWayl
|
@@ -72,6 +72,8 @@ QWaylandDataDevice::QWaylandDataDevice(QWaylandDataDeviceManager *manager, QWayl
|
||||||
@@ -245,16 +151,9 @@ index 1e2db786..07b18ab0 100644
|
|||||||
{
|
{
|
||||||
auto *seat = m_display->currentInputDevice();
|
auto *seat = m_display->currentInputDevice();
|
||||||
auto *origin = seat->pointerFocus();
|
auto *origin = seat->pointerFocus();
|
||||||
@@ -122,8 +124,38 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
|
@@ -129,7 +131,31 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
|
||||||
return false;
|
mimeData->setData("application/x-qt-avoid-empty-placeholder", QByteArray("1"));
|
||||||
}
|
|
||||||
|
|
||||||
+ // dragging data without mimetypes is a legal operation in Qt terms
|
|
||||||
+ // but Wayland uses a mimetype to determine if a drag is accepted or not
|
|
||||||
+ // In this rare case, insert a placeholder
|
|
||||||
+ if (mimeData->formats().isEmpty())
|
|
||||||
+ mimeData->setData(QString::fromLatin1("application/x-qt-avoid-empty-placeholder"), QByteArray("1"));
|
|
||||||
+
|
|
||||||
m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
|
m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
|
||||||
+
|
+
|
||||||
+ if (wl_data_device_get_version(object()) >= 3)
|
+ if (wl_data_device_get_version(object()) >= 3)
|
||||||
@@ -284,7 +183,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
|
|
||||||
start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
|
start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
|
||||||
return true;
|
return true;
|
||||||
@@ -152,7 +184,7 @@ void QWaylandDataDevice::data_device_drop()
|
@@ -158,7 +184,7 @@ void QWaylandDataDevice::data_device_drop()
|
||||||
supportedActions = drag->supportedActions();
|
supportedActions = drag->supportedActions();
|
||||||
} else if (m_dragOffer) {
|
} else if (m_dragOffer) {
|
||||||
dragData = m_dragOffer->mimeData();
|
dragData = m_dragOffer->mimeData();
|
||||||
@@ -293,7 +192,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -162,7 +194,11 @@ void QWaylandDataDevice::data_device_drop()
|
@@ -168,7 +194,11 @@ void QWaylandDataDevice::data_device_drop()
|
||||||
QGuiApplication::keyboardModifiers());
|
QGuiApplication::keyboardModifiers());
|
||||||
|
|
||||||
if (drag) {
|
if (drag) {
|
||||||
@@ -306,7 +205,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +222,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface,
|
@@ -192,7 +222,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface,
|
||||||
supportedActions = drag->supportedActions();
|
supportedActions = drag->supportedActions();
|
||||||
} else if (m_dragOffer) {
|
} else if (m_dragOffer) {
|
||||||
dragData = m_dragOffer->mimeData();
|
dragData = m_dragOffer->mimeData();
|
||||||
@@ -315,7 +214,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
const QPlatformDragQtResponse &response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions,
|
const QPlatformDragQtResponse &response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions,
|
||||||
@@ -197,11 +233,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface,
|
@@ -203,11 +233,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface,
|
||||||
static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response);
|
static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -328,7 +227,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QWaylandDataDevice::data_device_leave()
|
void QWaylandDataDevice::data_device_leave()
|
||||||
@@ -235,10 +267,10 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe
|
@@ -241,10 +267,10 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe
|
||||||
supportedActions = drag->supportedActions();
|
supportedActions = drag->supportedActions();
|
||||||
} else {
|
} else {
|
||||||
dragData = m_dragOffer->mimeData();
|
dragData = m_dragOffer->mimeData();
|
||||||
@@ -341,7 +240,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
QGuiApplication::mouseButtons(),
|
QGuiApplication::mouseButtons(),
|
||||||
QGuiApplication::keyboardModifiers());
|
QGuiApplication::keyboardModifiers());
|
||||||
|
|
||||||
@@ -246,11 +278,7 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe
|
@@ -252,11 +278,7 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe
|
||||||
static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response);
|
static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,7 +253,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
}
|
}
|
||||||
#endif // QT_CONFIG(draganddrop)
|
#endif // QT_CONFIG(draganddrop)
|
||||||
|
|
||||||
@@ -277,14 +305,10 @@ void QWaylandDataDevice::selectionSourceCancelled()
|
@@ -283,14 +305,10 @@ void QWaylandDataDevice::selectionSourceCancelled()
|
||||||
#if QT_CONFIG(draganddrop)
|
#if QT_CONFIG(draganddrop)
|
||||||
void QWaylandDataDevice::dragSourceCancelled()
|
void QWaylandDataDevice::dragSourceCancelled()
|
||||||
{
|
{
|
||||||
@@ -370,7 +269,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) const
|
QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) const
|
||||||
{
|
{
|
||||||
QPoint pnt(wl_fixed_to_int(x), wl_fixed_to_int(y));
|
QPoint pnt(wl_fixed_to_int(x), wl_fixed_to_int(y));
|
||||||
@@ -297,6 +321,33 @@ QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) con
|
@@ -303,6 +321,33 @@ QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) con
|
||||||
}
|
}
|
||||||
return pnt;
|
return pnt;
|
||||||
}
|
}
|
||||||
@@ -405,7 +304,7 @@ index 1e2db786..07b18ab0 100644
|
|||||||
|
|
||||||
}
|
}
|
||||||
diff --git a/src/client/qwaylanddatadevice_p.h b/src/client/qwaylanddatadevice_p.h
|
diff --git a/src/client/qwaylanddatadevice_p.h b/src/client/qwaylanddatadevice_p.h
|
||||||
index 16c3ad28..801dcc2c 100644
|
index 16c3ad28e..801dcc2c1 100644
|
||||||
--- a/src/client/qwaylanddatadevice_p.h
|
--- a/src/client/qwaylanddatadevice_p.h
|
||||||
+++ b/src/client/qwaylanddatadevice_p.h
|
+++ b/src/client/qwaylanddatadevice_p.h
|
||||||
@@ -64,6 +64,7 @@ QT_REQUIRE_CONFIG(wayland_datadevice);
|
@@ -64,6 +64,7 @@ QT_REQUIRE_CONFIG(wayland_datadevice);
|
||||||
@@ -444,7 +343,7 @@ index 16c3ad28..801dcc2c 100644
|
|||||||
QWaylandDisplay *m_display = nullptr;
|
QWaylandDisplay *m_display = nullptr;
|
||||||
QWaylandInputDevice *m_inputDevice = nullptr;
|
QWaylandInputDevice *m_inputDevice = nullptr;
|
||||||
diff --git a/src/client/qwaylanddatadevicemanager.cpp b/src/client/qwaylanddatadevicemanager.cpp
|
diff --git a/src/client/qwaylanddatadevicemanager.cpp b/src/client/qwaylanddatadevicemanager.cpp
|
||||||
index 35d67307..6dc4f77f 100644
|
index 35d67307f..6dc4f77f5 100644
|
||||||
--- a/src/client/qwaylanddatadevicemanager.cpp
|
--- a/src/client/qwaylanddatadevicemanager.cpp
|
||||||
+++ b/src/client/qwaylanddatadevicemanager.cpp
|
+++ b/src/client/qwaylanddatadevicemanager.cpp
|
||||||
@@ -50,8 +50,8 @@ QT_BEGIN_NAMESPACE
|
@@ -50,8 +50,8 @@ QT_BEGIN_NAMESPACE
|
||||||
@@ -459,7 +358,7 @@ index 35d67307..6dc4f77f 100644
|
|||||||
{
|
{
|
||||||
// Create transfer devices for all input devices.
|
// Create transfer devices for all input devices.
|
||||||
diff --git a/src/client/qwaylanddatadevicemanager_p.h b/src/client/qwaylanddatadevicemanager_p.h
|
diff --git a/src/client/qwaylanddatadevicemanager_p.h b/src/client/qwaylanddatadevicemanager_p.h
|
||||||
index bd05c0fb..510d9be4 100644
|
index bd05c0fbb..510d9be48 100644
|
||||||
--- a/src/client/qwaylanddatadevicemanager_p.h
|
--- a/src/client/qwaylanddatadevicemanager_p.h
|
||||||
+++ b/src/client/qwaylanddatadevicemanager_p.h
|
+++ b/src/client/qwaylanddatadevicemanager_p.h
|
||||||
@@ -68,7 +68,7 @@ class QWaylandInputDevice;
|
@@ -68,7 +68,7 @@ class QWaylandInputDevice;
|
||||||
@@ -472,10 +371,22 @@ index bd05c0fb..510d9be4 100644
|
|||||||
|
|
||||||
QWaylandDataDevice *getDataDevice(QWaylandInputDevice *inputDevice);
|
QWaylandDataDevice *getDataDevice(QWaylandInputDevice *inputDevice);
|
||||||
diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp
|
diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp
|
||||||
index 2297e8a1..fe0ea8c9 100644
|
index 2297e8a16..0241a1dfc 100644
|
||||||
--- a/src/client/qwaylanddataoffer.cpp
|
--- a/src/client/qwaylanddataoffer.cpp
|
||||||
+++ b/src/client/qwaylanddataoffer.cpp
|
+++ b/src/client/qwaylanddataoffer.cpp
|
||||||
@@ -82,6 +82,15 @@ QMimeData *QWaylandDataOffer::mimeData()
|
@@ -56,6 +56,11 @@ static QString utf8Text()
|
||||||
|
return QStringLiteral("text/plain;charset=utf-8");
|
||||||
|
}
|
||||||
|
|
||||||
|
+static QString portalFileTransfer()
|
||||||
|
+{
|
||||||
|
+ return QStringLiteral("application/vnd.portal.filetransfer");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
QWaylandDataOffer::QWaylandDataOffer(QWaylandDisplay *display, struct ::wl_data_offer *offer)
|
||||||
|
: QtWayland::wl_data_offer(offer)
|
||||||
|
, m_display(display)
|
||||||
|
@@ -82,6 +87,15 @@ QMimeData *QWaylandDataOffer::mimeData()
|
||||||
return m_mimeData.data();
|
return m_mimeData.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -491,7 +402,7 @@ index 2297e8a1..fe0ea8c9 100644
|
|||||||
void QWaylandDataOffer::startReceiving(const QString &mimeType, int fd)
|
void QWaylandDataOffer::startReceiving(const QString &mimeType, int fd)
|
||||||
{
|
{
|
||||||
receive(mimeType, fd);
|
receive(mimeType, fd);
|
||||||
@@ -93,6 +102,22 @@ void QWaylandDataOffer::data_offer_offer(const QString &mime_type)
|
@@ -93,6 +107,22 @@ void QWaylandDataOffer::data_offer_offer(const QString &mime_type)
|
||||||
m_mimeData->appendFormat(mime_type);
|
m_mimeData->appendFormat(mime_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,7 +425,16 @@ index 2297e8a1..fe0ea8c9 100644
|
|||||||
QWaylandMimeData::QWaylandMimeData(QWaylandAbstractDataOffer *dataOffer)
|
QWaylandMimeData::QWaylandMimeData(QWaylandAbstractDataOffer *dataOffer)
|
||||||
: m_dataOffer(dataOffer)
|
: m_dataOffer(dataOffer)
|
||||||
{
|
{
|
||||||
@@ -163,17 +188,18 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T
|
@@ -157,23 +187,26 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T
|
||||||
|
}
|
||||||
|
|
||||||
|
close(pipefd[0]);
|
||||||
|
- m_data.insert(mimeType, content);
|
||||||
|
+ if (mimeType != portalFileTransfer())
|
||||||
|
+ m_data.insert(mimeType, content);
|
||||||
|
+
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
int QWaylandMimeData::readData(int fd, QByteArray &data) const
|
int QWaylandMimeData::readData(int fd, QByteArray &data) const
|
||||||
{
|
{
|
||||||
@@ -541,7 +461,7 @@ index 2297e8a1..fe0ea8c9 100644
|
|||||||
} else if (ready == 0) {
|
} else if (ready == 0) {
|
||||||
qWarning("QWaylandDataOffer: timeout reading from pipe");
|
qWarning("QWaylandDataOffer: timeout reading from pipe");
|
||||||
diff --git a/src/client/qwaylanddataoffer_p.h b/src/client/qwaylanddataoffer_p.h
|
diff --git a/src/client/qwaylanddataoffer_p.h b/src/client/qwaylanddataoffer_p.h
|
||||||
index 9cf1483c..6f667398 100644
|
index 9cf1483ca..6f6673984 100644
|
||||||
--- a/src/client/qwaylanddataoffer_p.h
|
--- a/src/client/qwaylanddataoffer_p.h
|
||||||
+++ b/src/client/qwaylanddataoffer_p.h
|
+++ b/src/client/qwaylanddataoffer_p.h
|
||||||
@@ -82,6 +82,7 @@ public:
|
@@ -82,6 +82,7 @@ public:
|
||||||
@@ -567,22 +487,10 @@ index 9cf1483c..6f667398 100644
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp
|
diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp
|
||||||
index c2bc9dc4..321170a6 100644
|
index c86c14162..321170a66 100644
|
||||||
--- a/src/client/qwaylanddatasource.cpp
|
--- a/src/client/qwaylanddatasource.cpp
|
||||||
+++ b/src/client/qwaylanddatasource.cpp
|
+++ b/src/client/qwaylanddatasource.cpp
|
||||||
@@ -72,11 +72,6 @@ QWaylandDataSource::~QWaylandDataSource()
|
@@ -105,7 +105,32 @@ void QWaylandDataSource::data_source_send(const QString &mime_type, int32_t fd)
|
||||||
destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
-QMimeData * QWaylandDataSource::mimeData() const
|
|
||||||
-{
|
|
||||||
- return m_mime_data;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void QWaylandDataSource::data_source_cancelled()
|
|
||||||
{
|
|
||||||
Q_EMIT cancelled();
|
|
||||||
@@ -110,7 +105,32 @@ void QWaylandDataSource::data_source_send(const QString &mime_type, int32_t fd)
|
|
||||||
|
|
||||||
void QWaylandDataSource::data_source_target(const QString &mime_type)
|
void QWaylandDataSource::data_source_target(const QString &mime_type)
|
||||||
{
|
{
|
||||||
@@ -617,15 +525,12 @@ index c2bc9dc4..321170a6 100644
|
|||||||
|
|
||||||
}
|
}
|
||||||
diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h
|
diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h
|
||||||
index 3003da1b..089c5485 100644
|
index 520b31656..089c54853 100644
|
||||||
--- a/src/client/qwaylanddatasource_p.h
|
--- a/src/client/qwaylanddatasource_p.h
|
||||||
+++ b/src/client/qwaylanddatasource_p.h
|
+++ b/src/client/qwaylanddatasource_p.h
|
||||||
@@ -74,19 +74,25 @@ public:
|
@@ -75,16 +75,24 @@ public:
|
||||||
QWaylandDataSource(QWaylandDataDeviceManager *dataDeviceManager, QMimeData *mimeData);
|
|
||||||
~QWaylandDataSource() override;
|
~QWaylandDataSource() override;
|
||||||
|
|
||||||
- QMimeData *mimeData() const;
|
|
||||||
-
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
- void targetChanged(const QString &mime_type);
|
- void targetChanged(const QString &mime_type);
|
||||||
void cancelled();
|
void cancelled();
|
||||||
@@ -650,7 +555,7 @@ index 3003da1b..089c5485 100644
|
|||||||
|
|
||||||
}
|
}
|
||||||
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
|
||||||
index 8a6d5db1..737b539d 100644
|
index 8a6d5db1d..737b539de 100644
|
||||||
--- a/src/client/qwaylanddisplay.cpp
|
--- a/src/client/qwaylanddisplay.cpp
|
||||||
+++ b/src/client/qwaylanddisplay.cpp
|
+++ b/src/client/qwaylanddisplay.cpp
|
||||||
@@ -87,10 +87,203 @@
|
@@ -87,10 +87,203 @@
|
||||||
@@ -1195,7 +1100,7 @@ index 8a6d5db1..737b539d 100644
|
|||||||
|
|
||||||
#include "moc_qwaylanddisplay_p.cpp"
|
#include "moc_qwaylanddisplay_p.cpp"
|
||||||
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
|
diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
|
||||||
index 1bad8b67..cf91b924 100644
|
index 1bad8b678..cf91b9245 100644
|
||||||
--- a/src/client/qwaylanddisplay_p.h
|
--- a/src/client/qwaylanddisplay_p.h
|
||||||
+++ b/src/client/qwaylanddisplay_p.h
|
+++ b/src/client/qwaylanddisplay_p.h
|
||||||
@@ -111,6 +111,7 @@ class QWaylandSurface;
|
@@ -111,6 +111,7 @@ class QWaylandSurface;
|
||||||
@@ -1264,7 +1169,7 @@ index 1bad8b67..cf91b924 100644
|
|||||||
bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull();
|
bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull();
|
||||||
|
|
||||||
diff --git a/src/client/qwaylanddnd.cpp b/src/client/qwaylanddnd.cpp
|
diff --git a/src/client/qwaylanddnd.cpp b/src/client/qwaylanddnd.cpp
|
||||||
index 6535aa16..7c53f5fa 100644
|
index 6535aa16b..7c53f5faa 100644
|
||||||
--- a/src/client/qwaylanddnd.cpp
|
--- a/src/client/qwaylanddnd.cpp
|
||||||
+++ b/src/client/qwaylanddnd.cpp
|
+++ b/src/client/qwaylanddnd.cpp
|
||||||
@@ -66,7 +66,7 @@ void QWaylandDrag::startDrag()
|
@@ -66,7 +66,7 @@ void QWaylandDrag::startDrag()
|
||||||
@@ -1340,7 +1245,7 @@ index 6535aa16..7c53f5fa 100644
|
|||||||
|
|
||||||
}
|
}
|
||||||
diff --git a/src/client/qwaylanddnd_p.h b/src/client/qwaylanddnd_p.h
|
diff --git a/src/client/qwaylanddnd_p.h b/src/client/qwaylanddnd_p.h
|
||||||
index 474fe2ab..46f629ac 100644
|
index 474fe2ab1..46f629ace 100644
|
||||||
--- a/src/client/qwaylanddnd_p.h
|
--- a/src/client/qwaylanddnd_p.h
|
||||||
+++ b/src/client/qwaylanddnd_p.h
|
+++ b/src/client/qwaylanddnd_p.h
|
||||||
@@ -71,9 +71,10 @@ public:
|
@@ -71,9 +71,10 @@ public:
|
||||||
@@ -1365,30 +1270,8 @@ index 474fe2ab..46f629ac 100644
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QWaylandDisplay *m_display = nullptr;
|
QWaylandDisplay *m_display = nullptr;
|
||||||
diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp
|
|
||||||
index 47696a6a..9435e961 100644
|
|
||||||
--- a/src/client/qwaylandinputcontext.cpp
|
|
||||||
+++ b/src/client/qwaylandinputcontext.cpp
|
|
||||||
@@ -93,9 +93,14 @@ void QWaylandTextInput::reset()
|
|
||||||
void QWaylandTextInput::commit()
|
|
||||||
{
|
|
||||||
if (QObject *o = QGuiApplication::focusObject()) {
|
|
||||||
- QInputMethodEvent event;
|
|
||||||
- event.setCommitString(m_preeditCommit);
|
|
||||||
- QCoreApplication::sendEvent(o, &event);
|
|
||||||
+ if (!m_preeditCommit.isEmpty()) {
|
|
||||||
+
|
|
||||||
+ QInputMethodEvent event;
|
|
||||||
+ event.setCommitString(m_preeditCommit);
|
|
||||||
+ m_preeditCommit = QString();
|
|
||||||
+
|
|
||||||
+ QCoreApplication::sendEvent(o, &event);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
reset();
|
|
||||||
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
|
||||||
index b0e9692b..ab978d3f 100644
|
index 346c438c6..ab978d3f4 100644
|
||||||
--- a/src/client/qwaylandinputdevice.cpp
|
--- a/src/client/qwaylandinputdevice.cpp
|
||||||
+++ b/src/client/qwaylandinputdevice.cpp
|
+++ b/src/client/qwaylandinputdevice.cpp
|
||||||
@@ -310,8 +310,7 @@ void QWaylandInputDevice::Pointer::updateCursor()
|
@@ -310,8 +310,7 @@ void QWaylandInputDevice::Pointer::updateCursor()
|
||||||
@@ -1401,15 +1284,6 @@ index b0e9692b..ab978d3f 100644
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -846,7 +845,7 @@ void QWaylandInputDevice::Pointer::releaseButtons()
|
|
||||||
mButtons = Qt::NoButton;
|
|
||||||
|
|
||||||
if (auto *window = focusWindow()) {
|
|
||||||
- MotionEvent e(focusWindow(), mParent->mTime, mSurfacePos, mGlobalPos, mButtons, mParent->modifiers());
|
|
||||||
+ ReleaseEvent e(focusWindow(), mParent->mTime, mSurfacePos, mGlobalPos, mButtons, Qt::NoButton, mParent->modifiers());
|
|
||||||
window->handleMouse(mParent, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1304,14 +1303,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed()
|
@@ -1304,14 +1303,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed()
|
||||||
void QWaylandInputDevice::Keyboard::handleFocusLost()
|
void QWaylandInputDevice::Keyboard::handleFocusLost()
|
||||||
{
|
{
|
||||||
@@ -1434,7 +1308,7 @@ index b0e9692b..ab978d3f 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
|
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
|
||||||
index d257e2e3..54861600 100644
|
index d257e2e33..548616005 100644
|
||||||
--- a/src/client/qwaylandintegration.cpp
|
--- a/src/client/qwaylandintegration.cpp
|
||||||
+++ b/src/client/qwaylandintegration.cpp
|
+++ b/src/client/qwaylandintegration.cpp
|
||||||
@@ -125,6 +125,9 @@ QWaylandIntegration::QWaylandIntegration()
|
@@ -125,6 +125,9 @@ QWaylandIntegration::QWaylandIntegration()
|
||||||
@@ -1486,7 +1360,7 @@ index d257e2e3..54861600 100644
|
|||||||
{
|
{
|
||||||
if (auto *seat = mDisplay->currentInputDevice())
|
if (auto *seat = mDisplay->currentInputDevice())
|
||||||
diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h
|
diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h
|
||||||
index ff70ae25..73b80658 100644
|
index ff70ae25d..73b806588 100644
|
||||||
--- a/src/client/qwaylandintegration_p.h
|
--- a/src/client/qwaylandintegration_p.h
|
||||||
+++ b/src/client/qwaylandintegration_p.h
|
+++ b/src/client/qwaylandintegration_p.h
|
||||||
@@ -107,6 +107,8 @@ public:
|
@@ -107,6 +107,8 @@ public:
|
||||||
@@ -1498,21 +1372,8 @@ index ff70ae25..73b80658 100644
|
|||||||
QList<int> possibleKeys(const QKeyEvent *event) const override;
|
QList<int> possibleKeys(const QKeyEvent *event) const override;
|
||||||
|
|
||||||
QStringList themeNames() const override;
|
QStringList themeNames() const override;
|
||||||
diff --git a/src/client/qwaylandnativeinterface.cpp b/src/client/qwaylandnativeinterface.cpp
|
|
||||||
index bf54a1a0..9763c312 100644
|
|
||||||
--- a/src/client/qwaylandnativeinterface.cpp
|
|
||||||
+++ b/src/client/qwaylandnativeinterface.cpp
|
|
||||||
@@ -139,7 +139,7 @@ void *QWaylandNativeInterface::nativeResourceForScreen(const QByteArray &resourc
|
|
||||||
{
|
|
||||||
QByteArray lowerCaseResource = resourceString.toLower();
|
|
||||||
|
|
||||||
- if (lowerCaseResource == "output")
|
|
||||||
+ if (lowerCaseResource == "output" && !screen->handle()->isPlaceholder())
|
|
||||||
return ((QWaylandScreen *) screen->handle())->output();
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
diff --git a/src/client/qwaylandprimaryselectionv1.cpp b/src/client/qwaylandprimaryselectionv1.cpp
|
diff --git a/src/client/qwaylandprimaryselectionv1.cpp b/src/client/qwaylandprimaryselectionv1.cpp
|
||||||
index 7805dd73..dac532b2 100644
|
index 7805dd734..dac532b20 100644
|
||||||
--- a/src/client/qwaylandprimaryselectionv1.cpp
|
--- a/src/client/qwaylandprimaryselectionv1.cpp
|
||||||
+++ b/src/client/qwaylandprimaryselectionv1.cpp
|
+++ b/src/client/qwaylandprimaryselectionv1.cpp
|
||||||
@@ -54,11 +54,6 @@ QWaylandPrimarySelectionDeviceManagerV1::QWaylandPrimarySelectionDeviceManagerV1
|
@@ -54,11 +54,6 @@ QWaylandPrimarySelectionDeviceManagerV1::QWaylandPrimarySelectionDeviceManagerV1
|
||||||
@@ -1528,7 +1389,7 @@ index 7805dd73..dac532b2 100644
|
|||||||
|
|
||||||
QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat)
|
QWaylandPrimarySelectionDeviceV1 *QWaylandPrimarySelectionDeviceManagerV1::createDevice(QWaylandInputDevice *seat)
|
||||||
diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp
|
diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp
|
||||||
index 6cb337de..5537dafd 100644
|
index 6cb337de3..5537dafd0 100644
|
||||||
--- a/src/client/qwaylandscreen.cpp
|
--- a/src/client/qwaylandscreen.cpp
|
||||||
+++ b/src/client/qwaylandscreen.cpp
|
+++ b/src/client/qwaylandscreen.cpp
|
||||||
@@ -60,7 +60,7 @@ QWaylandXdgOutputManagerV1::QWaylandXdgOutputManagerV1(QWaylandDisplay* display,
|
@@ -60,7 +60,7 @@ QWaylandXdgOutputManagerV1::QWaylandXdgOutputManagerV1(QWaylandDisplay* display,
|
||||||
@@ -1617,7 +1478,7 @@ index 6cb337de..5537dafd 100644
|
|||||||
|
|
||||||
void QWaylandScreen::updateXdgOutputProperties()
|
void QWaylandScreen::updateXdgOutputProperties()
|
||||||
diff --git a/src/client/qwaylandscreen_p.h b/src/client/qwaylandscreen_p.h
|
diff --git a/src/client/qwaylandscreen_p.h b/src/client/qwaylandscreen_p.h
|
||||||
index df1c94f2..050cfdc0 100644
|
index df1c94f24..050cfdc06 100644
|
||||||
--- a/src/client/qwaylandscreen_p.h
|
--- a/src/client/qwaylandscreen_p.h
|
||||||
+++ b/src/client/qwaylandscreen_p.h
|
+++ b/src/client/qwaylandscreen_p.h
|
||||||
@@ -116,6 +116,13 @@ public:
|
@@ -116,6 +116,13 @@ public:
|
||||||
@@ -1645,7 +1506,7 @@ index df1c94f2..050cfdc0 100644
|
|||||||
|
|
||||||
#if QT_CONFIG(cursor)
|
#if QT_CONFIG(cursor)
|
||||||
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
|
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
|
||||||
index dc7ff670..145f933b 100644
|
index dc7ff6708..145f933b7 100644
|
||||||
--- a/src/client/qwaylandshmbackingstore.cpp
|
--- a/src/client/qwaylandshmbackingstore.cpp
|
||||||
+++ b/src/client/qwaylandshmbackingstore.cpp
|
+++ b/src/client/qwaylandshmbackingstore.cpp
|
||||||
@@ -52,6 +52,7 @@
|
@@ -52,6 +52,7 @@
|
||||||
@@ -1722,7 +1583,7 @@ index dc7ff670..145f933b 100644
|
|||||||
|
|
||||||
// We look for a free buffer to draw into. If the buffer is not the last buffer we used,
|
// We look for a free buffer to draw into. If the buffer is not the last buffer we used,
|
||||||
diff --git a/src/client/qwaylandshmbackingstore_p.h b/src/client/qwaylandshmbackingstore_p.h
|
diff --git a/src/client/qwaylandshmbackingstore_p.h b/src/client/qwaylandshmbackingstore_p.h
|
||||||
index e01632da..f3fae438 100644
|
index e01632daf..f3fae4380 100644
|
||||||
--- a/src/client/qwaylandshmbackingstore_p.h
|
--- a/src/client/qwaylandshmbackingstore_p.h
|
||||||
+++ b/src/client/qwaylandshmbackingstore_p.h
|
+++ b/src/client/qwaylandshmbackingstore_p.h
|
||||||
@@ -71,7 +71,7 @@ class QWaylandWindow;
|
@@ -71,7 +71,7 @@ class QWaylandWindow;
|
||||||
@@ -1735,7 +1596,7 @@ index e01632da..f3fae438 100644
|
|||||||
QSize size() const override { return mImage.size(); }
|
QSize size() const override { return mImage.size(); }
|
||||||
int scale() const override { return int(mImage.devicePixelRatio()); }
|
int scale() const override { return int(mImage.devicePixelRatio()); }
|
||||||
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
|
||||||
index d57094a7..7a9bccc1 100644
|
index d57094a71..7a9bccc16 100644
|
||||||
--- a/src/client/qwaylandwindow.cpp
|
--- a/src/client/qwaylandwindow.cpp
|
||||||
+++ b/src/client/qwaylandwindow.cpp
|
+++ b/src/client/qwaylandwindow.cpp
|
||||||
@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
|
@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
|
||||||
@@ -2210,7 +2071,7 @@ index d57094a7..7a9bccc1 100644
|
|||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
|
||||||
index 01337cff..741f9e5c 100644
|
index 01337cff1..741f9e5cc 100644
|
||||||
--- a/src/client/qwaylandwindow_p.h
|
--- a/src/client/qwaylandwindow_p.h
|
||||||
+++ b/src/client/qwaylandwindow_p.h
|
+++ b/src/client/qwaylandwindow_p.h
|
||||||
@@ -98,6 +98,9 @@ public:
|
@@ -98,6 +98,9 @@ public:
|
||||||
@@ -2306,7 +2167,7 @@ index 01337cff..741f9e5c 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/src/client/shellintegration/qwaylandshellintegration_p.h b/src/client/shellintegration/qwaylandshellintegration_p.h
|
diff --git a/src/client/shellintegration/qwaylandshellintegration_p.h b/src/client/shellintegration/qwaylandshellintegration_p.h
|
||||||
index ccad0048..4cc9b3b8 100644
|
index ccad00481..4cc9b3b84 100644
|
||||||
--- a/src/client/shellintegration/qwaylandshellintegration_p.h
|
--- a/src/client/shellintegration/qwaylandshellintegration_p.h
|
||||||
+++ b/src/client/shellintegration/qwaylandshellintegration_p.h
|
+++ b/src/client/shellintegration/qwaylandshellintegration_p.h
|
||||||
@@ -73,11 +73,10 @@ public:
|
@@ -73,11 +73,10 @@ public:
|
||||||
@@ -2325,7 +2186,7 @@ index ccad0048..4cc9b3b8 100644
|
|||||||
virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window) {
|
virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window) {
|
||||||
Q_UNUSED(resource);
|
Q_UNUSED(resource);
|
||||||
diff --git a/src/compositor/configure.json b/src/compositor/configure.json
|
diff --git a/src/compositor/configure.json b/src/compositor/configure.json
|
||||||
index bcfd5215..da95d07b 100644
|
index c5b0f03ed..031e4cc3a 100644
|
||||||
--- a/src/compositor/configure.json
|
--- a/src/compositor/configure.json
|
||||||
+++ b/src/compositor/configure.json
|
+++ b/src/compositor/configure.json
|
||||||
@@ -7,6 +7,31 @@
|
@@ -7,6 +7,31 @@
|
||||||
@@ -2360,27 +2221,7 @@ index bcfd5215..da95d07b 100644
|
|||||||
"wayland-server": {
|
"wayland-server": {
|
||||||
"label": "wayland-server",
|
"label": "wayland-server",
|
||||||
"headers": "wayland-version.h",
|
"headers": "wayland-version.h",
|
||||||
@@ -151,8 +176,7 @@
|
@@ -193,7 +218,8 @@
|
||||||
"#endif"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
- "libs": "-ldrm",
|
|
||||||
- "use": "egl"
|
|
||||||
+ "use": "drm egl"
|
|
||||||
},
|
|
||||||
"dmabuf-client-buffer": {
|
|
||||||
"label": "Linux Client dma-buf Buffer Sharing",
|
|
||||||
@@ -176,8 +200,7 @@
|
|
||||||
"return 0;"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
- "libs": "-ldrm",
|
|
||||||
- "use": "egl"
|
|
||||||
+ "use": "drm egl"
|
|
||||||
},
|
|
||||||
"vulkan-server-buffer": {
|
|
||||||
"label": "Vulkan Buffer Sharing",
|
|
||||||
@@ -195,7 +218,8 @@
|
|
||||||
"exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
|
"exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
|
||||||
"return 0;"
|
"return 0;"
|
||||||
]
|
]
|
||||||
@@ -2390,8 +2231,55 @@ index bcfd5215..da95d07b 100644
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
diff --git a/src/compositor/wayland_wrapper/qwldatadevice.cpp b/src/compositor/wayland_wrapper/qwldatadevice.cpp
|
||||||
|
index a3a795f9b..f301678e2 100644
|
||||||
|
--- a/src/compositor/wayland_wrapper/qwldatadevice.cpp
|
||||||
|
+++ b/src/compositor/wayland_wrapper/qwldatadevice.cpp
|
||||||
|
@@ -76,6 +76,9 @@ void DataDevice::sourceDestroyed(DataSource *source)
|
||||||
|
{
|
||||||
|
if (m_selectionSource == source)
|
||||||
|
m_selectionSource = nullptr;
|
||||||
|
+
|
||||||
|
+ if (m_dragDataSource == source)
|
||||||
|
+ m_dragDataSource = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if QT_CONFIG(draganddrop)
|
||||||
|
@@ -105,9 +108,11 @@ void DataDevice::setDragFocus(QWaylandSurface *focus, const QPointF &localPositi
|
||||||
|
if (m_dragDataSource && !offer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- send_enter(resource->handle, serial, focus->resource(),
|
||||||
|
- wl_fixed_from_double(localPosition.x()), wl_fixed_from_double(localPosition.y()),
|
||||||
|
- offer->resource()->handle);
|
||||||
|
+ if (offer) {
|
||||||
|
+ send_enter(resource->handle, serial, focus->resource(),
|
||||||
|
+ wl_fixed_from_double(localPosition.x()), wl_fixed_from_double(localPosition.y()),
|
||||||
|
+ offer->resource()->handle);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
m_dragFocus = focus;
|
||||||
|
m_dragFocusResource = resource;
|
||||||
|
@@ -139,7 +144,7 @@ void DataDevice::drop()
|
||||||
|
if (m_dragFocusResource) {
|
||||||
|
send_drop(m_dragFocusResource->handle);
|
||||||
|
setDragFocus(nullptr, QPoint());
|
||||||
|
- } else {
|
||||||
|
+ } else if (m_dragDataSource) {
|
||||||
|
m_dragDataSource->cancel();
|
||||||
|
}
|
||||||
|
m_dragOrigin = nullptr;
|
||||||
|
@@ -155,6 +160,8 @@ void DataDevice::data_device_start_drag(Resource *resource, struct ::wl_resource
|
||||||
|
{
|
||||||
|
m_dragClient = resource->client();
|
||||||
|
m_dragDataSource = source ? DataSource::fromResource(source) : nullptr;
|
||||||
|
+ if (m_dragDataSource)
|
||||||
|
+ m_dragDataSource->setDevice(this);
|
||||||
|
m_dragOrigin = QWaylandSurface::fromResource(origin);
|
||||||
|
QWaylandDrag *drag = m_seat->drag();
|
||||||
|
setDragIcon(icon ? QWaylandSurface::fromResource(icon) : nullptr);
|
||||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||||
index e00c28c3..dbe2845a 100644
|
index e00c28c3b..95e8c666c 100644
|
||||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
|
||||||
@@ -40,6 +40,7 @@
|
@@ -40,6 +40,7 @@
|
||||||
@@ -2402,15 +2290,17 @@ index e00c28c3..dbe2845a 100644
|
|||||||
#include "qwaylandglcontext.h"
|
#include "qwaylandglcontext.h"
|
||||||
|
|
||||||
#include <QtEglSupport/private/qeglconvenience_p.h>
|
#include <QtEglSupport/private/qeglconvenience_p.h>
|
||||||
@@ -115,6 +116,7 @@ void QWaylandEglWindow::updateSurface(bool create)
|
@@ -115,21 +116,25 @@ void QWaylandEglWindow::updateSurface(bool create)
|
||||||
}
|
}
|
||||||
mOffset = QPoint();
|
mOffset = QPoint();
|
||||||
} else {
|
} else {
|
||||||
+ QReadLocker locker(&mSurfaceLock);
|
+ QReadLocker locker(&mSurfaceLock);
|
||||||
if (m_waylandEglWindow) {
|
if (m_waylandEglWindow) {
|
||||||
int current_width, current_height;
|
- int current_width, current_height;
|
||||||
|
+ int current_width = 0;
|
||||||
|
+ int current_height = 0;
|
||||||
static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt();
|
static bool disableResizeCheck = qgetenv("QT_WAYLAND_DISABLE_RESIZECHECK").toInt();
|
||||||
@@ -122,14 +124,16 @@ void QWaylandEglWindow::updateSurface(bool create)
|
|
||||||
if (!disableResizeCheck) {
|
if (!disableResizeCheck) {
|
||||||
wl_egl_window_get_attached_size(m_waylandEglWindow, ¤t_width, ¤t_height);
|
wl_egl_window_get_attached_size(m_waylandEglWindow, ¤t_width, ¤t_height);
|
||||||
}
|
}
|
||||||
@@ -2431,7 +2321,7 @@ index e00c28c3..dbe2845a 100644
|
|||||||
|
|
||||||
if (!m_eglSurface && m_waylandEglWindow && create) {
|
if (!m_eglSurface && m_waylandEglWindow && create) {
|
||||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
||||||
index 2fccbcea..ad1e5ee9 100644
|
index 2fccbcea5..ad1e5ee9f 100644
|
||||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
||||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
|
||||||
@@ -85,6 +85,7 @@ private:
|
@@ -85,6 +85,7 @@ private:
|
||||||
@@ -2443,7 +2333,7 @@ index 2fccbcea..ad1e5ee9 100644
|
|||||||
|
|
||||||
}
|
}
|
||||||
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
||||||
index c1f45fa6..bbc63444 100644
|
index c1f45fa69..bbc634445 100644
|
||||||
--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
||||||
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
|
||||||
@@ -195,7 +195,7 @@ public:
|
@@ -195,7 +195,7 @@ public:
|
||||||
@@ -2456,7 +2346,7 @@ index c1f45fa6..bbc63444 100644
|
|||||||
|
|
||||||
//Draw Decoration
|
//Draw Decoration
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
|
||||||
index 85d25e3c..60bdd491 100644
|
index 85d25e3c0..60bdd4911 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
|
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5.cpp
|
||||||
@@ -47,18 +47,21 @@ QT_BEGIN_NAMESPACE
|
@@ -47,18 +47,21 @@ QT_BEGIN_NAMESPACE
|
||||||
@@ -2483,7 +2373,7 @@ index 85d25e3c..60bdd491 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
|
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
|
||||||
index 7494f6a6..d85f130b 100644
|
index 7494f6a67..d85f130bc 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
|
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
|
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgpopupv5_p.h
|
||||||
@@ -70,7 +70,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgPopupV5 : public QWaylandShellSurface
|
@@ -70,7 +70,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgPopupV5 : public QWaylandShellSurface
|
||||||
@@ -2504,7 +2394,7 @@ index 7494f6a6..d85f130b 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
|
||||||
index 7e242c4a..def8452a 100644
|
index 7e242c4a5..def8452a1 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
|
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5.cpp
|
||||||
@@ -84,7 +84,7 @@ QWaylandXdgPopupV5 *QWaylandXdgShellV5::createXdgPopup(QWaylandWindow *window, Q
|
@@ -84,7 +84,7 @@ QWaylandXdgPopupV5 *QWaylandXdgShellV5::createXdgPopup(QWaylandWindow *window, Q
|
||||||
@@ -2517,7 +2407,7 @@ index 7e242c4a..def8452a 100644
|
|||||||
QObject::connect(popup, &QWaylandXdgPopupV5::destroyed, [this, window](){
|
QObject::connect(popup, &QWaylandXdgPopupV5::destroyed, [this, window](){
|
||||||
m_popups.removeOne(window);
|
m_popups.removeOne(window);
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
|
||||||
index 4e25949f..cfc60939 100644
|
index 4e25949fa..cfc609394 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
|
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
|
||||||
@@ -85,13 +85,6 @@ QWaylandShellSurface *QWaylandXdgShellV5Integration::createShellSurface(QWayland
|
@@ -85,13 +85,6 @@ QWaylandShellSurface *QWaylandXdgShellV5Integration::createShellSurface(QWayland
|
||||||
@@ -2535,7 +2425,7 @@ index 4e25949f..cfc60939 100644
|
|||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
|
diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
|
||||||
index ce6bdb9e..aed88670 100644
|
index ce6bdb9ee..aed886707 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
|
--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
|
+++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
|
||||||
@@ -67,7 +67,6 @@ public:
|
@@ -67,7 +67,6 @@ public:
|
||||||
@@ -2547,7 +2437,7 @@ index ce6bdb9e..aed88670 100644
|
|||||||
private:
|
private:
|
||||||
QScopedPointer<QWaylandXdgShellV5> m_xdgShell;
|
QScopedPointer<QWaylandXdgShellV5> m_xdgShell;
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
|
||||||
index 8c371661..151c78e3 100644
|
index 8c371661f..151c78e38 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
|
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp
|
||||||
@@ -174,6 +174,7 @@ QWaylandXdgSurfaceV6::Popup::Popup(QWaylandXdgSurfaceV6 *xdgSurface, QWaylandXdg
|
@@ -174,6 +174,7 @@ QWaylandXdgSurfaceV6::Popup::Popup(QWaylandXdgSurfaceV6 *xdgSurface, QWaylandXdg
|
||||||
@@ -2568,7 +2458,7 @@ index 8c371661..151c78e3 100644
|
|||||||
auto *shell = m_xdgSurface->m_shell;
|
auto *shell = m_xdgSurface->m_shell;
|
||||||
Q_ASSERT(shell->m_topmostGrabbingPopup == this);
|
Q_ASSERT(shell->m_topmostGrabbingPopup == this);
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
|
||||||
index 03164316..e8da8ba1 100644
|
index 031643165..e8da8ba12 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
|
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
|
||||||
@@ -68,20 +68,6 @@ QWaylandShellSurface *QWaylandXdgShellV6Integration::createShellSurface(QWayland
|
@@ -68,20 +68,6 @@ QWaylandShellSurface *QWaylandXdgShellV6Integration::createShellSurface(QWayland
|
||||||
@@ -2593,7 +2483,7 @@ index 03164316..e8da8ba1 100644
|
|||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
|
diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
|
||||||
index 261f8cbb..c1bcd5c6 100644
|
index 261f8cbb4..c1bcd5c68 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
|
--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
|
+++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
|
||||||
@@ -65,7 +65,6 @@ public:
|
@@ -65,7 +65,6 @@ public:
|
||||||
@@ -2605,7 +2495,7 @@ index 261f8cbb..c1bcd5c6 100644
|
|||||||
private:
|
private:
|
||||||
QScopedPointer<QWaylandXdgShellV6> m_xdgShell;
|
QScopedPointer<QWaylandXdgShellV6> m_xdgShell;
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||||
index 94ea573e..9c6cbb81 100644
|
index 49e9d9538..9c6cbb81f 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
|
||||||
@@ -44,6 +44,7 @@
|
@@ -44,6 +44,7 @@
|
||||||
@@ -2749,22 +2639,18 @@ index 94ea573e..9c6cbb81 100644
|
|||||||
auto positioner = new QtWayland::xdg_positioner(m_shell->create_positioner());
|
auto positioner = new QtWayland::xdg_positioner(m_shell->create_positioner());
|
||||||
// set_popup expects a position relative to the parent
|
// set_popup expects a position relative to the parent
|
||||||
QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
|
QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
|
||||||
@@ -425,11 +425,10 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent)
|
@@ -426,8 +426,9 @@ void QWaylandXdgSurface::setPopup(QWaylandWindow *parent)
|
||||||
positioner->set_gravity(QtWayland::xdg_positioner::gravity_bottom_right);
|
|
||||||
positioner->set_size(m_window->geometry().width(), m_window->geometry().height());
|
positioner->set_size(m_window->geometry().width(), m_window->geometry().height());
|
||||||
positioner->set_constraint_adjustment(QtWayland::xdg_positioner::constraint_adjustment_slide_x
|
positioner->set_constraint_adjustment(QtWayland::xdg_positioner::constraint_adjustment_slide_x
|
||||||
- | QtWayland::xdg_positioner::constraint_adjustment_slide_y
|
| QtWayland::xdg_positioner::constraint_adjustment_slide_y);
|
||||||
- | QtWayland::xdg_positioner::constraint_adjustment_flip_x
|
|
||||||
- | QtWayland::xdg_positioner::constraint_adjustment_flip_y);
|
|
||||||
- m_popup = new Popup(this, parentXdgSurface, positioner);
|
- m_popup = new Popup(this, parentXdgSurface, positioner);
|
||||||
+ | QtWayland::xdg_positioner::constraint_adjustment_slide_y);
|
|
||||||
+ m_popup = new Popup(this, parent, positioner);
|
+ m_popup = new Popup(this, parent, positioner);
|
||||||
positioner->destroy();
|
positioner->destroy();
|
||||||
+
|
+
|
||||||
delete positioner;
|
delete positioner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -466,8 +465,10 @@ void QWaylandXdgSurface::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevic
|
@@ -464,8 +465,10 @@ void QWaylandXdgSurface::setGrabPopup(QWaylandWindow *parent, QWaylandInputDevic
|
||||||
if (m_popup && m_popup->m_xdgSurface && m_popup->m_xdgSurface->window())
|
if (m_popup && m_popup->m_xdgSurface && m_popup->m_xdgSurface->window())
|
||||||
enter = m_popup->m_xdgSurface->window()->window();
|
enter = m_popup->m_xdgSurface->window()->window();
|
||||||
|
|
||||||
@@ -2778,7 +2664,7 @@ index 94ea573e..9c6cbb81 100644
|
|||||||
|
|
||||||
void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial)
|
void QWaylandXdgSurface::xdg_surface_configure(uint32_t serial)
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
|
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
|
||||||
index 96785205..4b518f0a 100644
|
index 96785205f..4b518f0a1 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
|
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
|
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell_p.h
|
||||||
@@ -131,14 +131,15 @@ private:
|
@@ -131,14 +131,15 @@ private:
|
||||||
@@ -2800,7 +2686,7 @@ index 96785205..4b518f0a 100644
|
|||||||
};
|
};
|
||||||
|
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
|
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
|
||||||
index 8769d971..da0dd6a7 100644
|
index 8769d9716..da0dd6a72 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
|
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
|
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
|
||||||
@@ -69,20 +69,6 @@ QWaylandShellSurface *QWaylandXdgShellIntegration::createShellSurface(QWaylandWi
|
@@ -69,20 +69,6 @@ QWaylandShellSurface *QWaylandXdgShellIntegration::createShellSurface(QWaylandWi
|
||||||
@@ -2825,7 +2711,7 @@ index 8769d971..da0dd6a7 100644
|
|||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
|
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
|
||||||
index b6caa6c9..2f929f98 100644
|
index b6caa6c95..2f929f98a 100644
|
||||||
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
|
--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
|
||||||
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
|
+++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
|
||||||
@@ -65,7 +65,6 @@ public:
|
@@ -65,7 +65,6 @@ public:
|
||||||
@@ -2837,7 +2723,7 @@ index b6caa6c9..2f929f98 100644
|
|||||||
private:
|
private:
|
||||||
QScopedPointer<QWaylandXdgShell> m_xdgShell;
|
QScopedPointer<QWaylandXdgShell> m_xdgShell;
|
||||||
diff --git a/src/shared/qwaylandmimehelper.cpp b/src/shared/qwaylandmimehelper.cpp
|
diff --git a/src/shared/qwaylandmimehelper.cpp b/src/shared/qwaylandmimehelper.cpp
|
||||||
index c5266ab3..e2fe1928 100644
|
index c5266ab3e..e2fe19282 100644
|
||||||
--- a/src/shared/qwaylandmimehelper.cpp
|
--- a/src/shared/qwaylandmimehelper.cpp
|
||||||
+++ b/src/shared/qwaylandmimehelper.cpp
|
+++ b/src/shared/qwaylandmimehelper.cpp
|
||||||
@@ -60,7 +60,7 @@ QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString &
|
@@ -60,7 +60,7 @@ QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString &
|
||||||
@@ -2850,7 +2736,7 @@ index c5266ab3..e2fe1928 100644
|
|||||||
fmt = imgFmt;
|
fmt = imgFmt;
|
||||||
}
|
}
|
||||||
diff --git a/tests/auto/client/datadevicev1/tst_datadevicev1.cpp b/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
|
diff --git a/tests/auto/client/datadevicev1/tst_datadevicev1.cpp b/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
|
||||||
index 1568b3b9..067410d0 100644
|
index 1568b3b96..067410d08 100644
|
||||||
--- a/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
|
--- a/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
|
||||||
+++ b/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
|
+++ b/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
|
||||||
@@ -35,7 +35,7 @@
|
@@ -35,7 +35,7 @@
|
||||||
@@ -2863,7 +2749,7 @@ index 1568b3b9..067410d0 100644
|
|||||||
class DataDeviceCompositor : public DefaultCompositor {
|
class DataDeviceCompositor : public DefaultCompositor {
|
||||||
public:
|
public:
|
||||||
diff --git a/tests/auto/client/seatv5/tst_seatv5.cpp b/tests/auto/client/seatv5/tst_seatv5.cpp
|
diff --git a/tests/auto/client/seatv5/tst_seatv5.cpp b/tests/auto/client/seatv5/tst_seatv5.cpp
|
||||||
index 9312c2e5..2ea382f1 100644
|
index 9312c2e5d..2ea382f1c 100644
|
||||||
--- a/tests/auto/client/seatv5/tst_seatv5.cpp
|
--- a/tests/auto/client/seatv5/tst_seatv5.cpp
|
||||||
+++ b/tests/auto/client/seatv5/tst_seatv5.cpp
|
+++ b/tests/auto/client/seatv5/tst_seatv5.cpp
|
||||||
@@ -73,6 +73,7 @@ private slots:
|
@@ -73,6 +73,7 @@ private slots:
|
||||||
@@ -2910,7 +2796,7 @@ index 9312c2e5..2ea382f1 100644
|
|||||||
QCOMPOSITOR_TEST_MAIN(tst_seatv5)
|
QCOMPOSITOR_TEST_MAIN(tst_seatv5)
|
||||||
#include "tst_seatv5.moc"
|
#include "tst_seatv5.moc"
|
||||||
diff --git a/tests/auto/client/shared/coreprotocol.cpp b/tests/auto/client/shared/coreprotocol.cpp
|
diff --git a/tests/auto/client/shared/coreprotocol.cpp b/tests/auto/client/shared/coreprotocol.cpp
|
||||||
index 0d988521..53e12291 100644
|
index 0d9885216..53e122910 100644
|
||||||
--- a/tests/auto/client/shared/coreprotocol.cpp
|
--- a/tests/auto/client/shared/coreprotocol.cpp
|
||||||
+++ b/tests/auto/client/shared/coreprotocol.cpp
|
+++ b/tests/auto/client/shared/coreprotocol.cpp
|
||||||
@@ -185,6 +185,8 @@ void Output::output_bind_resource(QtWaylandServer::wl_output::Resource *resource
|
@@ -185,6 +185,8 @@ void Output::output_bind_resource(QtWaylandServer::wl_output::Resource *resource
|
||||||
@@ -2937,7 +2823,7 @@ index 0d988521..53e12291 100644
|
|||||||
{
|
{
|
||||||
auto serial = m_seat->m_compositor->nextSerial();
|
auto serial = m_seat->m_compositor->nextSerial();
|
||||||
diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h
|
diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h
|
||||||
index a1af137a..00c439e1 100644
|
index a1af137a1..00c439e18 100644
|
||||||
--- a/tests/auto/client/shared/coreprotocol.h
|
--- a/tests/auto/client/shared/coreprotocol.h
|
||||||
+++ b/tests/auto/client/shared/coreprotocol.h
|
+++ b/tests/auto/client/shared/coreprotocol.h
|
||||||
@@ -158,7 +158,7 @@ class WlCompositor : public Global, public QtWaylandServer::wl_compositor
|
@@ -158,7 +158,7 @@ class WlCompositor : public Global, public QtWaylandServer::wl_compositor
|
||||||
@@ -2968,7 +2854,7 @@ index a1af137a..00c439e1 100644
|
|||||||
Seat *m_seat = nullptr;
|
Seat *m_seat = nullptr;
|
||||||
};
|
};
|
||||||
diff --git a/tests/auto/client/shared_old/mockcompositor.cpp b/tests/auto/client/shared_old/mockcompositor.cpp
|
diff --git a/tests/auto/client/shared_old/mockcompositor.cpp b/tests/auto/client/shared_old/mockcompositor.cpp
|
||||||
index a415cbf5..b1d3d07d 100644
|
index a415cbf56..b1d3d07d5 100644
|
||||||
--- a/tests/auto/client/shared_old/mockcompositor.cpp
|
--- a/tests/auto/client/shared_old/mockcompositor.cpp
|
||||||
+++ b/tests/auto/client/shared_old/mockcompositor.cpp
|
+++ b/tests/auto/client/shared_old/mockcompositor.cpp
|
||||||
@@ -342,7 +342,7 @@ Compositor::Compositor(MockCompositor *mockCompositor)
|
@@ -342,7 +342,7 @@ Compositor::Compositor(MockCompositor *mockCompositor)
|
||||||
@@ -2981,7 +2867,7 @@ index a415cbf5..b1d3d07d 100644
|
|||||||
m_data_device_manager.reset(new DataDeviceManager(this, m_display));
|
m_data_device_manager.reset(new DataDeviceManager(this, m_display));
|
||||||
|
|
||||||
diff --git a/tests/auto/client/shared_old/mocksurface.cpp b/tests/auto/client/shared_old/mocksurface.cpp
|
diff --git a/tests/auto/client/shared_old/mocksurface.cpp b/tests/auto/client/shared_old/mocksurface.cpp
|
||||||
index e9df5f90..c3246e4a 100644
|
index e9df5f907..c3246e4a8 100644
|
||||||
--- a/tests/auto/client/shared_old/mocksurface.cpp
|
--- a/tests/auto/client/shared_old/mocksurface.cpp
|
||||||
+++ b/tests/auto/client/shared_old/mocksurface.cpp
|
+++ b/tests/auto/client/shared_old/mocksurface.cpp
|
||||||
@@ -125,6 +125,16 @@ void Surface::surface_damage(Resource *resource,
|
@@ -125,6 +125,16 @@ void Surface::surface_damage(Resource *resource,
|
||||||
@@ -3002,7 +2888,7 @@ index e9df5f90..c3246e4a 100644
|
|||||||
uint32_t callback)
|
uint32_t callback)
|
||||||
{
|
{
|
||||||
diff --git a/tests/auto/client/shared_old/mocksurface.h b/tests/auto/client/shared_old/mocksurface.h
|
diff --git a/tests/auto/client/shared_old/mocksurface.h b/tests/auto/client/shared_old/mocksurface.h
|
||||||
index 949dc23d..d176837e 100644
|
index 949dc23dd..d176837e7 100644
|
||||||
--- a/tests/auto/client/shared_old/mocksurface.h
|
--- a/tests/auto/client/shared_old/mocksurface.h
|
||||||
+++ b/tests/auto/client/shared_old/mocksurface.h
|
+++ b/tests/auto/client/shared_old/mocksurface.h
|
||||||
@@ -65,6 +65,8 @@ protected:
|
@@ -65,6 +65,8 @@ protected:
|
||||||
@@ -3015,7 +2901,7 @@ index 949dc23d..d176837e 100644
|
|||||||
uint32_t callback) override;
|
uint32_t callback) override;
|
||||||
void surface_commit(Resource *resource) override;
|
void surface_commit(Resource *resource) override;
|
||||||
diff --git a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
|
diff --git a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
|
||||||
index 80429608..68e8d77a 100644
|
index 20f762e06..2a0cad1de 100644
|
||||||
--- a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
|
--- a/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
|
||||||
+++ b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
|
+++ b/tests/auto/client/xdgoutput/tst_xdgoutput.cpp
|
||||||
@@ -55,6 +55,7 @@ private slots:
|
@@ -55,6 +55,7 @@ private slots:
|
||||||
@@ -3027,7 +2913,7 @@ index 80429608..68e8d77a 100644
|
|||||||
|
|
||||||
void tst_xdgoutput::cleanup()
|
void tst_xdgoutput::cleanup()
|
||||||
@@ -134,5 +135,39 @@ void tst_xdgoutput::changeGeometry()
|
@@ -134,5 +135,39 @@ void tst_xdgoutput::changeGeometry()
|
||||||
exec([=] { remove(output(1)); });
|
exec([&] { remove(output(1)); });
|
||||||
}
|
}
|
||||||
|
|
||||||
+void tst_xdgoutput::outputCreateEnterRace()
|
+void tst_xdgoutput::outputCreateEnterRace()
|
||||||
@@ -3067,7 +2953,7 @@ index 80429608..68e8d77a 100644
|
|||||||
QCOMPOSITOR_TEST_MAIN(tst_xdgoutput)
|
QCOMPOSITOR_TEST_MAIN(tst_xdgoutput)
|
||||||
#include "tst_xdgoutput.moc"
|
#include "tst_xdgoutput.moc"
|
||||||
diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
||||||
index 2277bbb8..afbeef53 100644
|
index 1c23728b2..f2181fd69 100644
|
||||||
--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
||||||
+++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
+++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp
|
||||||
@@ -31,6 +31,7 @@
|
@@ -31,6 +31,7 @@
|
||||||
@@ -3109,7 +2995,7 @@ index 2277bbb8..afbeef53 100644
|
|||||||
+ Qt::WindowActive)); // Just make sure it eventually get's set correctly
|
+ Qt::WindowActive)); // Just make sure it eventually get's set correctly
|
||||||
|
|
||||||
const QSize screenSize(640, 480);
|
const QSize screenSize(640, 480);
|
||||||
const uint maximizedSerial = exec([=] {
|
const uint maximizedSerial = exec([&] {
|
||||||
@@ -186,6 +192,7 @@ void tst_xdgshell::configureStates()
|
@@ -186,6 +192,7 @@ void tst_xdgshell::configureStates()
|
||||||
QCOMPARE(window.windowStates(), Qt::WindowNoState);
|
QCOMPARE(window.windowStates(), Qt::WindowNoState);
|
||||||
QCOMPARE(window.frameGeometry().size(), windowedSize);
|
QCOMPARE(window.frameGeometry().size(), windowedSize);
|
||||||
|
|||||||
Reference in New Issue
Block a user