Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/designer/qquickdesignersupport.cpp |
Source code | Switch to Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | /**************************************************************************** | - | ||||||||||||
2 | ** | - | ||||||||||||
3 | ** Copyright (C) 2016 The Qt Company Ltd. | - | ||||||||||||
4 | ** Contact: https://www.qt.io/licensing/ | - | ||||||||||||
5 | ** | - | ||||||||||||
6 | ** This file is part of the QtQuick module of the Qt Toolkit. | - | ||||||||||||
7 | ** | - | ||||||||||||
8 | ** $QT_BEGIN_LICENSE:LGPL$ | - | ||||||||||||
9 | ** Commercial License Usage | - | ||||||||||||
10 | ** Licensees holding valid commercial Qt licenses may use this file in | - | ||||||||||||
11 | ** accordance with the commercial license agreement provided with the | - | ||||||||||||
12 | ** Software or, alternatively, in accordance with the terms contained in | - | ||||||||||||
13 | ** a written agreement between you and The Qt Company. For licensing terms | - | ||||||||||||
14 | ** and conditions see https://www.qt.io/terms-conditions. For further | - | ||||||||||||
15 | ** information use the contact form at https://www.qt.io/contact-us. | - | ||||||||||||
16 | ** | - | ||||||||||||
17 | ** GNU Lesser General Public License Usage | - | ||||||||||||
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - | ||||||||||||
19 | ** General Public License version 3 as published by the Free Software | - | ||||||||||||
20 | ** Foundation and appearing in the file LICENSE.LGPL3 included in the | - | ||||||||||||
21 | ** packaging of this file. Please review the following information to | - | ||||||||||||
22 | ** ensure the GNU Lesser General Public License version 3 requirements | - | ||||||||||||
23 | ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. | - | ||||||||||||
24 | ** | - | ||||||||||||
25 | ** GNU General Public License Usage | - | ||||||||||||
26 | ** Alternatively, this file may be used under the terms of the GNU | - | ||||||||||||
27 | ** General Public License version 2.0 or (at your option) the GNU General | - | ||||||||||||
28 | ** Public license version 3 or any later version approved by the KDE Free | - | ||||||||||||
29 | ** Qt Foundation. The licenses are as published by the Free Software | - | ||||||||||||
30 | ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 | - | ||||||||||||
31 | ** included in the packaging of this file. Please review the following | - | ||||||||||||
32 | ** information to ensure the GNU General Public License requirements will | - | ||||||||||||
33 | ** be met: https://www.gnu.org/licenses/gpl-2.0.html and | - | ||||||||||||
34 | ** https://www.gnu.org/licenses/gpl-3.0.html. | - | ||||||||||||
35 | ** | - | ||||||||||||
36 | ** $QT_END_LICENSE$ | - | ||||||||||||
37 | ** | - | ||||||||||||
38 | ****************************************************************************/ | - | ||||||||||||
39 | - | |||||||||||||
40 | #include "qquickdesignersupport_p.h" | - | ||||||||||||
41 | #include <private/qquickitem_p.h> | - | ||||||||||||
42 | - | |||||||||||||
43 | #if QT_CONFIG(quick_shadereffect) | - | ||||||||||||
44 | #include <QtQuick/private/qquickshadereffectsource_p.h> | - | ||||||||||||
45 | #endif | - | ||||||||||||
46 | #include <QtQuick/private/qquickrectangle_p.h> | - | ||||||||||||
47 | #include <QtQml/private/qabstractanimationjob_p.h> | - | ||||||||||||
48 | #include <private/qqmlengine_p.h> | - | ||||||||||||
49 | #include <private/qquickview_p.h> | - | ||||||||||||
50 | #include <private/qsgrenderloop_p.h> | - | ||||||||||||
51 | #include <QtQuick/private/qquickstategroup_p.h> | - | ||||||||||||
52 | #include <QtGui/QImage> | - | ||||||||||||
53 | #include <private/qqmlvme_p.h> | - | ||||||||||||
54 | #include <private/qqmlcomponentattached_p.h> | - | ||||||||||||
55 | #include <private/qqmldata_p.h> | - | ||||||||||||
56 | #include <private/qsgadaptationlayer_p.h> | - | ||||||||||||
57 | - | |||||||||||||
58 | #include "qquickdesignerwindowmanager_p.h" | - | ||||||||||||
59 | - | |||||||||||||
60 | - | |||||||||||||
61 | QT_BEGIN_NAMESPACE | - | ||||||||||||
62 | - | |||||||||||||
63 | QQuickDesignerSupport::QQuickDesignerSupport() | - | ||||||||||||
64 | { | - | ||||||||||||
65 | } | - | ||||||||||||
66 | - | |||||||||||||
67 | QQuickDesignerSupport::~QQuickDesignerSupport() | - | ||||||||||||
68 | { | - | ||||||||||||
69 | typedef QHash<QQuickItem*, QSGLayer*>::iterator ItemTextureHashIt; | - | ||||||||||||
70 | - | |||||||||||||
71 | for (ItemTextureHashIt iterator = m_itemTextureHash.begin(), end = m_itemTextureHash.end(); iterator != end; ++iterator) {
| 0 | ||||||||||||
72 | QSGLayer *texture = iterator.value(); | - | ||||||||||||
73 | QQuickItem *item = iterator.key(); | - | ||||||||||||
74 | QQuickItemPrivate::get(item)->derefFromEffectItem(true); | - | ||||||||||||
75 | delete texture; | - | ||||||||||||
76 | } never executed: end of block | 0 | ||||||||||||
77 | } never executed: end of block | 0 | ||||||||||||
78 | - | |||||||||||||
79 | void QQuickDesignerSupport::refFromEffectItem(QQuickItem *referencedItem, bool hide) | - | ||||||||||||
80 | { | - | ||||||||||||
81 | if (referencedItem == nullptr)
| 0 | ||||||||||||
82 | return; never executed: return; | 0 | ||||||||||||
83 | - | |||||||||||||
84 | QQuickItemPrivate::get(referencedItem)->refFromEffectItem(hide); | - | ||||||||||||
85 | QQuickWindowPrivate::get(referencedItem->window())->updateDirtyNode(referencedItem); | - | ||||||||||||
86 | - | |||||||||||||
87 | Q_ASSERT(QQuickItemPrivate::get(referencedItem)->rootNode()); | - | ||||||||||||
88 | - | |||||||||||||
89 | if (!m_itemTextureHash.contains(referencedItem)) {
| 0 | ||||||||||||
90 | QSGRenderContext *rc = QQuickWindowPrivate::get(referencedItem->window())->context; | - | ||||||||||||
91 | QSGLayer *texture = rc->sceneGraphContext()->createLayer(rc); | - | ||||||||||||
92 | - | |||||||||||||
93 | QSizeF itemSize = referencedItem->size(); | - | ||||||||||||
94 | texture->setLive(true); | - | ||||||||||||
95 | texture->setItem(QQuickItemPrivate::get(referencedItem)->rootNode()); | - | ||||||||||||
96 | texture->setRect(QRectF(QPointF(0, 0), itemSize)); | - | ||||||||||||
97 | texture->setSize(itemSize.toSize()); | - | ||||||||||||
98 | texture->setRecursive(true); | - | ||||||||||||
99 | #if QT_CONFIG(opengl) | - | ||||||||||||
100 | #ifndef QT_OPENGL_ES | - | ||||||||||||
101 | if (QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGL)
| 0 | ||||||||||||
102 | texture->setFormat(GL_RGBA8); never executed: texture->setFormat( 0x8058 ); | 0 | ||||||||||||
103 | else | - | ||||||||||||
104 | texture->setFormat(GL_RGBA); never executed: texture->setFormat( 0x1908 ); | 0 | ||||||||||||
105 | #else | - | ||||||||||||
106 | texture->setFormat(GL_RGBA); | - | ||||||||||||
107 | #endif | - | ||||||||||||
108 | #endif | - | ||||||||||||
109 | texture->setHasMipmaps(false); | - | ||||||||||||
110 | - | |||||||||||||
111 | m_itemTextureHash.insert(referencedItem, texture); | - | ||||||||||||
112 | } never executed: end of block | 0 | ||||||||||||
113 | } never executed: end of block | 0 | ||||||||||||
114 | - | |||||||||||||
115 | void QQuickDesignerSupport::derefFromEffectItem(QQuickItem *referencedItem, bool unhide) | - | ||||||||||||
116 | { | - | ||||||||||||
117 | if (referencedItem == nullptr)
| 0 | ||||||||||||
118 | return; never executed: return; | 0 | ||||||||||||
119 | - | |||||||||||||
120 | delete m_itemTextureHash.take(referencedItem); | - | ||||||||||||
121 | QQuickItemPrivate::get(referencedItem)->derefFromEffectItem(unhide); | - | ||||||||||||
122 | } never executed: end of block | 0 | ||||||||||||
123 | - | |||||||||||||
124 | QImage QQuickDesignerSupport::renderImageForItem(QQuickItem *referencedItem, const QRectF &boundingRect, const QSize &imageSize) | - | ||||||||||||
125 | { | - | ||||||||||||
126 | if (referencedItem == nullptr || referencedItem->parentItem() == nullptr) {
| 0 | ||||||||||||
127 | qDebug() << __FILE__ << __LINE__ << "Warning: Item can be rendered."; | - | ||||||||||||
128 | return QImage(); never executed: return QImage(); | 0 | ||||||||||||
129 | } | - | ||||||||||||
130 | - | |||||||||||||
131 | QSGLayer *renderTexture = m_itemTextureHash.value(referencedItem); | - | ||||||||||||
132 | - | |||||||||||||
133 | Q_ASSERT(renderTexture); | - | ||||||||||||
134 | if (renderTexture == nullptr)
| 0 | ||||||||||||
135 | return QImage(); never executed: return QImage(); | 0 | ||||||||||||
136 | renderTexture->setRect(boundingRect); | - | ||||||||||||
137 | renderTexture->setSize(imageSize); | - | ||||||||||||
138 | renderTexture->setItem(QQuickItemPrivate::get(referencedItem)->rootNode()); | - | ||||||||||||
139 | renderTexture->markDirtyTexture(); | - | ||||||||||||
140 | renderTexture->updateTexture(); | - | ||||||||||||
141 | - | |||||||||||||
142 | QImage renderImage = renderTexture->toImage(); | - | ||||||||||||
143 | renderImage = renderImage.mirrored(false, true); | - | ||||||||||||
144 | - | |||||||||||||
145 | if (renderImage.size().isEmpty())
| 0 | ||||||||||||
146 | qDebug() << __FILE__ << __LINE__ << "Warning: Image is empty."; never executed: QMessageLogger(__FILE__, 146, __PRETTY_FUNCTION__).debug() << __FILE__ << 146 << "Warning: Image is empty."; | 0 | ||||||||||||
147 | - | |||||||||||||
148 | return renderImage; never executed: return renderImage; | 0 | ||||||||||||
149 | } | - | ||||||||||||
150 | - | |||||||||||||
151 | bool QQuickDesignerSupport::isDirty(QQuickItem *referencedItem, DirtyType dirtyType) | - | ||||||||||||
152 | { | - | ||||||||||||
153 | if (referencedItem == nullptr)
| 0 | ||||||||||||
154 | return false; never executed: return false; | 0 | ||||||||||||
155 | - | |||||||||||||
156 | return QQuickItemPrivate::get(referencedItem)->dirtyAttributes & dirtyType; never executed: return QQuickItemPrivate::get(referencedItem)->dirtyAttributes & dirtyType; | 0 | ||||||||||||
157 | } | - | ||||||||||||
158 | - | |||||||||||||
159 | void QQuickDesignerSupport::addDirty(QQuickItem *referencedItem, QQuickDesignerSupport::DirtyType dirtyType) | - | ||||||||||||
160 | { | - | ||||||||||||
161 | if (referencedItem == nullptr)
| 0 | ||||||||||||
162 | return; never executed: return; | 0 | ||||||||||||
163 | - | |||||||||||||
164 | QQuickItemPrivate::get(referencedItem)->dirtyAttributes |= dirtyType; | - | ||||||||||||
165 | } never executed: end of block | 0 | ||||||||||||
166 | - | |||||||||||||
167 | void QQuickDesignerSupport::resetDirty(QQuickItem *referencedItem) | - | ||||||||||||
168 | { | - | ||||||||||||
169 | if (referencedItem == nullptr)
| 0 | ||||||||||||
170 | return; never executed: return; | 0 | ||||||||||||
171 | - | |||||||||||||
172 | QQuickItemPrivate::get(referencedItem)->dirtyAttributes = 0x0; | - | ||||||||||||
173 | QQuickItemPrivate::get(referencedItem)->removeFromDirtyList(); | - | ||||||||||||
174 | } never executed: end of block | 0 | ||||||||||||
175 | - | |||||||||||||
176 | QTransform QQuickDesignerSupport::windowTransform(QQuickItem *referencedItem) | - | ||||||||||||
177 | { | - | ||||||||||||
178 | if (referencedItem == nullptr)
| 0 | ||||||||||||
179 | return QTransform(); never executed: return QTransform(); | 0 | ||||||||||||
180 | - | |||||||||||||
181 | return QQuickItemPrivate::get(referencedItem)->itemToWindowTransform(); never executed: return QQuickItemPrivate::get(referencedItem)->itemToWindowTransform(); | 0 | ||||||||||||
182 | } | - | ||||||||||||
183 | - | |||||||||||||
184 | QTransform QQuickDesignerSupport::parentTransform(QQuickItem *referencedItem) | - | ||||||||||||
185 | { | - | ||||||||||||
186 | if (referencedItem == nullptr)
| 0 | ||||||||||||
187 | return QTransform(); never executed: return QTransform(); | 0 | ||||||||||||
188 | - | |||||||||||||
189 | QTransform parentTransform; | - | ||||||||||||
190 | - | |||||||||||||
191 | QQuickItemPrivate::get(referencedItem)->itemToParentTransform(parentTransform); | - | ||||||||||||
192 | - | |||||||||||||
193 | return parentTransform; never executed: return parentTransform; | 0 | ||||||||||||
194 | } | - | ||||||||||||
195 | - | |||||||||||||
196 | QString propertyNameForAnchorLine(const QQuickAnchors::Anchor &anchorLine) | - | ||||||||||||
197 | { | - | ||||||||||||
198 | switch (anchorLine) { | - | ||||||||||||
199 | case QQuickAnchors::LeftAnchor: return QLatin1String("left"); never executed: return QLatin1String("left"); never executed: case QQuickAnchors::LeftAnchor: | 0 | ||||||||||||
200 | case QQuickAnchors::RightAnchor: return QLatin1String("right"); never executed: return QLatin1String("right"); never executed: case QQuickAnchors::RightAnchor: | 0 | ||||||||||||
201 | case QQuickAnchors::TopAnchor: return QLatin1String("top"); never executed: return QLatin1String("top"); never executed: case QQuickAnchors::TopAnchor: | 0 | ||||||||||||
202 | case QQuickAnchors::BottomAnchor: return QLatin1String("bottom"); never executed: return QLatin1String("bottom"); never executed: case QQuickAnchors::BottomAnchor: | 0 | ||||||||||||
203 | case QQuickAnchors::HCenterAnchor: return QLatin1String("horizontalCenter"); never executed: return QLatin1String("horizontalCenter"); never executed: case QQuickAnchors::HCenterAnchor: | 0 | ||||||||||||
204 | case QQuickAnchors::VCenterAnchor: return QLatin1String("verticalCenter"); never executed: return QLatin1String("verticalCenter"); never executed: case QQuickAnchors::VCenterAnchor: | 0 | ||||||||||||
205 | case QQuickAnchors::BaselineAnchor: return QLatin1String("baseline"); never executed: return QLatin1String("baseline"); never executed: case QQuickAnchors::BaselineAnchor: | 0 | ||||||||||||
206 | case QQuickAnchors::InvalidAnchor: // fallthrough: never executed: case QQuickAnchors::InvalidAnchor: | 0 | ||||||||||||
207 | default: return QString(); never executed: return QString(); never executed: default: | 0 | ||||||||||||
208 | } | - | ||||||||||||
209 | } | - | ||||||||||||
210 | - | |||||||||||||
211 | bool isValidAnchorName(const QString &name) | - | ||||||||||||
212 | { | - | ||||||||||||
213 | static QStringList anchorNameList(QStringList() << QLatin1String("anchors.top") | - | ||||||||||||
214 | << QLatin1String("anchors.left") | - | ||||||||||||
215 | << QLatin1String("anchors.right") | - | ||||||||||||
216 | << QLatin1String("anchors.bottom") | - | ||||||||||||
217 | << QLatin1String("anchors.verticalCenter") | - | ||||||||||||
218 | << QLatin1String("anchors.horizontalCenter") | - | ||||||||||||
219 | << QLatin1String("anchors.fill") | - | ||||||||||||
220 | << QLatin1String("anchors.centerIn") | - | ||||||||||||
221 | << QLatin1String("anchors.baseline")); | - | ||||||||||||
222 | - | |||||||||||||
223 | return anchorNameList.contains(name); never executed: return anchorNameList.contains(name); | 0 | ||||||||||||
224 | } | - | ||||||||||||
225 | - | |||||||||||||
226 | bool QQuickDesignerSupport::isAnchoredTo(QQuickItem *fromItem, QQuickItem *toItem) | - | ||||||||||||
227 | { | - | ||||||||||||
228 | QQuickItemPrivate *fromItemPrivate = QQuickItemPrivate::get(fromItem); | - | ||||||||||||
229 | QQuickAnchors *anchors = fromItemPrivate->anchors(); | - | ||||||||||||
230 | return anchors->fill() == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
231 | || anchors->centerIn() == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
232 | || anchors->bottom().item == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
233 | || anchors->top().item == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
234 | || anchors->left().item == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
235 | || anchors->right().item == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
236 | || anchors->verticalCenter().item == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
237 | || anchors->horizontalCenter().item == toItem never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
238 | || anchors->baseline().item == toItem; never executed: return anchors->fill() == toItem || anchors->centerIn() == toItem || anchors->bottom().item == toItem || anchors->top().item == toItem || anchors->left().item == toItem || anchors->right().item == toItem || anchors->verticalCenter().item == toItem || anchors->horizontalCenter().item == toItem || anchors->baseline().item == toItem; | 0 | ||||||||||||
239 | } | - | ||||||||||||
240 | - | |||||||||||||
241 | bool QQuickDesignerSupport::areChildrenAnchoredTo(QQuickItem *fromItem, QQuickItem *toItem) | - | ||||||||||||
242 | { | - | ||||||||||||
243 | const auto childItems = fromItem->childItems(); | - | ||||||||||||
244 | for (QQuickItem *childItem : childItems) { | - | ||||||||||||
245 | if (childItem) {
| 0 | ||||||||||||
246 | if (isAnchoredTo(childItem, toItem))
| 0 | ||||||||||||
247 | return true; never executed: return true; | 0 | ||||||||||||
248 | - | |||||||||||||
249 | if (areChildrenAnchoredTo(childItem, toItem))
| 0 | ||||||||||||
250 | return true; never executed: return true; | 0 | ||||||||||||
251 | } never executed: end of block | 0 | ||||||||||||
252 | } never executed: end of block | 0 | ||||||||||||
253 | - | |||||||||||||
254 | return false; never executed: return false; | 0 | ||||||||||||
255 | } | - | ||||||||||||
256 | - | |||||||||||||
257 | QQuickAnchors *anchors(QQuickItem *item) | - | ||||||||||||
258 | { | - | ||||||||||||
259 | QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); | - | ||||||||||||
260 | return itemPrivate->anchors(); never executed: return itemPrivate->anchors(); | 0 | ||||||||||||
261 | } | - | ||||||||||||
262 | - | |||||||||||||
263 | QQuickAnchors::Anchor anchorLineFlagForName(const QString &name) | - | ||||||||||||
264 | { | - | ||||||||||||
265 | if (name == QLatin1String("anchors.top"))
| 0 | ||||||||||||
266 | return QQuickAnchors::TopAnchor; never executed: return QQuickAnchors::TopAnchor; | 0 | ||||||||||||
267 | - | |||||||||||||
268 | if (name == QLatin1String("anchors.left"))
| 0 | ||||||||||||
269 | return QQuickAnchors::LeftAnchor; never executed: return QQuickAnchors::LeftAnchor; | 0 | ||||||||||||
270 | - | |||||||||||||
271 | if (name == QLatin1String("anchors.bottom"))
| 0 | ||||||||||||
272 | return QQuickAnchors::BottomAnchor; never executed: return QQuickAnchors::BottomAnchor; | 0 | ||||||||||||
273 | - | |||||||||||||
274 | if (name == QLatin1String("anchors.right"))
| 0 | ||||||||||||
275 | return QQuickAnchors::RightAnchor; never executed: return QQuickAnchors::RightAnchor; | 0 | ||||||||||||
276 | - | |||||||||||||
277 | if (name == QLatin1String("anchors.horizontalCenter"))
| 0 | ||||||||||||
278 | return QQuickAnchors::HCenterAnchor; never executed: return QQuickAnchors::HCenterAnchor; | 0 | ||||||||||||
279 | - | |||||||||||||
280 | if (name == QLatin1String("anchors.verticalCenter"))
| 0 | ||||||||||||
281 | return QQuickAnchors::VCenterAnchor; never executed: return QQuickAnchors::VCenterAnchor; | 0 | ||||||||||||
282 | - | |||||||||||||
283 | if (name == QLatin1String("anchors.baseline"))
| 0 | ||||||||||||
284 | return QQuickAnchors::BaselineAnchor; never executed: return QQuickAnchors::BaselineAnchor; | 0 | ||||||||||||
285 | - | |||||||||||||
286 | - | |||||||||||||
287 | Q_ASSERT_X(false, Q_FUNC_INFO, "wrong anchor name - this should never happen"); | - | ||||||||||||
288 | return QQuickAnchors::LeftAnchor; never executed: return QQuickAnchors::LeftAnchor; | 0 | ||||||||||||
289 | } | - | ||||||||||||
290 | - | |||||||||||||
291 | bool QQuickDesignerSupport::hasAnchor(QQuickItem *item, const QString &name) | - | ||||||||||||
292 | { | - | ||||||||||||
293 | if (!isValidAnchorName(name))
| 0 | ||||||||||||
294 | return false; never executed: return false; | 0 | ||||||||||||
295 | - | |||||||||||||
296 | if (name == QLatin1String("anchors.fill"))
| 0 | ||||||||||||
297 | return anchors(item)->fill() != nullptr; never executed: return anchors(item)->fill() != nullptr; | 0 | ||||||||||||
298 | - | |||||||||||||
299 | if (name == QLatin1String("anchors.centerIn"))
| 0 | ||||||||||||
300 | return anchors(item)->centerIn() != nullptr; never executed: return anchors(item)->centerIn() != nullptr; | 0 | ||||||||||||
301 | - | |||||||||||||
302 | if (name == QLatin1String("anchors.right"))
| 0 | ||||||||||||
303 | return anchors(item)->right().item != nullptr; never executed: return anchors(item)->right().item != nullptr; | 0 | ||||||||||||
304 | - | |||||||||||||
305 | if (name == QLatin1String("anchors.top"))
| 0 | ||||||||||||
306 | return anchors(item)->top().item != nullptr; never executed: return anchors(item)->top().item != nullptr; | 0 | ||||||||||||
307 | - | |||||||||||||
308 | if (name == QLatin1String("anchors.left"))
| 0 | ||||||||||||
309 | return anchors(item)->left().item != nullptr; never executed: return anchors(item)->left().item != nullptr; | 0 | ||||||||||||
310 | - | |||||||||||||
311 | if (name == QLatin1String("anchors.bottom"))
| 0 | ||||||||||||
312 | return anchors(item)->bottom().item != nullptr; never executed: return anchors(item)->bottom().item != nullptr; | 0 | ||||||||||||
313 | - | |||||||||||||
314 | if (name == QLatin1String("anchors.horizontalCenter"))
| 0 | ||||||||||||
315 | return anchors(item)->horizontalCenter().item != nullptr; never executed: return anchors(item)->horizontalCenter().item != nullptr; | 0 | ||||||||||||
316 | - | |||||||||||||
317 | if (name == QLatin1String("anchors.verticalCenter"))
| 0 | ||||||||||||
318 | return anchors(item)->verticalCenter().item != nullptr; never executed: return anchors(item)->verticalCenter().item != nullptr; | 0 | ||||||||||||
319 | - | |||||||||||||
320 | if (name == QLatin1String("anchors.baseline"))
| 0 | ||||||||||||
321 | return anchors(item)->baseline().item != nullptr; never executed: return anchors(item)->baseline().item != nullptr; | 0 | ||||||||||||
322 | - | |||||||||||||
323 | return anchors(item)->usedAnchors().testFlag(anchorLineFlagForName(name)); never executed: return anchors(item)->usedAnchors().testFlag(anchorLineFlagForName(name)); | 0 | ||||||||||||
324 | } | - | ||||||||||||
325 | - | |||||||||||||
326 | QQuickItem *QQuickDesignerSupport::anchorFillTargetItem(QQuickItem *item) | - | ||||||||||||
327 | { | - | ||||||||||||
328 | return anchors(item)->fill(); never executed: return anchors(item)->fill(); | 0 | ||||||||||||
329 | } | - | ||||||||||||
330 | - | |||||||||||||
331 | QQuickItem *QQuickDesignerSupport::anchorCenterInTargetItem(QQuickItem *item) | - | ||||||||||||
332 | { | - | ||||||||||||
333 | return anchors(item)->centerIn(); never executed: return anchors(item)->centerIn(); | 0 | ||||||||||||
334 | } | - | ||||||||||||
335 | - | |||||||||||||
336 | - | |||||||||||||
337 | - | |||||||||||||
338 | QPair<QString, QObject*> QQuickDesignerSupport::anchorLineTarget(QQuickItem *item, const QString &name, QQmlContext *context) | - | ||||||||||||
339 | { | - | ||||||||||||
340 | QObject *targetObject = nullptr; | - | ||||||||||||
341 | QString targetName; | - | ||||||||||||
342 | - | |||||||||||||
343 | if (name == QLatin1String("anchors.fill")) {
| 0 | ||||||||||||
344 | targetObject = anchors(item)->fill(); | - | ||||||||||||
345 | } else if (name == QLatin1String("anchors.centerIn")) { never executed: end of block
| 0 | ||||||||||||
346 | targetObject = anchors(item)->centerIn(); | - | ||||||||||||
347 | } else { never executed: end of block | 0 | ||||||||||||
348 | QQmlProperty metaProperty(item, name, context); | - | ||||||||||||
349 | if (!metaProperty.isValid())
| 0 | ||||||||||||
350 | return QPair<QString, QObject*>(); never executed: return QPair<QString, QObject*>(); | 0 | ||||||||||||
351 | - | |||||||||||||
352 | QQuickAnchorLine anchorLine = metaProperty.read().value<QQuickAnchorLine>(); | - | ||||||||||||
353 | if (anchorLine.anchorLine != QQuickAnchors::InvalidAnchor) {
| 0 | ||||||||||||
354 | targetObject = anchorLine.item; | - | ||||||||||||
355 | targetName = propertyNameForAnchorLine(anchorLine.anchorLine); | - | ||||||||||||
356 | } never executed: end of block | 0 | ||||||||||||
357 | - | |||||||||||||
358 | } never executed: end of block | 0 | ||||||||||||
359 | - | |||||||||||||
360 | return QPair<QString, QObject*>(targetName, targetObject); never executed: return QPair<QString, QObject*>(targetName, targetObject); | 0 | ||||||||||||
361 | } | - | ||||||||||||
362 | - | |||||||||||||
363 | void QQuickDesignerSupport::resetAnchor(QQuickItem *item, const QString &name) | - | ||||||||||||
364 | { | - | ||||||||||||
365 | if (name == QLatin1String("anchors.fill")) {
| 0 | ||||||||||||
366 | anchors(item)->resetFill(); | - | ||||||||||||
367 | } else if (name == QLatin1String("anchors.centerIn")) { never executed: end of block
| 0 | ||||||||||||
368 | anchors(item)->resetCenterIn(); | - | ||||||||||||
369 | } else if (name == QLatin1String("anchors.top")) { never executed: end of block
| 0 | ||||||||||||
370 | anchors(item)->resetTop(); | - | ||||||||||||
371 | } else if (name == QLatin1String("anchors.left")) { never executed: end of block
| 0 | ||||||||||||
372 | anchors(item)->resetLeft(); | - | ||||||||||||
373 | } else if (name == QLatin1String("anchors.right")) { never executed: end of block
| 0 | ||||||||||||
374 | anchors(item)->resetRight(); | - | ||||||||||||
375 | } else if (name == QLatin1String("anchors.bottom")) { never executed: end of block
| 0 | ||||||||||||
376 | anchors(item)->resetBottom(); | - | ||||||||||||
377 | } else if (name == QLatin1String("anchors.horizontalCenter")) { never executed: end of block
| 0 | ||||||||||||
378 | anchors(item)->resetHorizontalCenter(); | - | ||||||||||||
379 | } else if (name == QLatin1String("anchors.verticalCenter")) { never executed: end of block
| 0 | ||||||||||||
380 | anchors(item)->resetVerticalCenter(); | - | ||||||||||||
381 | } else if (name == QLatin1String("anchors.baseline")) { never executed: end of block
| 0 | ||||||||||||
382 | anchors(item)->resetBaseline(); | - | ||||||||||||
383 | } never executed: end of block | 0 | ||||||||||||
384 | } never executed: end of block | 0 | ||||||||||||
385 | - | |||||||||||||
386 | void QQuickDesignerSupport::emitComponentCompleteSignalForAttachedProperty(QQuickItem *item) | - | ||||||||||||
387 | { | - | ||||||||||||
388 | QQmlData *data = QQmlData::get(item); | - | ||||||||||||
389 | if (data && data->context) {
| 0 | ||||||||||||
390 | QQmlComponentAttached *componentAttached = data->context->componentAttached; | - | ||||||||||||
391 | if (componentAttached) {
| 0 | ||||||||||||
392 | emit componentAttached->completed(); | - | ||||||||||||
393 | } never executed: end of block | 0 | ||||||||||||
394 | } never executed: end of block | 0 | ||||||||||||
395 | } never executed: end of block | 0 | ||||||||||||
396 | - | |||||||||||||
397 | QList<QObject*> QQuickDesignerSupport::statesForItem(QQuickItem *item) | - | ||||||||||||
398 | { | - | ||||||||||||
399 | QList<QObject*> objectList; | - | ||||||||||||
400 | const QList<QQuickState *> stateList = QQuickItemPrivate::get(item)->_states()->states(); | - | ||||||||||||
401 | - | |||||||||||||
402 | objectList.reserve(stateList.size()); | - | ||||||||||||
403 | for (QQuickState* state : stateList) | - | ||||||||||||
404 | objectList.append(state); never executed: objectList.append(state); | 0 | ||||||||||||
405 | - | |||||||||||||
406 | return objectList; never executed: return objectList; | 0 | ||||||||||||
407 | } | - | ||||||||||||
408 | - | |||||||||||||
409 | bool QQuickDesignerSupport::isComponentComplete(QQuickItem *item) | - | ||||||||||||
410 | { | - | ||||||||||||
411 | return QQuickItemPrivate::get(item)->componentComplete; never executed: return QQuickItemPrivate::get(item)->componentComplete; | 0 | ||||||||||||
412 | } | - | ||||||||||||
413 | - | |||||||||||||
414 | int QQuickDesignerSupport::borderWidth(QQuickItem *item) | - | ||||||||||||
415 | { | - | ||||||||||||
416 | QQuickRectangle *rectangle = qobject_cast<QQuickRectangle*>(item); | - | ||||||||||||
417 | if (rectangle)
| 0 | ||||||||||||
418 | return rectangle->border()->width(); never executed: return rectangle->border()->width(); | 0 | ||||||||||||
419 | - | |||||||||||||
420 | return 0; never executed: return 0; | 0 | ||||||||||||
421 | } | - | ||||||||||||
422 | - | |||||||||||||
423 | void QQuickDesignerSupport::refreshExpressions(QQmlContext *context) | - | ||||||||||||
424 | { | - | ||||||||||||
425 | QQmlContextPrivate::get(context)->data->refreshExpressions(); | - | ||||||||||||
426 | } executed 2 times by 1 test: end of block Executed by:
| 2 | ||||||||||||
427 | - | |||||||||||||
428 | void QQuickDesignerSupport::setRootItem(QQuickView *view, QQuickItem *item) | - | ||||||||||||
429 | { | - | ||||||||||||
430 | QQuickViewPrivate::get(view)->setRootObject(item); | - | ||||||||||||
431 | } never executed: end of block | 0 | ||||||||||||
432 | - | |||||||||||||
433 | bool QQuickDesignerSupport::isValidWidth(QQuickItem *item) | - | ||||||||||||
434 | { | - | ||||||||||||
435 | return QQuickItemPrivate::get(item)->heightValid; never executed: return QQuickItemPrivate::get(item)->heightValid; | 0 | ||||||||||||
436 | } | - | ||||||||||||
437 | - | |||||||||||||
438 | bool QQuickDesignerSupport::isValidHeight(QQuickItem *item) | - | ||||||||||||
439 | { | - | ||||||||||||
440 | return QQuickItemPrivate::get(item)->widthValid; never executed: return QQuickItemPrivate::get(item)->widthValid; | 0 | ||||||||||||
441 | } | - | ||||||||||||
442 | - | |||||||||||||
443 | void QQuickDesignerSupport::updateDirtyNode(QQuickItem *item) | - | ||||||||||||
444 | { | - | ||||||||||||
445 | if (item->window())
| 0 | ||||||||||||
446 | QQuickWindowPrivate::get(item->window())->updateDirtyNode(item); never executed: QQuickWindowPrivate::get(item->window())->updateDirtyNode(item); | 0 | ||||||||||||
447 | } never executed: end of block | 0 | ||||||||||||
448 | - | |||||||||||||
449 | void QQuickDesignerSupport::activateDesignerWindowManager() | - | ||||||||||||
450 | { | - | ||||||||||||
451 | QSGRenderLoop::setInstance(new QQuickDesignerWindowManager); | - | ||||||||||||
452 | } never executed: end of block | 0 | ||||||||||||
453 | - | |||||||||||||
454 | void QQuickDesignerSupport::activateDesignerMode() | - | ||||||||||||
455 | { | - | ||||||||||||
456 | QQmlEnginePrivate::activateDesignerMode(); | - | ||||||||||||
457 | } never executed: end of block | 0 | ||||||||||||
458 | - | |||||||||||||
459 | void QQuickDesignerSupport::disableComponentComplete() | - | ||||||||||||
460 | { | - | ||||||||||||
461 | QQmlVME::disableComponentComplete(); | - | ||||||||||||
462 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||
463 | - | |||||||||||||
464 | void QQuickDesignerSupport::enableComponentComplete() | - | ||||||||||||
465 | { | - | ||||||||||||
466 | QQmlVME::enableComponentComplete(); | - | ||||||||||||
467 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||
468 | - | |||||||||||||
469 | void QQuickDesignerSupport::createOpenGLContext(QQuickWindow *window) | - | ||||||||||||
470 | { | - | ||||||||||||
471 | QQuickDesignerWindowManager::createOpenGLContext(window); | - | ||||||||||||
472 | } never executed: end of block | 0 | ||||||||||||
473 | - | |||||||||||||
474 | void QQuickDesignerSupport::polishItems(QQuickWindow *window) | - | ||||||||||||
475 | { | - | ||||||||||||
476 | QQuickWindowPrivate::get(window)->polishItems(); | - | ||||||||||||
477 | } never executed: end of block | 0 | ||||||||||||
478 | - | |||||||||||||
479 | ComponentCompleteDisabler::ComponentCompleteDisabler() | - | ||||||||||||
480 | { | - | ||||||||||||
481 | QQuickDesignerSupport::disableComponentComplete(); | - | ||||||||||||
482 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||
483 | - | |||||||||||||
484 | ComponentCompleteDisabler::~ComponentCompleteDisabler() | - | ||||||||||||
485 | { | - | ||||||||||||
486 | QQuickDesignerSupport::enableComponentComplete(); | - | ||||||||||||
487 | } executed 4 times by 1 test: end of block Executed by:
| 4 | ||||||||||||
488 | - | |||||||||||||
489 | - | |||||||||||||
490 | QT_END_NAMESPACE | - | ||||||||||||
Source code | Switch to Preprocessed file |