diff options
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaclipboard.h | 8 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaclipboard.mm | 16 |
2 files changed, 21 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaclipboard.h b/src/plugins/platforms/cocoa/qcocoaclipboard.h index 5ebdad79f1..2c34ef9278 100644 --- a/src/plugins/platforms/cocoa/qcocoaclipboard.h +++ b/src/plugins/platforms/cocoa/qcocoaclipboard.h @@ -40,8 +40,10 @@ QT_BEGIN_NAMESPACE -class QCocoaClipboard : public QPlatformClipboard +class QCocoaClipboard : public QObject, public QPlatformClipboard { + Q_OBJECT + public: QCocoaClipboard(); @@ -49,6 +51,10 @@ public: void setMimeData(QMimeData *data, QClipboard::Mode mode = QClipboard::Clipboard); bool supportsMode(QClipboard::Mode mode) const; bool ownsMode(QClipboard::Mode mode) const; + +private Q_SLOTS: + void handleApplicationStateChanged(Qt::ApplicationState state); + protected: QMacPasteboard *pasteboardForMode(QClipboard::Mode mode) const; diff --git a/src/plugins/platforms/cocoa/qcocoaclipboard.mm b/src/plugins/platforms/cocoa/qcocoaclipboard.mm index f6c424d4fd..1a23da8a8e 100644 --- a/src/plugins/platforms/cocoa/qcocoaclipboard.mm +++ b/src/plugins/platforms/cocoa/qcocoaclipboard.mm @@ -40,7 +40,6 @@ ****************************************************************************/ #include "qcocoaclipboard.h" -#include "qmacclipboard.h" QT_BEGIN_NAMESPACE @@ -48,7 +47,7 @@ QCocoaClipboard::QCocoaClipboard() :m_clipboard(new QMacPasteboard(kPasteboardClipboard, QMacInternalPasteboardMime::MIME_CLIP)) ,m_find(new QMacPasteboard(kPasteboardFind, QMacInternalPasteboardMime::MIME_CLIP)) { - + connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QCocoaClipboard::handleApplicationStateChanged); } QMimeData *QCocoaClipboard::mimeData(QClipboard::Mode mode) @@ -94,4 +93,17 @@ QMacPasteboard *QCocoaClipboard::pasteboardForMode(QClipboard::Mode mode) const return 0; } +void QCocoaClipboard::handleApplicationStateChanged(Qt::ApplicationState state) +{ + if (state != Qt::ApplicationActive) + return; + + if (m_clipboard->sync()) + emitChanged(QClipboard::Clipboard); + if (m_find->sync()) + emitChanged(QClipboard::FindBuffer); +} + +#include "moc_qcocoaclipboard.cpp" + QT_END_NAMESPACE |