Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcocoaclipboard.mm
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
6
7#include <QtGui/qguiapplication.h>
8#include <QtGui/qutimimeconverter.h>
9
10#ifndef QT_NO_CLIPBOARD
11
13
14QCocoaClipboard::QCocoaClipboard()
15 :m_clipboard(new QMacPasteboard(kPasteboardClipboard, QUtiMimeConverter::HandlerScopeFlag::Clipboard))
16 ,m_find(new QMacPasteboard(kPasteboardFind, QUtiMimeConverter::HandlerScopeFlag::Clipboard))
17{
18 connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QCocoaClipboard::handleApplicationStateChanged);
19}
20
21QMimeData *QCocoaClipboard::mimeData(QClipboard::Mode mode)
22{
23 if (QMacPasteboard *pasteBoard = pasteboardForMode(mode)) {
24 pasteBoard->sync();
25 return pasteBoard->mimeData();
26 }
27 return nullptr;
28}
29
30void QCocoaClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode)
31{
32 if (QMacPasteboard *pasteBoard = pasteboardForMode(mode)) {
33 if (!data) {
34 pasteBoard->clear();
35 }
36
37 pasteBoard->sync();
38 pasteBoard->setMimeData(data, QMacPasteboard::LazyRequest);
39 emitChanged(mode);
40 }
41}
42
43bool QCocoaClipboard::supportsMode(QClipboard::Mode mode) const
44{
45 return (mode == QClipboard::Clipboard || mode == QClipboard::FindBuffer);
46}
47
48bool QCocoaClipboard::ownsMode(QClipboard::Mode mode) const
49{
50 Q_UNUSED(mode);
51 return false;
52}
53
54QMacPasteboard *QCocoaClipboard::pasteboardForMode(QClipboard::Mode mode) const
55{
56 if (mode == QClipboard::Clipboard)
57 return m_clipboard.data();
58 else if (mode == QClipboard::FindBuffer)
59 return m_find.data();
60 else
61 return nullptr;
62}
63
64void QCocoaClipboard::handleApplicationStateChanged(Qt::ApplicationState state)
65{
66 if (state != Qt::ApplicationActive)
67 return;
68
69 if (m_clipboard->sync())
70 emitChanged(QClipboard::Clipboard);
71 if (m_find->sync())
72 emitChanged(QClipboard::FindBuffer);
73}
74
75QT_END_NAMESPACE
76
77#include "moc_qcocoaclipboard.cpp"
78
79#endif // QT_NO_CLIPBOARD
bool supportsMode(QClipboard::Mode mode) const override
QMacPasteboard * pasteboardForMode(QClipboard::Mode mode) const
bool ownsMode(QClipboard::Mode mode) const override
QMimeData * mimeData(QClipboard::Mode mode=QClipboard::Clipboard) override
void setMimeData(QMimeData *data, QClipboard::Mode mode=QClipboard::Clipboard) override
bool sync() const