Clear clipboard only if copied text is still present.

Closes #198
This commit is contained in:
Felix Geyer 2014-05-26 18:41:48 +02:00
parent 916ab99d62
commit 7137990a21
2 changed files with 10 additions and 2 deletions

View file

@ -51,6 +51,7 @@ void Clipboard::setText(const QString& text)
if (config()->get("security/clearclipboard").toBool()) { if (config()->get("security/clearclipboard").toBool()) {
int timeout = config()->get("security/clearclipboardtimeout").toInt(); int timeout = config()->get("security/clearclipboardtimeout").toInt();
if (timeout > 0) { if (timeout > 0) {
m_lastCopied = text;
m_timer->start(timeout * 1000); m_timer->start(timeout * 1000);
} }
} }
@ -65,8 +66,12 @@ void Clipboard::clearClipboard()
return; return;
} }
if (clipboard->text(QClipboard::Clipboard) == m_lastCopied) {
clipboard->clear(QClipboard::Clipboard); clipboard->clear(QClipboard::Clipboard);
if (clipboard->supportsSelection()) { }
if (clipboard->supportsSelection()
&& (clipboard->text(QClipboard::Selection) == m_lastCopied)) {
clipboard->clear(QClipboard::Selection); clipboard->clear(QClipboard::Selection);
} }
@ -74,6 +79,8 @@ void Clipboard::clearClipboard()
QDBusMessage message = QDBusMessage::createMethodCall("org.kde.klipper", "/klipper", "", "clearClipboardHistory"); QDBusMessage message = QDBusMessage::createMethodCall("org.kde.klipper", "/klipper", "", "clearClipboardHistory");
QDBusConnection::sessionBus().send(message); QDBusConnection::sessionBus().send(message);
#endif #endif
m_lastCopied.clear();
} }
void Clipboard::cleanup() void Clipboard::cleanup()

View file

@ -43,6 +43,7 @@ private:
static Clipboard* m_instance; static Clipboard* m_instance;
QTimer* m_timer; QTimer* m_timer;
QString m_lastCopied;
}; };
inline Clipboard* clipboard() { inline Clipboard* clipboard() {