Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qdnd.cpp
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
5
#
include
"qdnd_p.h"
6
7
#
include
"qguiapplication.h"
8
#
include
<
ctype
.
h
>
9
#
include
<
qpa
/
qplatformdrag
.
h
>
10
#
include
<
qpa
/
qplatformintegration
.
h
>
11
#
include
<
private
/
qguiapplication_p
.
h
>
12
13
QT_BEGIN_NAMESPACE
14
15
// the universe's only drag manager
16
QDragManager
*QDragManager::m_instance =
nullptr
;
17
18
QDragManager::QDragManager()
19
: QObject(
qApp
), m_currentDropTarget(
nullptr
),
20
m_platformDrag(QGuiApplicationPrivate::platformIntegration()->drag()),
21
m_object(
nullptr
)
22
{
23
Q_ASSERT(!m_instance);
24
}
25
26
QDragManager::~QDragManager()
27
{
28
m_instance =
nullptr
;
29
}
30
31
QDragManager *QDragManager::self()
32
{
33
if
(!m_instance && !QGuiApplication::closingDown())
34
m_instance =
new
QDragManager;
35
return
m_instance;
36
}
37
38
QObject *QDragManager::source()
const
39
{
40
if
(m_object)
41
return
m_object->source();
42
return
nullptr
;
43
}
44
45
void
QDragManager::setCurrentTarget(QObject *target,
bool
dropped)
46
{
47
if
(m_currentDropTarget == target)
48
return
;
49
50
m_currentDropTarget = target;
51
if
(!dropped && m_object) {
52
m_object->d_func()->target = target;
53
emit m_object->targetChanged(target);
54
}
55
}
56
57
QObject *QDragManager::currentTarget()
const
58
{
59
return
m_currentDropTarget;
60
}
61
62
Qt::DropAction QDragManager::drag(QDrag *o)
63
{
64
if
(!o || m_object == o)
65
return
Qt::IgnoreAction;
66
67
if
(!m_platformDrag || !o->source()) {
68
o->deleteLater();
69
return
Qt::IgnoreAction;
70
}
71
72
if
(m_object) {
73
qWarning(
"QDragManager::drag in possibly invalid state"
);
74
return
Qt::IgnoreAction;
75
}
76
77
m_object = o;
78
79
m_object->d_func()->target =
nullptr
;
80
81
QGuiApplicationPrivate::instance()->notifyDragStarted(m_object.data());
82
const
Qt::DropAction result = m_platformDrag->drag(m_object);
83
if
(!m_object.isNull() && !m_platformDrag->ownsDragObject())
84
m_object->deleteLater();
85
86
m_object.clear();
87
return
result;
88
}
89
90
QT_END_NAMESPACE
91
92
#
include
"moc_qdnd_p.cpp"
QDragManager
Definition
qdnd_p.h:58
qApp
#define qApp
Definition
qcoreapplication.h:38
qtbase
src
gui
kernel
qdnd.cpp
Generated on
for Qt by
1.18.0