ALT Linux Bugzilla
– Attachment 20588 Details for
Bug 57684
plasmashell падает при работе с буфером обмена если установлен wl-clipboard
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
исправленный патч
alt-fix-multiple-clipboard-insertions.patch (text/plain), 2.04 KB, created by
alekseevam@basealt.ru
on 2026-01-29 16:33:21 MSK
(
hide
)
Description:
исправленный патч
Filename:
MIME Type:
Creator:
alekseevam@basealt.ru
Created:
2026-01-29 16:33:21 MSK
Size:
2.04 KB
patch
obsolete
>diff --git a/src/systemclipboard/waylandclipboard.cpp b/src/systemclipboard/waylandclipboard.cpp >index b90bc3c..e05a558 100644 >--- a/src/systemclipboard/waylandclipboard.cpp >+++ b/src/systemclipboard/waylandclipboard.cpp >@@ -311,6 +311,7 @@ public: > > Q_SIGNALS: > void cancelled(); >+ void dataSendingCompleted(); > > protected: > void ext_data_control_source_v1_send(const QString &mime_type, int32_t fd) override; >@@ -393,6 +394,8 @@ void DataControlSource::ext_data_control_source_v1_send(const QString &mime_type > if (written != ba.size()) { > qWarning() << "Failed to send all clipobard data; sent" << written << "bytes out of" << ba.size(); > } >+ >+ Q_EMIT dataSendingCompleted(); > } > > void DataControlSource::ext_data_control_source_v1_cancelled() >@@ -646,15 +649,40 @@ void WaylandClipboard::setMimeData(QMimeData *mime, QClipboard::Mode mode) > return; > } > >+ auto waylandApp = qGuiApp->nativeInterface<QNativeInterface::QWaylandApplication>(); >+ auto display = waylandApp->display(); >+ >+ QEventLoop waitLoop; >+ QTimer requestTimer; >+ requestTimer.setInterval(200); >+ >+ QTimer timeoutTimer; >+ timeoutTimer.setSingleShot(true); >+ > auto source = std::make_unique<DataControlSource>(m_manager->create_data_source(), mime); > source->moveToThread(m_thread.get()); >+ connect(source.get(), &DataControlSource::dataSendingCompleted, &waitLoop, &QEventLoop::quit); >+ > if (mode == QClipboard::Clipboard) { > m_device->setSelection(std::move(source)); > } else if (mode == QClipboard::Selection) { > m_device->setPrimarySelection(std::move(source)); > } >-} > >+ connect(&requestTimer, &QTimer::timeout, [display]{ >+ wl_display_dispatch_pending(display); >+ wl_display_flush(display); >+ }); >+ >+ connect(&timeoutTimer, &QTimer::timeout, [&waitLoop]{ >+ waitLoop.quit(); >+ }); >+ >+ timeoutTimer.start(5000); >+ requestTimer.start(); >+ waitLoop.exec(); >+ requestTimer.stop(); >+} > void WaylandClipboard::clear(QClipboard::Mode mode) > { > if (!m_device) {
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 57684
: 20588