summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorDyami Caliri <dyami@dragonframe.com>2014-09-15 15:25:33 -0700
committerDyami Caliri <dyami@dragonframe.com>2014-10-18 18:35:49 +0200
commit1cfd45782638b8266d46af289de5abdd0371fc27 (patch)
tree7da21ed69c7bd33285981c1c10400135e4263bc5 /src/plugins
parentcd512cbcab25a96519c540de062959961877fbc9 (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.h8
-rw-r--r--src/plugins/platforms/cocoa/qcocoaclipboard.mm16
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