diff options
author | Dyami Caliri <dyami@dragonframe.com> | 2014-09-15 15:25:33 -0700 |
---|---|---|
committer | Dyami Caliri <dyami@dragonframe.com> | 2014-10-18 18:35:49 +0200 |
commit | 1cfd45782638b8266d46af289de5abdd0371fc27 (patch) | |
tree | 7da21ed69c7bd33285981c1c10400135e4263bc5 /src/plugins | |
parent | cd512cbcab25a96519c540de062959961877fbc9 (diff) |
OS X: Emit QClipboard::dataChanged when activating application
The QClipboard documentation states that on OS X it will emit
dataChanged() when activating the application, if the system clipboard
had changed. It wasn't doing this in Qt5.
Task-number: QTBUG-34941
Change-Id: I7f34e757876757691f0a6c94dd2ae76a60146291
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'src/plugins')
-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 |