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