diff --git a/src/dfm-base/utils/clipboard.cpp b/src/dfm-base/utils/clipboard.cpp index b0824fb3d7..a9dd15c5fc 100644 --- a/src/dfm-base/utils/clipboard.cpp +++ b/src/dfm-base/utils/clipboard.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -32,6 +33,7 @@ static QList clipboardFileUrls; static QMutex clipboardFileUrlsMutex; static QAtomicInt remoteCurrentCount = 0; static ClipBoard::ClipboardAction clipboardAction = ClipBoard::kUnknownAction; +static std::atomic_bool canReadClipboard { true }; static constexpr char kUserIdKey[] = "userId"; static constexpr char kRemoteCopyKey[] = "uos/remote-copy"; @@ -40,6 +42,8 @@ static constexpr char kRemoteAssistanceCopyKey[] = "uos/remote-copied-files"; void onClipboardDataChanged() { + if (!canReadClipboard) + return; QMutexLocker lk(&clipboardFileUrlsMutex); clipboardFileUrls.clear(); @@ -92,6 +96,14 @@ ClipBoard::ClipBoard(QObject *parent) onClipboardDataChanged(); emit clipboardDataChanged(); }); + + connect(&FileManagerWindowsManager::instance(), + &FileManagerWindowsManager::windowCreated, this, []{ + GlobalData::canReadClipboard = true; + }); + connect(&FileManagerWindowsManager::instance(), &FileManagerWindowsManager::lastWindowClosed, this, []{ + GlobalData::canReadClipboard = false; + }); } ClipBoard *ClipBoard::instance() diff --git a/src/dfm-base/utils/windowutils.h b/src/dfm-base/utils/windowutils.h index e9eda9399a..81453ec406 100644 --- a/src/dfm-base/utils/windowutils.h +++ b/src/dfm-base/utils/windowutils.h @@ -25,6 +25,7 @@ class WindowUtils static bool keyCtrlIsPressed(); static bool keyAltIsPressed(); + static QScreen *cursorScreen(); };