From ef27633a8871ff389003d9bab3da470244aab23f Mon Sep 17 00:00:00 2001 From: Evgeny Date: Sat, 18 Jul 2026 13:53:01 +0300 Subject: [PATCH] chatgui: clear clipboard before setText for reliable copy on Linux --- tools/chatgui/src/chatview.cpp | 2 ++ tools/chatgui/src/invitedialog.cpp | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/chatgui/src/chatview.cpp b/tools/chatgui/src/chatview.cpp index cd8a1a8c..daab56fb 100644 --- a/tools/chatgui/src/chatview.cpp +++ b/tools/chatgui/src/chatview.cpp @@ -133,6 +133,7 @@ void ChatView::copySelection() { QString text = idx.data(MsgTextRole).toString(); if (m_textSel.startChar >= 0 && m_textSel.endChar > m_textSel.startChar) text = text.mid(m_textSel.startChar, m_textSel.endChar - m_textSel.startChar); + QApplication::clipboard()->clear(QClipboard::Clipboard); QApplication::clipboard()->setText(text); } else { QString r; @@ -145,6 +146,7 @@ void ChatView::copySelection() { r += idx.data(MsgAuthorRole).toString() + ": "; r += idx.data(MsgTextRole).toString(); } + QApplication::clipboard()->clear(QClipboard::Clipboard); QApplication::clipboard()->setText(r); } } diff --git a/tools/chatgui/src/invitedialog.cpp b/tools/chatgui/src/invitedialog.cpp index 3fb48255..4685f791 100644 --- a/tools/chatgui/src/invitedialog.cpp +++ b/tools/chatgui/src/invitedialog.cpp @@ -27,9 +27,12 @@ InviteDialog::InviteDialog(const QString& link, QWidget* parent) auto *copyBtn = new QPushButton("Скопировать", this); connect(copyBtn, &QPushButton::clicked, this, [this, linkEdit]() { QClipboard* cb = QApplication::clipboard(); + cb->clear(QClipboard::Clipboard); cb->setText(m_link, QClipboard::Clipboard); - if (cb->supportsSelection()) + if (cb->supportsSelection()) { + cb->clear(QClipboard::Selection); cb->setText(m_link, QClipboard::Selection); + } linkEdit->setFocus(); }); btnLayout->addWidget(copyBtn);