Browse Source

chatgui: clear clipboard before setText for reliable copy on Linux

topo_upd
Evgeny 3 months ago
parent
commit
ef27633a88
  1. 2
      tools/chatgui/src/chatview.cpp
  2. 5
      tools/chatgui/src/invitedialog.cpp

2
tools/chatgui/src/chatview.cpp

@ -133,6 +133,7 @@ void ChatView::copySelection() {
QString text = idx.data(MsgTextRole).toString(); QString text = idx.data(MsgTextRole).toString();
if (m_textSel.startChar >= 0 && m_textSel.endChar > m_textSel.startChar) if (m_textSel.startChar >= 0 && m_textSel.endChar > m_textSel.startChar)
text = text.mid(m_textSel.startChar, 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); QApplication::clipboard()->setText(text);
} else { } else {
QString r; QString r;
@ -145,6 +146,7 @@ void ChatView::copySelection() {
r += idx.data(MsgAuthorRole).toString() + ": "; r += idx.data(MsgAuthorRole).toString() + ": ";
r += idx.data(MsgTextRole).toString(); r += idx.data(MsgTextRole).toString();
} }
QApplication::clipboard()->clear(QClipboard::Clipboard);
QApplication::clipboard()->setText(r); QApplication::clipboard()->setText(r);
} }
} }

5
tools/chatgui/src/invitedialog.cpp

@ -27,9 +27,12 @@ InviteDialog::InviteDialog(const QString& link, QWidget* parent)
auto *copyBtn = new QPushButton("Скопировать", this); auto *copyBtn = new QPushButton("Скопировать", this);
connect(copyBtn, &QPushButton::clicked, this, [this, linkEdit]() { connect(copyBtn, &QPushButton::clicked, this, [this, linkEdit]() {
QClipboard* cb = QApplication::clipboard(); QClipboard* cb = QApplication::clipboard();
cb->clear(QClipboard::Clipboard);
cb->setText(m_link, QClipboard::Clipboard); cb->setText(m_link, QClipboard::Clipboard);
if (cb->supportsSelection()) if (cb->supportsSelection()) {
cb->clear(QClipboard::Selection);
cb->setText(m_link, QClipboard::Selection); cb->setText(m_link, QClipboard::Selection);
}
linkEdit->setFocus(); linkEdit->setFocus();
}); });
btnLayout->addWidget(copyBtn); btnLayout->addWidget(copyBtn);

Loading…
Cancel
Save