/src/qtbase/src/gui/kernel/qplatformclipboard.cpp
Line | Count | Source |
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 | | #include "qplatformclipboard.h" |
4 | | |
5 | | #ifndef QT_NO_CLIPBOARD |
6 | | |
7 | | #include <QtGui/private/qguiapplication_p.h> |
8 | | #include <QtCore/qmimedata.h> |
9 | | |
10 | | QT_BEGIN_NAMESPACE |
11 | | |
12 | | class QClipboardData |
13 | | { |
14 | | public: |
15 | | QClipboardData(); |
16 | | ~QClipboardData(); |
17 | | |
18 | | void setSource(QMimeData* s) |
19 | 0 | { |
20 | 0 | if (s == src) |
21 | 0 | return; |
22 | 0 | delete src; |
23 | 0 | src = s; |
24 | 0 | } |
25 | | QMimeData* source() |
26 | 0 | { return src; } |
27 | | |
28 | | private: |
29 | | QMimeData* src; |
30 | | }; |
31 | | |
32 | | QClipboardData::QClipboardData() |
33 | 0 | { |
34 | 0 | src = nullptr; |
35 | 0 | } |
36 | | |
37 | | QClipboardData::~QClipboardData() |
38 | 0 | { |
39 | 0 | delete src; |
40 | 0 | } |
41 | | |
42 | | Q_GLOBAL_STATIC(QClipboardData,q_clipboardData); |
43 | | |
44 | | /*! |
45 | | \class QPlatformClipboard |
46 | | \since 5.0 |
47 | | \internal |
48 | | \preliminary |
49 | | \ingroup qpa |
50 | | |
51 | | \brief The QPlatformClipboard class provides an abstraction for the system clipboard. |
52 | | */ |
53 | | |
54 | | QPlatformClipboard::~QPlatformClipboard() |
55 | 0 | { |
56 | |
|
57 | 0 | } |
58 | | |
59 | | QMimeData *QPlatformClipboard::mimeData(QClipboard::Mode mode) |
60 | 0 | { |
61 | | //we know its clipboard |
62 | 0 | Q_UNUSED(mode); |
63 | 0 | return q_clipboardData()->source(); |
64 | 0 | } |
65 | | |
66 | | void QPlatformClipboard::setMimeData(QMimeData *data, QClipboard::Mode mode) |
67 | 0 | { |
68 | | //we know its clipboard |
69 | 0 | Q_UNUSED(mode); |
70 | 0 | q_clipboardData()->setSource(data); |
71 | |
|
72 | 0 | emitChanged(mode); |
73 | 0 | } |
74 | | |
75 | | bool QPlatformClipboard::supportsMode(QClipboard::Mode mode) const |
76 | 0 | { |
77 | 0 | return mode == QClipboard::Clipboard; |
78 | 0 | } |
79 | | |
80 | | bool QPlatformClipboard::ownsMode(QClipboard::Mode mode) const |
81 | 0 | { |
82 | 0 | Q_UNUSED(mode); |
83 | 0 | return false; |
84 | 0 | } |
85 | | |
86 | | void QPlatformClipboard::emitChanged(QClipboard::Mode mode) |
87 | 0 | { |
88 | 0 | if (!QGuiApplicationPrivate::is_app_closing) // QTBUG-39317, prevent emission when closing down. |
89 | 0 | QGuiApplication::clipboard()->emitChanged(mode); |
90 | 0 | } |
91 | | |
92 | | QT_END_NAMESPACE |
93 | | |
94 | | #endif //QT_NO_CLIPBOARD |