Commit d0a5fb07 authored by David Edmundson's avatar David Edmundson
Browse files

[xwl] Create a new datasource on offer changes

Offers shoul be set on a source before data_device.set_selection. Doing
so afterwards appears to be against the spec and as such we may not pass
the update to wayland clients / klipper.


(cherry picked from commit bc6eba61)
parent 9ce14c04
......@@ -167,22 +167,16 @@ void Clipboard::x11OffersChanged(const QStringList &added, const QStringList &re
const Mimes offers = source->offers();
if (!offers.isEmpty()) {
if (!source->dataSource() || !removed.isEmpty()) {
// create new Wl DataSource if there is none or when types
// were removed (Wl Data Sources can only add types)
KWayland::Client::DataDeviceManager *dataDeviceManager =
waylandServer()->internalDataDeviceManager();
KWayland::Client::DataSource *dataSource =
dataDeviceManager->createDataSource(source);
// also offers directly the currently available types
source->setDataSource(dataSource);
DataBridge::self()->dataDevice()->setSelection(0, dataSource);
} else if (auto *dataSource = source->dataSource()) {
for (const QString &mime : added) {
dataSource->offer(mime);
}
}
// create new Wl DataSource if there is none or when types
// were removed (Wl Data Sources can only add types)
KWayland::Client::DataDeviceManager *dataDeviceManager =
waylandServer()->internalDataDeviceManager();
KWayland::Client::DataSource *dataSource =
dataDeviceManager->createDataSource(source);
// also offers directly the currently available types
source->setDataSource(dataSource);
DataBridge::self()->dataDevice()->setSelection(0, dataSource);
} else {
KWaylandServer::AbstractDataSource *currentSelection = waylandServer()->seat()->selection();
if (!ownsSelection(currentSelection)) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment