diff --git a/klipper/klipper.cpp b/klipper/klipper.cpp index e3a3c7ed7..a25638241 100644 --- a/klipper/klipper.cpp +++ b/klipper/klipper.cpp @@ -737,7 +737,7 @@ void Klipper::checkClipData( bool selectionMode ) if ( top ) { // keep old clipboard after someone set it to null qCDebug(KLIPPER_LOG) << "Resetting clipboard (Prevent empty clipboard)"; - setClipboard( *top, selectionMode ? Selection : Clipboard ); + setClipboard( *top, selectionMode ? Selection : Clipboard, true); } return; } else if (clipEmpty) { @@ -791,7 +791,7 @@ void Klipper::checkClipData( bool selectionMode ) } } -void Klipper::setClipboard( const HistoryItem& item, int mode ) +void Klipper::setClipboard( const HistoryItem& item, int mode , bool daveYolo) { Ignore lock( m_locklevel ); @@ -799,11 +799,15 @@ void Klipper::setClipboard( const HistoryItem& item, int mode ) if ( mode & Selection ) { qCDebug(KLIPPER_LOG) << "Setting selection to <" << item.text() << ">"; - m_clip->setMimeData( item.mimeData(), QClipboard::Selection ); + m_clip->setMimeData( item.mimeData(), QClipboard::Selection ); } if ( mode & Clipboard ) { qCDebug(KLIPPER_LOG) << "Setting clipboard to <" << item.text() << ">"; - m_clip->setMimeData( item.mimeData(), QClipboard::Clipboard ); + QMimeData *mimeData = item.mimeData(); + if (daveYolo) { + mimeData->setData(QStringLiteral("application/x-kde-onlyReplaceEmpty"), "1"); + } + m_clip->setMimeData( mimeData, QClipboard::Clipboard ); } } diff --git a/klipper/klipper.h b/klipper/klipper.h index 44ac5c293..6a2e03259 100644 --- a/klipper/klipper.h +++ b/klipper/klipper.h @@ -124,7 +124,7 @@ protected: */ QSharedPointer applyClipChanges( const QMimeData* data ); - void setClipboard( const HistoryItem& item, int mode ); + void setClipboard( const HistoryItem& item, int mode , bool daveYolo = false); bool ignoreClipboardChanges() const; KSharedConfigPtr config() const { return m_config; }