Line | Source | Count |
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | | - |
12 | | - |
13 | | - |
14 | | - |
15 | | - |
16 | | - |
17 | | - |
18 | | - |
19 | | - |
20 | | - |
21 | | - |
22 | | - |
23 | | - |
24 | | - |
25 | | - |
26 | | - |
27 | | - |
28 | | - |
29 | | - |
30 | | - |
31 | | - |
32 | | - |
33 | | - |
34 | | - |
35 | | - |
36 | | - |
37 | | - |
38 | | - |
39 | | - |
40 | | - |
41 | #include "qapplication.h" | - |
42 | #include "qapplication_p.h" | - |
43 | #include "qbrush.h" | - |
44 | #include "qcursor.h" | - |
45 | #include "qdesktopwidget_p.h" | - |
46 | #include "qevent.h" | - |
47 | #include "qlayout.h" | - |
48 | #include "qmenu.h" | - |
49 | #include "qmetaobject.h" | - |
50 | #include "qpixmap.h" | - |
51 | #include "qpointer.h" | - |
52 | #include "qstack.h" | - |
53 | #include "qstyle.h" | - |
54 | #include "qstylefactory.h" | - |
55 | #include "qvariant.h" | - |
56 | #include "qwidget.h" | - |
57 | #include "qstyleoption.h" | - |
58 | #include "qstylehints.h" | - |
59 | #ifndef QT_NO_ACCESSIBILITY | - |
60 | # include "qaccessible.h" | - |
61 | #endif | - |
62 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
63 | # include "qt_mac_p.h" | - |
64 | # include "qt_cocoa_helpers_mac_p.h" | - |
65 | # include "qmainwindow.h" | - |
66 | # include "qtoolbar.h" | - |
67 | # include <private/qmainwindowlayout_p.h> | - |
68 | #endif | - |
69 | #include <qpa/qplatformwindow.h> | - |
70 | #include <qpa/qplatformbackingstore.h> | - |
71 | #include "private/qwidgetwindow_p.h" | - |
72 | #include "qpainter.h" | - |
73 | #include "qtooltip.h" | - |
74 | #include "qwhatsthis.h" | - |
75 | #include "qdebug.h" | - |
76 | #include "private/qstylesheetstyle_p.h" | - |
77 | #include "private/qstyle_p.h" | - |
78 | #include "qfileinfo.h" | - |
79 | #include <QtGui/private/qhighdpiscaling_p.h> | - |
80 | #include <QtGui/qinputmethod.h> | - |
81 | #include <QtGui/qopenglcontext.h> | - |
82 | #include <QtGui/private/qopenglcontext_p.h> | - |
83 | #include <QtGui/qoffscreensurface.h> | - |
84 | | - |
85 | #include <private/qgraphicseffect_p.h> | - |
86 | #include <qbackingstore.h> | - |
87 | #include <private/qwidgetbackingstore_p.h> | - |
88 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
89 | # include <private/qpaintengine_mac_p.h> | - |
90 | #endif | - |
91 | #include <private/qpaintengine_raster_p.h> | - |
92 | | - |
93 | #include "qwidget_p.h" | - |
94 | #include <QtGui/private/qwindow_p.h> | - |
95 | #include "qaction_p.h" | - |
96 | #include "qlayout_p.h" | - |
97 | #include "QtWidgets/qgraphicsproxywidget.h" | - |
98 | #include "QtWidgets/qgraphicsscene.h" | - |
99 | #include "private/qgraphicsproxywidget_p.h" | - |
100 | #include "QtWidgets/qabstractscrollarea.h" | - |
101 | #include "private/qabstractscrollarea_p.h" | - |
102 | #include "private/qevent_p.h" | - |
103 | | - |
104 | #include "private/qgesturemanager_p.h" | - |
105 | | - |
106 | #ifdef QT_KEYPAD_NAVIGATION | - |
107 | #include "qtabwidget.h" // Needed in inTabWidget() | - |
108 | #endif // QT_KEYPAD_NAVIGATION | - |
109 | | - |
110 | #include "qwindowcontainer_p.h" | - |
111 | | - |
112 | #include <QtPlatformHeaders/qxcbwindowfunctions.h> | - |
113 | | - |
114 | | - |
115 | | - |
116 | | - |
117 | | - |
118 | QT_BEGIN_NAMESPACE | - |
119 | | - |
120 | static bool qt_enable_backingstore = true; | - |
121 | #ifdef Q_DEAD_CODE_FROM_QT4_X11 | - |
122 | | - |
123 | Q_WIDGETS_EXPORT void qt_x11_set_global_double_buffer(bool enable) | - |
124 | { | - |
125 | qt_enable_backingstore = enable; | - |
126 | } | - |
127 | #endif | - |
128 | | - |
129 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
130 | bool qt_mac_clearDirtyOnWidgetInsideDrawWidget = false; | - |
131 | #endif | - |
132 | | - |
133 | static inline bool qRectIntersects(const QRect &r1, const QRect &r2) | - |
134 | { | - |
135 | return (qMax(r1.left(), r2.left()) <= qMin(r1.right(), r2.right()) && never executed: return (qMax(r1.left(), r2.left()) <= qMin(r1.right(), r2.right()) && qMax(r1.top(), r2.top()) <= qMin(r1.bottom(), r2.bottom())); | 0 |
136 | qMax(r1.top(), r2.top()) <= qMin(r1.bottom(), r2.bottom())); never executed: return (qMax(r1.left(), r2.left()) <= qMin(r1.right(), r2.right()) && qMax(r1.top(), r2.top()) <= qMin(r1.bottom(), r2.bottom())); | 0 |
137 | } | - |
138 | | - |
139 | static inline bool hasBackingStoreSupport() | - |
140 | { | - |
141 | return true; never executed: return true; | 0 |
142 | } | - |
143 | | - |
144 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
145 | # define QT_NO_PAINT_DEBUG | - |
146 | #endif | - |
147 | | - |
148 | extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); | - |
149 | extern QDesktopWidget *qt_desktopWidget; | - |
150 | | - |
151 | | - |
152 | | - |
153 | | - |
154 | | - |
155 | | - |
156 | | - |
157 | | - |
158 | | - |
159 | | - |
160 | | - |
161 | QWidgetBackingStoreTracker::QWidgetBackingStoreTracker() | - |
162 | : m_ptr(0) | - |
163 | { | - |
164 | | - |
165 | } never executed: end of block | 0 |
166 | | - |
167 | QWidgetBackingStoreTracker::~QWidgetBackingStoreTracker() | - |
168 | { | - |
169 | delete m_ptr; | - |
170 | } never executed: end of block | 0 |
171 | | - |
172 | | - |
173 | | - |
174 | | - |
175 | | - |
176 | | - |
177 | | - |
178 | void QWidgetBackingStoreTracker::create(QWidget *widget) | - |
179 | { | - |
180 | destroy(); | - |
181 | m_ptr = new QWidgetBackingStore(widget); | - |
182 | } never executed: end of block | 0 |
183 | | - |
184 | | - |
185 | | - |
186 | | - |
187 | | - |
188 | | - |
189 | void QWidgetBackingStoreTracker::destroy() | - |
190 | { | - |
191 | delete m_ptr; | - |
192 | m_ptr = 0; | - |
193 | m_widgets.clear(); | - |
194 | } never executed: end of block | 0 |
195 | | - |
196 | | - |
197 | | - |
198 | | - |
199 | | - |
200 | | - |
201 | void QWidgetBackingStoreTracker::registerWidget(QWidget *w) | - |
202 | { | - |
203 | Q_ASSERT(m_ptr); | - |
204 | Q_ASSERT(w->internalWinId()); | - |
205 | Q_ASSERT(qt_widget_private(w)->maybeBackingStore() == m_ptr); | - |
206 | m_widgets.insert(w); | - |
207 | } never executed: end of block | 0 |
208 | | - |
209 | | - |
210 | | - |
211 | | - |
212 | | - |
213 | | - |
214 | | - |
215 | | - |
216 | void QWidgetBackingStoreTracker::unregisterWidget(QWidget *w) | - |
217 | { | - |
218 | if (m_widgets.remove(w) && m_widgets.isEmpty()) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
219 | delete m_ptr; | - |
220 | m_ptr = 0; | - |
221 | } never executed: end of block | 0 |
222 | } never executed: end of block | 0 |
223 | | - |
224 | | - |
225 | | - |
226 | | - |
227 | | - |
228 | void QWidgetBackingStoreTracker::unregisterWidgetSubtree(QWidget *widget) | - |
229 | { | - |
230 | unregisterWidget(widget); | - |
231 | foreach (QObject *child, widget->children()) | - |
232 | if (QWidget *childWidget = qobject_cast<QWidget *>(child))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
233 | unregisterWidgetSubtree(childWidget); never executed: unregisterWidgetSubtree(childWidget); | 0 |
234 | } never executed: end of block | 0 |
235 | | - |
236 | QWidgetPrivate::QWidgetPrivate(int version) | - |
237 | : QObjectPrivate(version) | - |
238 | , extra(0) | - |
239 | , focus_next(0) | - |
240 | , focus_prev(0) | - |
241 | , focus_child(0) | - |
242 | , layout(0) | - |
243 | , needsFlush(0) | - |
244 | , redirectDev(0) | - |
245 | , widgetItem(0) | - |
246 | , extraPaintEngine(0) | - |
247 | , polished(0) | - |
248 | , graphicsEffect(0) | - |
249 | #if !defined(QT_NO_IM) | - |
250 | , imHints(Qt::ImhNone) | - |
251 | #endif | - |
252 | #ifndef QT_NO_TOOLTIP | - |
253 | , toolTipDuration(-1) | - |
254 | #endif | - |
255 | , inheritedFontResolveMask(0) | - |
256 | , inheritedPaletteResolveMask(0) | - |
257 | , leftmargin(0) | - |
258 | , topmargin(0) | - |
259 | , rightmargin(0) | - |
260 | , bottommargin(0) | - |
261 | , leftLayoutItemMargin(0) | - |
262 | , topLayoutItemMargin(0) | - |
263 | , rightLayoutItemMargin(0) | - |
264 | , bottomLayoutItemMargin(0) | - |
265 | , hd(0) | - |
266 | , size_policy(QSizePolicy::Preferred, QSizePolicy::Preferred) | - |
267 | , fg_role(QPalette::NoRole) | - |
268 | , bg_role(QPalette::NoRole) | - |
269 | , dirtyOpaqueChildren(1) | - |
270 | , isOpaque(0) | - |
271 | , retainSizeWhenHiddenChanged(0) | - |
272 | , inDirtyList(0) | - |
273 | , isScrolled(0) | - |
274 | , isMoved(0) | - |
275 | , usesDoubleBufferedGLContext(0) | - |
276 | , mustHaveWindowHandle(0) | - |
277 | , renderToTexture(0) | - |
278 | , textureChildSeen(0) | - |
279 | #ifndef QT_NO_IM | - |
280 | , inheritsInputMethodHints(0) | - |
281 | #endif | - |
282 | #ifndef QT_NO_OPENGL | - |
283 | , renderToTextureReallyDirty(1) | - |
284 | , renderToTextureComposeActive(0) | - |
285 | #endif | - |
286 | , childrenHiddenByWState(0) | - |
287 | , childrenShownByExpose(0) | - |
288 | #if defined(Q_OS_WIN) | - |
289 | , noPaintOnScreen(0) | - |
290 | #endif | - |
291 | #if defined(Q_DEAD_CODE_FROM_QT4_X11) | - |
292 | , picture(0) | - |
293 | #elif defined(Q_DEAD_CODE_FROM_QT4_WIN) | - |
294 | #ifndef QT_NO_GESTURES | - |
295 | , nativeGesturePanEnabled(0) | - |
296 | #endif | - |
297 | #elif defined(Q_DEAD_CODE_FROM_QT4_MAC) | - |
298 | , needWindowChange(0) | - |
299 | , window_event(0) | - |
300 | , qd_hd(0) | - |
301 | #endif | - |
302 | { | - |
303 | if (Q_UNLIKELY(!qApp)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
304 | qFatal("QWidget: Must construct a QApplication before a QWidget"); | - |
305 | return; never executed: return; | 0 |
306 | } | - |
307 | | - |
308 | #ifdef QT_BUILD_INTERNAL | - |
309 | | - |
310 | | - |
311 | Q_UNUSED(version); | - |
312 | #else | - |
313 | if (Q_UNLIKELY(version != QObjectPrivateVersion)) | - |
314 | qFatal("Cannot mix incompatible Qt library (version 0x%x) with this library (version 0x%x)", | - |
315 | version, QObjectPrivateVersion); | - |
316 | #endif | - |
317 | | - |
318 | isWidget = true; | - |
319 | memset(high_attributes, 0, sizeof(high_attributes)); | - |
320 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
321 | drawRectOriginalAdded = false; | - |
322 | originalDrawMethod = true; | - |
323 | changeMethods = false; | - |
324 | isInUnifiedToolbar = false; | - |
325 | unifiedSurface = 0; | - |
326 | toolbar_ancestor = 0; | - |
327 | flushRequested = false; | - |
328 | touchEventsEnabled = false; | - |
329 | #endif // Q_DEAD_CODE_FROM_QT4_MAC | - |
330 | #ifdef QWIDGET_EXTRA_DEBUG | - |
331 | static int count = 0; | - |
332 | qDebug() << "widgets" << ++count; | - |
333 | #endif | - |
334 | } never executed: end of block | 0 |
335 | | - |
336 | | - |
337 | QWidgetPrivate::~QWidgetPrivate() | - |
338 | { | - |
339 | if (widgetItem)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
340 | widgetItem->wid = 0; never executed: widgetItem->wid = 0; | 0 |
341 | | - |
342 | if (extra)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
343 | deleteExtra(); never executed: deleteExtra(); | 0 |
344 | | - |
345 | #ifndef QT_NO_GRAPHICSEFFECT | - |
346 | delete graphicsEffect; | - |
347 | #endif //QT_NO_GRAPHICSEFFECT | - |
348 | } never executed: end of block | 0 |
349 | | - |
350 | | - |
351 | | - |
352 | | - |
353 | void QWidgetPrivate::scrollChildren(int dx, int dy) | - |
354 | { | - |
355 | Q_Q(QWidget); | - |
356 | if (q->children().size() > 0) { TRUE | never evaluated | FALSE | never evaluated |
| 0 |
357 | QPoint pd(dx, dy); | - |
358 | QObjectList childObjects = q->children(); | - |
359 | for (int i = 0; i < childObjects.size(); ++i) { TRUE | never evaluated | FALSE | never evaluated |
| 0 |
360 | QWidget *w = qobject_cast<QWidget*>(childObjects.at(i)); | - |
361 | if (w && !w->isWindow()) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
362 | QPoint oldp = w->pos(); | - |
363 | QRect r(w->pos() + pd, w->size()); | - |
364 | w->data->crect = r; | - |
365 | if (w->testAttribute(Qt::WA_WState_Created))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
366 | w->d_func()->setWSGeometry(); never executed: w->d_func()->setWSGeometry(); | 0 |
367 | w->d_func()->setDirtyOpaqueRegion(); | - |
368 | QMoveEvent e(r.topLeft(), oldp); | - |
369 | QApplication::sendEvent(w, &e); | - |
370 | } never executed: end of block | 0 |
371 | } never executed: end of block | 0 |
372 | } never executed: end of block | 0 |
373 | } never executed: end of block | 0 |
374 | | - |
375 | void QWidgetPrivate::setWSGeometry() | - |
376 | { | - |
377 | Q_Q(QWidget); | - |
378 | if (QWindow *window = q->windowHandle())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
379 | window->setGeometry(data.crect); never executed: window->setGeometry(data.crect); | 0 |
380 | } never executed: end of block | 0 |
381 | | - |
382 | void QWidgetPrivate::updateWidgetTransform(QEvent *event) | - |
383 | { | - |
384 | Q_Q(QWidget); | - |
385 | if (q == QGuiApplication::focusObject() || event->type() == QEvent::FocusIn) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
386 | QTransform t; | - |
387 | QPoint p = q->mapTo(q->topLevelWidget(), QPoint(0,0)); | - |
388 | t.translate(p.x(), p.y()); | - |
389 | QGuiApplication::inputMethod()->setInputItemTransform(t); | - |
390 | QGuiApplication::inputMethod()->setInputItemRectangle(q->rect()); | - |
391 | QGuiApplication::inputMethod()->update(Qt::ImInputItemClipRectangle); | - |
392 | } never executed: end of block | 0 |
393 | } never executed: end of block | 0 |
394 | | - |
395 | #ifdef QT_KEYPAD_NAVIGATION | - |
396 | QPointer<QWidget> QWidgetPrivate::editingWidget; | - |
397 | | - |
398 | | - |
399 | | - |
400 | | - |
401 | | - |
402 | | - |
403 | | - |
404 | | - |
405 | bool QWidget::hasEditFocus() const | - |
406 | { | - |
407 | const QWidget* w = this; | - |
408 | while (w->d_func()->extra && w->d_func()->extra->focus_proxy) | - |
409 | w = w->d_func()->extra->focus_proxy; | - |
410 | return QWidgetPrivate::editingWidget == w; | - |
411 | } | - |
412 | | - |
413 | | - |
414 | | - |
415 | | - |
416 | | - |
417 | | - |
418 | | - |
419 | | - |
420 | | - |
421 | | - |
422 | | - |
423 | | - |
424 | | - |
425 | void QWidget::setEditFocus(bool on) | - |
426 | { | - |
427 | QWidget *f = this; | - |
428 | while (f->d_func()->extra && f->d_func()->extra->focus_proxy) | - |
429 | f = f->d_func()->extra->focus_proxy; | - |
430 | | - |
431 | if (QWidgetPrivate::editingWidget && QWidgetPrivate::editingWidget != f) | - |
432 | QWidgetPrivate::editingWidget->setEditFocus(false); | - |
433 | | - |
434 | if (on && !f->hasFocus()) | - |
435 | f->setFocus(); | - |
436 | | - |
437 | if ((!on && !QWidgetPrivate::editingWidget) | - |
438 | || (on && QWidgetPrivate::editingWidget == f)) { | - |
439 | return; | - |
440 | } | - |
441 | | - |
442 | if (!on && QWidgetPrivate::editingWidget == f) { | - |
443 | QWidgetPrivate::editingWidget = 0; | - |
444 | QEvent event(QEvent::LeaveEditFocus); | - |
445 | QApplication::sendEvent(f, &event); | - |
446 | QApplication::sendEvent(f->style(), &event); | - |
447 | } else if (on) { | - |
448 | QWidgetPrivate::editingWidget = f; | - |
449 | QEvent event(QEvent::EnterEditFocus); | - |
450 | QApplication::sendEvent(f, &event); | - |
451 | QApplication::sendEvent(f->style(), &event); | - |
452 | } | - |
453 | } | - |
454 | #endif | - |
455 | | - |
456 | | - |
457 | | - |
458 | | - |
459 | | - |
460 | | - |
461 | | - |
462 | | - |
463 | | - |
464 | | - |
465 | | - |
466 | | - |
467 | | - |
468 | | - |
469 | | - |
470 | | - |
471 | | - |
472 | | - |
473 | | - |
474 | | - |
475 | | - |
476 | | - |
477 | | - |
478 | | - |
479 | | - |
480 | bool QWidget::autoFillBackground() const | - |
481 | { | - |
482 | Q_D(const QWidget); | - |
483 | return d->extra && d->extra->autoFillBackground; never executed: return d->extra && d->extra->autoFillBackground; | 0 |
484 | } | - |
485 | | - |
486 | void QWidget::setAutoFillBackground(bool enabled) | - |
487 | { | - |
488 | Q_D(QWidget); | - |
489 | if (!d->extra)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
490 | d->createExtra(); never executed: d->createExtra(); | 0 |
491 | if (d->extra->autoFillBackground == enabled)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
492 | return; never executed: return; | 0 |
493 | | - |
494 | d->extra->autoFillBackground = enabled; | - |
495 | d->updateIsOpaque(); | - |
496 | update(); | - |
497 | d->updateIsOpaque(); | - |
498 | } never executed: end of block | 0 |
499 | | - |
500 | | - |
501 | | - |
502 | | - |
503 | | - |
504 | | - |
505 | | - |
506 | | - |
507 | | - |
508 | | - |
509 | | - |
510 | | - |
511 | | - |
512 | | - |
513 | | - |
514 | | - |
515 | | - |
516 | | - |
517 | | - |
518 | | - |
519 | | - |
520 | | - |
521 | | - |
522 | | - |
523 | | - |
524 | | - |
525 | | - |
526 | | - |
527 | | - |
528 | | - |
529 | | - |
530 | | - |
531 | | - |
532 | | - |
533 | | - |
534 | | - |
535 | | - |
536 | | - |
537 | | - |
538 | | - |
539 | | - |
540 | | - |
541 | | - |
542 | | - |
543 | | - |
544 | | - |
545 | | - |
546 | | - |
547 | | - |
548 | | - |
549 | | - |
550 | | - |
551 | | - |
552 | | - |
553 | | - |
554 | | - |
555 | | - |
556 | | - |
557 | | - |
558 | | - |
559 | | - |
560 | | - |
561 | | - |
562 | | - |
563 | | - |
564 | | - |
565 | | - |
566 | | - |
567 | | - |
568 | | - |
569 | | - |
570 | | - |
571 | | - |
572 | | - |
573 | | - |
574 | | - |
575 | | - |
576 | | - |
577 | | - |
578 | | - |
579 | | - |
580 | | - |
581 | | - |
582 | | - |
583 | | - |
584 | | - |
585 | | - |
586 | | - |
587 | | - |
588 | | - |
589 | | - |
590 | | - |
591 | | - |
592 | | - |
593 | | - |
594 | | - |
595 | | - |
596 | | - |
597 | | - |
598 | | - |
599 | | - |
600 | | - |
601 | | - |
602 | | - |
603 | | - |
604 | | - |
605 | | - |
606 | | - |
607 | | - |
608 | | - |
609 | | - |
610 | | - |
611 | | - |
612 | | - |
613 | | - |
614 | | - |
615 | | - |
616 | | - |
617 | | - |
618 | | - |
619 | | - |
620 | | - |
621 | | - |
622 | | - |
623 | | - |
624 | | - |
625 | | - |
626 | | - |
627 | | - |
628 | | - |
629 | | - |
630 | | - |
631 | | - |
632 | | - |
633 | | - |
634 | | - |
635 | | - |
636 | | - |
637 | | - |
638 | | - |
639 | | - |
640 | | - |
641 | | - |
642 | | - |
643 | | - |
644 | | - |
645 | | - |
646 | | - |
647 | | - |
648 | | - |
649 | | - |
650 | | - |
651 | | - |
652 | | - |
653 | | - |
654 | | - |
655 | | - |
656 | | - |
657 | | - |
658 | | - |
659 | | - |
660 | | - |
661 | | - |
662 | | - |
663 | | - |
664 | | - |
665 | | - |
666 | | - |
667 | | - |
668 | | - |
669 | | - |
670 | | - |
671 | | - |
672 | | - |
673 | | - |
674 | | - |
675 | | - |
676 | | - |
677 | | - |
678 | | - |
679 | | - |
680 | | - |
681 | | - |
682 | | - |
683 | | - |
684 | | - |
685 | | - |
686 | | - |
687 | | - |
688 | | - |
689 | | - |
690 | | - |
691 | | - |
692 | | - |
693 | | - |
694 | | - |
695 | | - |
696 | | - |
697 | | - |
698 | | - |
699 | | - |
700 | | - |
701 | | - |
702 | | - |
703 | | - |
704 | | - |
705 | | - |
706 | | - |
707 | | - |
708 | | - |
709 | | - |
710 | | - |
711 | | - |
712 | | - |
713 | | - |
714 | | - |
715 | | - |
716 | | - |
717 | | - |
718 | | - |
719 | | - |
720 | | - |
721 | | - |
722 | | - |
723 | | - |
724 | | - |
725 | | - |
726 | | - |
727 | | - |
728 | | - |
729 | | - |
730 | | - |
731 | | - |
732 | | - |
733 | | - |
734 | | - |
735 | | - |
736 | | - |
737 | | - |
738 | | - |
739 | | - |
740 | | - |
741 | | - |
742 | | - |
743 | | - |
744 | | - |
745 | | - |
746 | | - |
747 | | - |
748 | | - |
749 | | - |
750 | | - |
751 | | - |
752 | | - |
753 | | - |
754 | | - |
755 | | - |
756 | | - |
757 | | - |
758 | | - |
759 | | - |
760 | | - |
761 | | - |
762 | | - |
763 | | - |
764 | | - |
765 | | - |
766 | | - |
767 | | - |
768 | | - |
769 | | - |
770 | | - |
771 | | - |
772 | | - |
773 | | - |
774 | | - |
775 | | - |
776 | | - |
777 | | - |
778 | | - |
779 | | - |
780 | | - |
781 | | - |
782 | | - |
783 | | - |
784 | | - |
785 | | - |
786 | | - |
787 | | - |
788 | | - |
789 | | - |
790 | | - |
791 | | - |
792 | | - |
793 | | - |
794 | | - |
795 | | - |
796 | | - |
797 | | - |
798 | | - |
799 | | - |
800 | | - |
801 | | - |
802 | | - |
803 | | - |
804 | | - |
805 | | - |
806 | | - |
807 | | - |
808 | | - |
809 | | - |
810 | | - |
811 | | - |
812 | | - |
813 | | - |
814 | | - |
815 | | - |
816 | | - |
817 | | - |
818 | | - |
819 | | - |
820 | | - |
821 | | - |
822 | | - |
823 | | - |
824 | | - |
825 | | - |
826 | | - |
827 | | - |
828 | | - |
829 | | - |
830 | | - |
831 | | - |
832 | | - |
833 | | - |
834 | | - |
835 | | - |
836 | | - |
837 | | - |
838 | | - |
839 | | - |
840 | | - |
841 | | - |
842 | | - |
843 | | - |
844 | | - |
845 | | - |
846 | | - |
847 | | - |
848 | | - |
849 | | - |
850 | | - |
851 | | - |
852 | | - |
853 | | - |
854 | | - |
855 | | - |
856 | | - |
857 | | - |
858 | | - |
859 | | - |
860 | | - |
861 | | - |
862 | | - |
863 | | - |
864 | | - |
865 | | - |
866 | | - |
867 | | - |
868 | | - |
869 | | - |
870 | | - |
871 | | - |
872 | | - |
873 | | - |
874 | | - |
875 | | - |
876 | | - |
877 | | - |
878 | | - |
879 | | - |
880 | | - |
881 | | - |
882 | | - |
883 | | - |
884 | | - |
885 | | - |
886 | | - |
887 | | - |
888 | | - |
889 | | - |
890 | | - |
891 | | - |
892 | | - |
893 | | - |
894 | | - |
895 | | - |
896 | | - |
897 | | - |
898 | | - |
899 | | - |
900 | | - |
901 | | - |
902 | | - |
903 | | - |
904 | | - |
905 | | - |
906 | | - |
907 | | - |
908 | | - |
909 | | - |
910 | | - |
911 | | - |
912 | | - |
913 | | - |
914 | | - |
915 | | - |
916 | | - |
917 | | - |
918 | | - |
919 | | - |
920 | | - |
921 | | - |
922 | | - |
923 | | - |
924 | | - |
925 | | - |
926 | | - |
927 | | - |
928 | | - |
929 | | - |
930 | | - |
931 | | - |
932 | | - |
933 | | - |
934 | | - |
935 | | - |
936 | | - |
937 | | - |
938 | | - |
939 | | - |
940 | | - |
941 | | - |
942 | | - |
943 | | - |
944 | | - |
945 | | - |
946 | | - |
947 | | - |
948 | | - |
949 | QWidgetMapper *QWidgetPrivate::mapper = 0; | - |
950 | QWidgetSet *QWidgetPrivate::allWidgets = 0; | - |
951 | | - |
952 | | - |
953 | | - |
954 | | - |
955 | | - |
956 | | - |
957 | QRegion qt_dirtyRegion(QWidget *widget) | - |
958 | { | - |
959 | if (!widget)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
960 | return QRegion(); never executed: return QRegion(); | 0 |
961 | | - |
962 | QWidgetBackingStore *bs = qt_widget_private(widget)->maybeBackingStore(); | - |
963 | if (!bs)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
964 | return QRegion(); never executed: return QRegion(); | 0 |
965 | | - |
966 | return bs->dirtyRegion(widget); never executed: return bs->dirtyRegion(widget); | 0 |
967 | } | - |
968 | | - |
969 | | - |
970 | | - |
971 | | - |
972 | | - |
973 | | - |
974 | | - |
975 | | - |
976 | | - |
977 | | - |
978 | | - |
979 | | - |
980 | | - |
981 | | - |
982 | | - |
983 | | - |
984 | | - |
985 | | - |
986 | | - |
987 | | - |
988 | | - |
989 | | - |
990 | struct QWidgetExceptionCleaner | - |
991 | { | - |
992 | | - |
993 | static inline void cleanup(QWidget *that, QWidgetPrivate *d) | - |
994 | { | - |
995 | #ifdef QT_NO_EXCEPTIONS | - |
996 | Q_UNUSED(that); | - |
997 | Q_UNUSED(d); | - |
998 | #else | - |
999 | QWidgetPrivate::allWidgets->remove(that); | - |
1000 | if (d->focus_next != that) { | - |
1001 | if (d->focus_next) | - |
1002 | d->focus_next->d_func()->focus_prev = d->focus_prev; | - |
1003 | if (d->focus_prev) | - |
1004 | d->focus_prev->d_func()->focus_next = d->focus_next; | - |
1005 | } | - |
1006 | #endif | - |
1007 | } never executed: end of block | 0 |
1008 | }; | - |
1009 | | - |
1010 | | - |
1011 | | - |
1012 | | - |
1013 | | - |
1014 | | - |
1015 | | - |
1016 | | - |
1017 | | - |
1018 | | - |
1019 | | - |
1020 | | - |
1021 | | - |
1022 | | - |
1023 | | - |
1024 | | - |
1025 | | - |
1026 | | - |
1027 | | - |
1028 | | - |
1029 | | - |
1030 | | - |
1031 | | - |
1032 | | - |
1033 | | - |
1034 | | - |
1035 | QWidget::QWidget(QWidget *parent, Qt::WindowFlags f) | - |
1036 | : QObject(*new QWidgetPrivate, 0), QPaintDevice() | - |
1037 | { | - |
1038 | QT_TRY { | - |
1039 | d_func()->init(parent, f); | - |
1040 | } QT_CATCH(...) { never executed: end of block dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1041 | QWidgetExceptionCleaner::cleanup(this, d_func()); dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1042 | QT_RETHROW; dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1043 | } dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1044 | } | - |
1045 | | - |
1046 | | - |
1047 | | - |
1048 | | - |
1049 | QWidget::QWidget(QWidgetPrivate &dd, QWidget* parent, Qt::WindowFlags f) | - |
1050 | : QObject(dd, 0), QPaintDevice() | - |
1051 | { | - |
1052 | Q_D(QWidget); | - |
1053 | QT_TRY { | - |
1054 | d->init(parent, f); | - |
1055 | } QT_CATCH(...) { never executed: end of block dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1056 | QWidgetExceptionCleaner::cleanup(this, d_func()); dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1057 | QT_RETHROW; dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1058 | } dead code: { QWidgetExceptionCleaner::cleanup(this, d_func()); qt_noop(); } | - |
1059 | } | - |
1060 | | - |
1061 | | - |
1062 | | - |
1063 | | - |
1064 | int QWidget::devType() const | - |
1065 | { | - |
1066 | return QInternal::Widget; never executed: return QInternal::Widget; | 0 |
1067 | } | - |
1068 | | - |
1069 | | - |
1070 | | - |
1071 | void QWidgetPrivate::adjustFlags(Qt::WindowFlags &flags, QWidget *w) | - |
1072 | { | - |
1073 | bool customize = (flags & (Qt::CustomizeWindowHint | - |
1074 | | Qt::FramelessWindowHint | - |
1075 | | Qt::WindowTitleHint | - |
1076 | | Qt::WindowSystemMenuHint | - |
1077 | | Qt::WindowMinimizeButtonHint | - |
1078 | | Qt::WindowMaximizeButtonHint | - |
1079 | | Qt::WindowCloseButtonHint | - |
1080 | | Qt::WindowContextHelpButtonHint)); | - |
1081 | | - |
1082 | uint type = (flags & Qt::WindowType_Mask); | - |
1083 | | - |
1084 | if ((type == Qt::Widget || type == Qt::SubWindow) && w && !w->parent()) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1085 | type = Qt::Window; | - |
1086 | flags |= Qt::Window; | - |
1087 | } never executed: end of block | 0 |
1088 | | - |
1089 | if (flags & Qt::CustomizeWindowHint) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1090 | | - |
1091 | | - |
1092 | | - |
1093 | | - |
1094 | #ifndef Q_DEAD_CODE_FROM_QT4_MAC | - |
1095 | if ((flags & (Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::WindowContextHelpButtonHint))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1096 | # ifdef Q_OS_WIN | - |
1097 | && type != Qt::Dialog | - |
1098 | # endif | - |
1099 | ) { | - |
1100 | flags |= Qt::WindowSystemMenuHint; | - |
1101 | #else | - |
1102 | if (flags & (Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | - |
1103 | | Qt::WindowSystemMenuHint)) { | - |
1104 | #endif | - |
1105 | flags |= Qt::WindowTitleHint; | - |
1106 | flags &= ~Qt::FramelessWindowHint; | - |
1107 | } never executed: end of block | 0 |
1108 | } else if (customize && !(flags & Qt::FramelessWindowHint)) { never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1109 | | - |
1110 | | - |
1111 | | - |
1112 | flags |= Qt::WindowSystemMenuHint; | - |
1113 | flags |= Qt::WindowTitleHint; | - |
1114 | } never executed: end of block | 0 |
1115 | if (customize)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1116 | ; never executed: ; | 0 |
1117 | else if (type == Qt::Dialog || type == Qt::Sheet)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1118 | #ifndef Q_OS_WINCE | - |
1119 | flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowContextHelpButtonHint | Qt::WindowCloseButtonHint; never executed: flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowContextHelpButtonHint | Qt::WindowCloseButtonHint; | 0 |
1120 | #else | - |
1121 | flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint; | - |
1122 | #endif | - |
1123 | else if (type == Qt::Tool)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1124 | flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint; never executed: flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint; | 0 |
1125 | else | - |
1126 | flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint | never executed: flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint; | 0 |
1127 | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint; never executed: flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint; | 0 |
1128 | if (w->testAttribute(Qt::WA_TransparentForMouseEvents))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1129 | flags |= Qt::WindowTransparentForInput; never executed: flags |= Qt::WindowTransparentForInput; | 0 |
1130 | } never executed: end of block | 0 |
1131 | | - |
1132 | void QWidgetPrivate::init(QWidget *parentWidget, Qt::WindowFlags f) | - |
1133 | { | - |
1134 | Q_Q(QWidget); | - |
1135 | if (Q_UNLIKELY(!qobject_cast<QApplication *>(QCoreApplication::instance())))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1136 | qFatal("QWidget: Cannot create a QWidget without QApplication"); never executed: QMessageLogger(__FILE__, 1136, __PRETTY_FUNCTION__).fatal("QWidget: Cannot create a QWidget without QApplication"); | 0 |
1137 | | - |
1138 | Q_ASSERT(allWidgets); | - |
1139 | if (allWidgets)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1140 | allWidgets->insert(q); never executed: allWidgets->insert(q); | 0 |
1141 | | - |
1142 | int targetScreen = -1; | - |
1143 | if (parentWidget && parentWidget->windowType() == Qt::Desktop) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1144 | const QDesktopScreenWidget *sw = qobject_cast<const QDesktopScreenWidget *>(parentWidget); | - |
1145 | targetScreen = sw ? sw->screenNumber() : 0;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1146 | parentWidget = 0; | - |
1147 | } never executed: end of block | 0 |
1148 | | - |
1149 | q->data = &data; | - |
1150 | | - |
1151 | #ifndef QT_NO_THREAD | - |
1152 | if (!parent) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1153 | Q_ASSERT_X(q->thread() == qApp->thread(), "QWidget", | - |
1154 | "Widgets must be created in the GUI thread."); | - |
1155 | } never executed: end of block | 0 |
1156 | #endif | - |
1157 | | - |
1158 | #if defined(Q_DEAD_CODE_FROM_QT4_X11) | - |
1159 | if (desktopWidget) { | - |
1160 | | - |
1161 | | - |
1162 | xinfo = desktopWidget->d_func()->xinfo; | - |
1163 | } | - |
1164 | #endif | - |
1165 | if (targetScreen >= 0) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1166 | topData()->initialScreenIndex = targetScreen; | - |
1167 | if (QWindow *window = q->windowHandle())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1168 | window->setScreen(QGuiApplication::screens().value(targetScreen, Q_NULLPTR)); never executed: window->setScreen(QGuiApplication::screens().value(targetScreen, nullptr)); | 0 |
1169 | } never executed: end of block | 0 |
1170 | | - |
1171 | data.fstrut_dirty = true; | - |
1172 | | - |
1173 | data.winid = 0; | - |
1174 | data.widget_attributes = 0; | - |
1175 | data.window_flags = f; | - |
1176 | data.window_state = 0; | - |
1177 | data.focus_policy = 0; | - |
1178 | data.context_menu_policy = Qt::DefaultContextMenu; | - |
1179 | data.window_modality = Qt::NonModal; | - |
1180 | | - |
1181 | data.sizehint_forced = 0; | - |
1182 | data.is_closing = 0; | - |
1183 | data.in_show = 0; | - |
1184 | data.in_set_window_state = 0; | - |
1185 | data.in_destructor = false; | - |
1186 | | - |
1187 | | - |
1188 | if (f & Qt::MSWindowsOwnDC) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1189 | mustHaveWindowHandle = 1; | - |
1190 | q->setAttribute(Qt::WA_NativeWindow); | - |
1191 | } never executed: end of block | 0 |
1192 | | - |
1193 | | - |
1194 | | - |
1195 | | - |
1196 | q->setAttribute(Qt::WA_QuitOnClose); | - |
1197 | adjustQuitOnCloseAttribute(); | - |
1198 | | - |
1199 | q->setAttribute(Qt::WA_WState_Hidden); | - |
1200 | | - |
1201 | | - |
1202 | data.crect = parentWidget ? QRect(0,0,100,30) : QRect(0,0,640,480);TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1203 | focus_next = focus_prev = q; | - |
1204 | | - |
1205 | if ((f & Qt::WindowType_Mask) == Qt::Desktop)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1206 | q->create(); never executed: q->create(); | 0 |
1207 | else if (parentWidget)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1208 | q->setParent(parentWidget, data.window_flags); never executed: q->setParent(parentWidget, data.window_flags); | 0 |
1209 | else { | - |
1210 | adjustFlags(data.window_flags, q); | - |
1211 | resolveLayoutDirection(); | - |
1212 | | - |
1213 | const QBrush &background = q->palette().brush(QPalette::Window); | - |
1214 | setOpaque(q->isWindow() && background.style() != Qt::NoBrush && background.isOpaque()); | - |
1215 | } never executed: end of block | 0 |
1216 | data.fnt = QFont(data.fnt, q); | - |
1217 | #if defined(Q_DEAD_CODE_FROM_QT4_X11) | - |
1218 | data.fnt.x11SetScreen(xinfo.screen()); | - |
1219 | #endif // Q_DEAD_CODE_FROM_QT4_X11 | - |
1220 | | - |
1221 | q->setAttribute(Qt::WA_PendingMoveEvent); | - |
1222 | q->setAttribute(Qt::WA_PendingResizeEvent); | - |
1223 | | - |
1224 | if (++QWidgetPrivate::instanceCounter > QWidgetPrivate::maxInstances)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1225 | QWidgetPrivate::maxInstances = QWidgetPrivate::instanceCounter; never executed: QWidgetPrivate::maxInstances = QWidgetPrivate::instanceCounter; | 0 |
1226 | | - |
1227 | if (QApplicationPrivate::testAttribute(Qt::AA_ImmediateWidgetCreation)) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1228 | q->create(); never executed: q->create(); | 0 |
1229 | | - |
1230 | QEvent e(QEvent::Create); | - |
1231 | QApplication::sendEvent(q, &e); | - |
1232 | QApplication::postEvent(q, new QEvent(QEvent::PolishRequest)); | - |
1233 | | - |
1234 | extraPaintEngine = 0; | - |
1235 | | - |
1236 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
1237 | | - |
1238 | if (parentWidget && parentWidget->d_func() && parentWidget->d_func()->isInUnifiedToolbar) { | - |
1239 | if (parentWidget->d_func()->unifiedSurface) { | - |
1240 | QWidget *toolbar = parentWidget->d_func()->toolbar_ancestor; | - |
1241 | parentWidget->d_func()->unifiedSurface->recursiveRedirect(toolbar, toolbar, toolbar->d_func()->toolbar_offset); | - |
1242 | } | - |
1243 | } | - |
1244 | #endif // Q_DEAD_CODE_FROM_QT4_MAC | - |
1245 | } never executed: end of block | 0 |
1246 | | - |
1247 | | - |
1248 | | - |
1249 | void QWidgetPrivate::createRecursively() | - |
1250 | { | - |
1251 | Q_Q(QWidget); | - |
1252 | q->create(0, true, true); | - |
1253 | for (int i = 0; i < children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1254 | QWidget *child = qobject_cast<QWidget *>(children.at(i)); | - |
1255 | if (child && !child->isHidden() && !child->isWindow() && !child->testAttribute(Qt::WA_WState_Created))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1256 | child->d_func()->createRecursively(); never executed: child->d_func()->createRecursively(); | 0 |
1257 | } never executed: end of block | 0 |
1258 | } never executed: end of block | 0 |
1259 | | - |
1260 | | - |
1261 | | - |
1262 | | - |
1263 | | - |
1264 | | - |
1265 | | - |
1266 | | - |
1267 | | - |
1268 | | - |
1269 | | - |
1270 | | - |
1271 | | - |
1272 | | - |
1273 | | - |
1274 | | - |
1275 | | - |
1276 | | - |
1277 | | - |
1278 | | - |
1279 | | - |
1280 | | - |
1281 | | - |
1282 | | - |
1283 | | - |
1284 | | - |
1285 | void QWidget::create(WId window, bool initializeWindow, bool destroyOldWindow) | - |
1286 | { | - |
1287 | Q_D(QWidget); | - |
1288 | if (Q_UNLIKELY(window))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1289 | qWarning("QWidget::create(): Parameter 'window' does not have any effect."); never executed: QMessageLogger(__FILE__, 1289, __PRETTY_FUNCTION__).warning("QWidget::create(): Parameter 'window' does not have any effect."); | 0 |
1290 | if (testAttribute(Qt::WA_WState_Created) && window == 0 && internalWinId())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1291 | return; never executed: return; | 0 |
1292 | | - |
1293 | if (d->data.in_destructor)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1294 | return; never executed: return; | 0 |
1295 | | - |
1296 | Qt::WindowType type = windowType(); | - |
1297 | Qt::WindowFlags &flags = data->window_flags; | - |
1298 | | - |
1299 | if ((type == Qt::Widget || type == Qt::SubWindow) && !parentWidget()) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1300 | type = Qt::Window; | - |
1301 | flags |= Qt::Window; | - |
1302 | } never executed: end of block | 0 |
1303 | | - |
1304 | if (QWidget *parent = parentWidget()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1305 | if (type & Qt::Window) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1306 | if (!parent->testAttribute(Qt::WA_WState_Created))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1307 | parent->createWinId(); never executed: parent->createWinId(); | 0 |
1308 | } else if (testAttribute(Qt::WA_NativeWindow) && !parent->internalWinId() never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1309 | && !testAttribute(Qt::WA_DontCreateNativeAncestors)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1310 | | - |
1311 | | - |
1312 | | - |
1313 | d->createWinId(); | - |
1314 | | - |
1315 | Q_ASSERT(testAttribute(Qt::WA_WState_Created)); | - |
1316 | Q_ASSERT(internalWinId()); | - |
1317 | return; never executed: return; | 0 |
1318 | } | - |
1319 | } never executed: end of block | 0 |
1320 | | - |
1321 | | - |
1322 | static const bool paintOnScreenEnv = qEnvironmentVariableIntValue("QT_ONSCREEN_PAINT") > 0; | - |
1323 | if (paintOnScreenEnv)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1324 | setAttribute(Qt::WA_PaintOnScreen); never executed: setAttribute(Qt::WA_PaintOnScreen); | 0 |
1325 | | - |
1326 | if (QApplicationPrivate::testAttribute(Qt::AA_NativeWindows))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1327 | setAttribute(Qt::WA_NativeWindow); never executed: setAttribute(Qt::WA_NativeWindow); | 0 |
1328 | | - |
1329 | #ifdef ALIEN_DEBUG | - |
1330 | qDebug() << "QWidget::create:" << this << "parent:" << parentWidget() | - |
1331 | << "Alien?" << !testAttribute(Qt::WA_NativeWindow); | - |
1332 | #endif | - |
1333 | | - |
1334 | #if defined (Q_DEAD_CODE_FROM_QT4_WIN) && !defined(QT_NO_DRAGANDDROP) | - |
1335 | | - |
1336 | | - |
1337 | if (testAttribute(Qt::WA_WState_Created) && !internalWinId() && testAttribute(Qt::WA_NativeWindow) | - |
1338 | && d->extra && d->extra->dropTarget) { | - |
1339 | d->registerDropSite(false); | - |
1340 | } | - |
1341 | #endif // defined (Q_DEAD_CODE_FROM_QT4_WIN) && !defined(QT_NO_DRAGANDDROP) | - |
1342 | | - |
1343 | d->updateIsOpaque(); | - |
1344 | | - |
1345 | setAttribute(Qt::WA_WState_Created); | - |
1346 | d->create_sys(window, initializeWindow, destroyOldWindow); | - |
1347 | | - |
1348 | | - |
1349 | if (isWindow() && windowType() != Qt::Desktop) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1350 | d->topData()->backingStoreTracker.destroy(); | - |
1351 | if (hasBackingStoreSupport())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1352 | d->topData()->backingStoreTracker.create(this); never executed: d->topData()->backingStoreTracker.create(this); | 0 |
1353 | } never executed: end of block | 0 |
1354 | | - |
1355 | d->setModal_sys(); | - |
1356 | | - |
1357 | if (!isWindow() && parentWidget() && parentWidget()->testAttribute(Qt::WA_DropSiteRegistered))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1358 | setAttribute(Qt::WA_DropSiteRegistered, true); never executed: setAttribute(Qt::WA_DropSiteRegistered, true); | 0 |
1359 | | - |
1360 | #ifdef QT_EVAL | - |
1361 | extern void qt_eval_init_widget(QWidget *w); | - |
1362 | qt_eval_init_widget(this); | - |
1363 | #endif | - |
1364 | | - |
1365 | | - |
1366 | if (testAttribute(Qt::WA_SetWindowIcon))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1367 | d->setWindowIcon_sys(); never executed: d->setWindowIcon_sys(); | 0 |
1368 | | - |
1369 | if (isWindow() && !d->topData()->iconText.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1370 | d->setWindowIconText_helper(d->topData()->iconText); never executed: d->setWindowIconText_helper(d->topData()->iconText); | 0 |
1371 | if (isWindow() && !d->topData()->caption.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1372 | d->setWindowTitle_helper(d->topData()->caption); never executed: d->setWindowTitle_helper(d->topData()->caption); | 0 |
1373 | if (windowType() != Qt::Desktop) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1374 | d->updateSystemBackground(); | - |
1375 | | - |
1376 | if (isWindow() && !testAttribute(Qt::WA_SetWindowIcon))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1377 | d->setWindowIcon_sys(); never executed: d->setWindowIcon_sys(); | 0 |
1378 | } never executed: end of block | 0 |
1379 | | - |
1380 | | - |
1381 | | - |
1382 | | - |
1383 | | - |
1384 | | - |
1385 | d->updateFrameStrut(); | - |
1386 | } never executed: end of block | 0 |
1387 | | - |
1388 | void q_createNativeChildrenAndSetParent(const QWidget *parentWidget) | - |
1389 | { | - |
1390 | QObjectList children = parentWidget->children(); | - |
1391 | for (int i = 0; i < children.size(); i++) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1392 | if (children.at(i)->isWidgetType()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1393 | const QWidget *childWidget = qobject_cast<const QWidget *>(children.at(i)); | - |
1394 | if (childWidget) { TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1395 | if (childWidget->testAttribute(Qt::WA_NativeWindow)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1396 | if (!childWidget->internalWinId())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1397 | childWidget->winId(); never executed: childWidget->winId(); | 0 |
1398 | if (childWidget->windowHandle()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1399 | if (childWidget->isWindow()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1400 | childWidget->windowHandle()->setTransientParent(parentWidget->window()->windowHandle()); | - |
1401 | } else { never executed: end of block | 0 |
1402 | childWidget->windowHandle()->setParent(childWidget->nativeParentWidget()->windowHandle()); | - |
1403 | } never executed: end of block | 0 |
1404 | } | - |
1405 | } else { never executed: end of block | 0 |
1406 | q_createNativeChildrenAndSetParent(childWidget); | - |
1407 | } never executed: end of block | 0 |
1408 | } | - |
1409 | } never executed: end of block | 0 |
1410 | } never executed: end of block | 0 |
1411 | | - |
1412 | } never executed: end of block | 0 |
1413 | | - |
1414 | void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyOldWindow) | - |
1415 | { | - |
1416 | Q_Q(QWidget); | - |
1417 | | - |
1418 | Q_UNUSED(window); | - |
1419 | Q_UNUSED(initializeWindow); | - |
1420 | Q_UNUSED(destroyOldWindow); | - |
1421 | | - |
1422 | Qt::WindowFlags flags = data.window_flags; | - |
1423 | | - |
1424 | if (!q->testAttribute(Qt::WA_NativeWindow) && !q->isWindow())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1425 | return; never executed: return; | 0 |
1426 | | - |
1427 | QWindow *win = topData()->window; | - |
1428 | | - |
1429 | | - |
1430 | if (!win) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1431 | createTLSysExtra(); | - |
1432 | win = topData()->window; | - |
1433 | } never executed: end of block | 0 |
1434 | | - |
1435 | const auto dynamicPropertyNames = q->dynamicPropertyNames(); | - |
1436 | for (const QByteArray &propertyName : dynamicPropertyNames) { | - |
1437 | if (!qstrncmp(propertyName, "_q_platform_", 12))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1438 | win->setProperty(propertyName, q->property(propertyName)); never executed: win->setProperty(propertyName, q->property(propertyName)); | 0 |
1439 | } never executed: end of block | 0 |
1440 | | - |
1441 | if (q->testAttribute(Qt::WA_ShowWithoutActivating))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1442 | win->setProperty("_q_showWithoutActivating", QVariant(true)); never executed: win->setProperty("_q_showWithoutActivating", QVariant(true)); | 0 |
1443 | if (q->testAttribute(Qt::WA_MacAlwaysShowToolWindow))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1444 | win->setProperty("_q_macAlwaysShowToolWindow", QVariant::fromValue(QVariant(true))); never executed: win->setProperty("_q_macAlwaysShowToolWindow", QVariant::fromValue(QVariant(true))); | 0 |
1445 | setNetWmWindowTypes(true); | - |
1446 | win->setFlags(data.window_flags); | - |
1447 | fixPosIncludesFrame(); | - |
1448 | if (q->testAttribute(Qt::WA_Moved)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1449 | || !QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::WindowManagement))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1450 | win->setGeometry(q->geometry()); never executed: win->setGeometry(q->geometry()); | 0 |
1451 | else | - |
1452 | win->resize(q->size()); never executed: win->resize(q->size()); | 0 |
1453 | if (win->isTopLevel()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1454 | int screenNumber = topData()->initialScreenIndex; | - |
1455 | topData()->initialScreenIndex = -1; | - |
1456 | if (screenNumber < 0) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1457 | screenNumber = q->windowType() != Qt::DesktopTRUE | never evaluated | FALSE | never evaluated |
| 0 |
1458 | ? QApplication::desktop()->screenNumber(q) : 0; | - |
1459 | } never executed: end of block | 0 |
1460 | win->setScreen(QGuiApplication::screens().value(screenNumber, Q_NULLPTR)); | - |
1461 | } never executed: end of block | 0 |
1462 | | - |
1463 | QSurfaceFormat format = win->requestedFormat(); | - |
1464 | if ((flags & Qt::Window) && win->surfaceType() != QSurface::OpenGLSurfaceTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1465 | && q->testAttribute(Qt::WA_TranslucentBackground)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1466 | format.setAlphaBufferSize(8); | - |
1467 | } never executed: end of block | 0 |
1468 | win->setFormat(format); | - |
1469 | | - |
1470 | if (QWidget *nativeParent = q->nativeParentWidget()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1471 | if (nativeParent->windowHandle()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1472 | if (flags & Qt::Window) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1473 | win->setTransientParent(nativeParent->window()->windowHandle()); | - |
1474 | win->setParent(0); | - |
1475 | } else { never executed: end of block | 0 |
1476 | win->setTransientParent(0); | - |
1477 | win->setParent(nativeParent->windowHandle()); | - |
1478 | } never executed: end of block | 0 |
1479 | } | - |
1480 | } never executed: end of block | 0 |
1481 | | - |
1482 | qt_window_private(win)->positionPolicy = topData()->posIncludesFrame ?TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1483 | QWindowPrivate::WindowFrameInclusive : QWindowPrivate::WindowFrameExclusive; | - |
1484 | win->create(); | - |
1485 | | - |
1486 | if ((flags & Qt::Desktop) == Qt::Window)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1487 | win->handle()->setFrameStrutEventsEnabled(true); never executed: win->handle()->setFrameStrutEventsEnabled(true); | 0 |
1488 | | - |
1489 | data.window_flags = win->flags(); | - |
1490 | | - |
1491 | if (!topData()->role.isNull())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1492 | QXcbWindowFunctions::setWmWindowRole(win, topData()->role.toLatin1()); never executed: QXcbWindowFunctions::setWmWindowRole(win, topData()->role.toLatin1()); | 0 |
1493 | | - |
1494 | QBackingStore *store = q->backingStore(); | - |
1495 | | - |
1496 | if (!store) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1497 | if (win && q->windowType() != Qt::Desktop) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1498 | if (q->isTopLevel())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1499 | q->setBackingStore(new QBackingStore(win)); never executed: q->setBackingStore(new QBackingStore(win)); | 0 |
1500 | } else { never executed: end of block | 0 |
1501 | q->setAttribute(Qt::WA_PaintOnScreen, true); | - |
1502 | } never executed: end of block | 0 |
1503 | } | - |
1504 | | - |
1505 | setWindowModified_helper(); | - |
1506 | WId id = win->winId(); | - |
1507 | | - |
1508 | Q_ASSERT(id != WId(0)); | - |
1509 | setWinId(id); | - |
1510 | | - |
1511 | | - |
1512 | q_createNativeChildrenAndSetParent(q); | - |
1513 | | - |
1514 | if (extra && !extra->mask.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1515 | setMask_sys(extra->mask); never executed: setMask_sys(extra->mask); | 0 |
1516 | | - |
1517 | if (data.crect.width() == 0 || data.crect.height() == 0) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1518 | q->setAttribute(Qt::WA_OutsideWSRange, true); | - |
1519 | } else if (q->isVisible()) { never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1520 | | - |
1521 | win->setVisible(true); | - |
1522 | } never executed: end of block | 0 |
1523 | } never executed: end of block | 0 |
1524 | | - |
1525 | #ifdef Q_OS_WIN | - |
1526 | static const char activeXNativeParentHandleProperty[] = "_q_embedded_native_parent_handle"; | - |
1527 | #endif | - |
1528 | | - |
1529 | void QWidgetPrivate::createTLSysExtra() | - |
1530 | { | - |
1531 | Q_Q(QWidget); | - |
1532 | if (!extra->topextra->window && (q->testAttribute(Qt::WA_NativeWindow) || q->isWindow())) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1533 | extra->topextra->window = new QWidgetWindow(q); | - |
1534 | if (extra->minw || extra->minh)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1535 | extra->topextra->window->setMinimumSize(QSize(extra->minw, extra->minh)); never executed: extra->topextra->window->setMinimumSize(QSize(extra->minw, extra->minh)); | 0 |
1536 | if (extra->maxw != QWIDGETSIZE_MAX || extra->maxh != QWIDGETSIZE_MAX)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1537 | extra->topextra->window->setMaximumSize(QSize(extra->maxw, extra->maxh)); never executed: extra->topextra->window->setMaximumSize(QSize(extra->maxw, extra->maxh)); | 0 |
1538 | if (extra->topextra->opacity != 255 && q->isWindow())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1539 | extra->topextra->window->setOpacity(qreal(extra->topextra->opacity) / qreal(255)); never executed: extra->topextra->window->setOpacity(qreal(extra->topextra->opacity) / qreal(255)); | 0 |
1540 | #ifdef Q_OS_WIN | - |
1541 | | - |
1542 | const QVariant activeXNativeParentHandle = q->property(activeXNativeParentHandleProperty); | - |
1543 | if (activeXNativeParentHandle.isValid()) | - |
1544 | extra->topextra->window->setProperty(activeXNativeParentHandleProperty, activeXNativeParentHandle); | - |
1545 | if (q->inherits("QTipLabel") || q->inherits("QAlphaWidget")) | - |
1546 | extra->topextra->window->setProperty("_q_windowsDropShadow", QVariant(true)); | - |
1547 | #endif | - |
1548 | } never executed: end of block | 0 |
1549 | | - |
1550 | } never executed: end of block | 0 |
1551 | | - |
1552 | | - |
1553 | | - |
1554 | | - |
1555 | | - |
1556 | | - |
1557 | | - |
1558 | | - |
1559 | QWidget::~QWidget() | - |
1560 | { | - |
1561 | Q_D(QWidget); | - |
1562 | d->data.in_destructor = true; | - |
1563 | | - |
1564 | #if defined (QT_CHECK_STATE) | - |
1565 | if (Q_UNLIKELY(paintingActive())) | - |
1566 | qWarning("QWidget: %s (%s) deleted while being painted", className(), name()); | - |
1567 | #endif | - |
1568 | | - |
1569 | #ifndef QT_NO_GESTURES | - |
1570 | if (QGestureManager *manager = QGestureManager::instance()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1571 | | - |
1572 | for (auto it = d->gestureContext.keyBegin(), end = d->gestureContext.keyEnd(); it != end; ++it)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1573 | manager->cleanupCachedGestures(this, *it); never executed: manager->cleanupCachedGestures(this, *it); | 0 |
1574 | } never executed: end of block | 0 |
1575 | d->gestureContext.clear(); | - |
1576 | #endif | - |
1577 | | - |
1578 | | - |
1579 | d->registerDropSite(false); | - |
1580 | | - |
1581 | #ifndef QT_NO_ACTION | - |
1582 | | - |
1583 | for (int i = 0; i < d->actions.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1584 | QActionPrivate *apriv = d->actions.at(i)->d_func(); | - |
1585 | apriv->widgets.removeAll(this); | - |
1586 | } never executed: end of block | 0 |
1587 | d->actions.clear(); | - |
1588 | #endif | - |
1589 | | - |
1590 | #ifndef QT_NO_SHORTCUT | - |
1591 | | - |
1592 | | - |
1593 | if (!QApplicationPrivate::is_app_closing && testAttribute(Qt::WA_GrabbedShortcut))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1594 | qApp->d_func()->shortcutMap.removeShortcut(0, this, QKeySequence()); never executed: (static_cast<QApplication *>(QCoreApplication::instance()))->d_func()->shortcutMap.removeShortcut(0, this, QKeySequence()); | 0 |
1595 | #endif | - |
1596 | | - |
1597 | | - |
1598 | delete d->layout; | - |
1599 | d->layout = 0; | - |
1600 | | - |
1601 | | - |
1602 | Q_ASSERT(d->focus_next->d_func()->focus_prev == this); | - |
1603 | Q_ASSERT(d->focus_prev->d_func()->focus_next == this); | - |
1604 | | - |
1605 | if (d->focus_next != this) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1606 | d->focus_next->d_func()->focus_prev = d->focus_prev; | - |
1607 | d->focus_prev->d_func()->focus_next = d->focus_next; | - |
1608 | d->focus_next = d->focus_prev = 0; | - |
1609 | } never executed: end of block | 0 |
1610 | | - |
1611 | | - |
1612 | QT_TRY { | - |
1613 | #ifndef QT_NO_GRAPHICSVIEW | - |
1614 | const QWidget* w = this; | - |
1615 | while (w->d_func()->extra && w->d_func()->extra->focus_proxy)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1616 | w = w->d_func()->extra->focus_proxy; never executed: w = w->d_func()->extra->focus_proxy; | 0 |
1617 | QWidget *window = w->window(); | - |
1618 | QWExtra *e = window ? window->d_func()->extra : 0;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1619 | if (!e || !e->proxyWidget || (w->parentWidget() && w->parentWidget()->d_func()->focus_child == this))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1620 | #endif | - |
1621 | clearFocus(); never executed: clearFocus(); | 0 |
1622 | } QT_CATCH(...) { never executed: end of block dead code: { } | - |
1623 | dead code: { } | - |
1624 | } dead code: { } | - |
1625 | | - |
1626 | d->setDirtyOpaqueRegion(); | - |
1627 | | - |
1628 | if (isWindow() && isVisible() && internalWinId()) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1629 | QT_TRY { | - |
1630 | d->close_helper(QWidgetPrivate::CloseNoEvent); | - |
1631 | } QT_CATCH(...) { never executed: end of block dead code: { if (true) { hide(); } else { } } | - |
1632 | dead code: { if (true) { hide(); } else { } } | - |
1633 | QT_TRY { dead code: { if (true) { hide(); } else { } } | - |
1634 | hide(); dead code: { if (true) { hide(); } else { } } | - |
1635 | } QT_CATCH(...) { dead code: { if (true) { hide(); } else { } } dead code: { } | - |
1636 | dead code: { if (true) { hide(); } else { } } dead code: { } | - |
1637 | } dead code: { if (true) { hide(); } else { } } dead code: { } | - |
1638 | } dead code: { if (true) { hide(); } else { } } | - |
1639 | } | - |
1640 | | - |
1641 | #if defined(Q_DEAD_CODE_FROM_QT4_WIN) || defined(Q_DEAD_CODE_FROM_QT4_X11)|| defined(Q_DEAD_CODE_FROM_QT4_MAC) | - |
1642 | else if (!internalWinId() && isVisible()) { | - |
1643 | qApp->d_func()->sendSyntheticEnterLeave(this); | - |
1644 | } | - |
1645 | #endif | - |
1646 | else if (isVisible()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1647 | qApp->d_func()->sendSyntheticEnterLeave(this); | - |
1648 | } never executed: end of block | 0 |
1649 | | - |
1650 | if (QWidgetBackingStore *bs = d->maybeBackingStore()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1651 | bs->removeDirtyWidget(this); | - |
1652 | if (testAttribute(Qt::WA_StaticContents))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1653 | bs->removeStaticWidget(this); never executed: bs->removeStaticWidget(this); | 0 |
1654 | } never executed: end of block | 0 |
1655 | | - |
1656 | delete d->needsFlush; | - |
1657 | d->needsFlush = 0; | - |
1658 | | - |
1659 | | - |
1660 | | - |
1661 | bool blocked = d->blockSig; | - |
1662 | d->blockSig = 0; | - |
1663 | | - |
1664 | if (d->isSignalConnected(0)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1665 | QT_TRY { | - |
1666 | emit destroyed(this); | - |
1667 | } QT_CATCH(...) { never executed: end of block dead code: { QMessageLogger(__FILE__, 1670, __PRETTY_FUNCTION__).warning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); qt_noop(); } | - |
1668 | dead code: { QMessageLogger(__FILE__, 1670, __PRETTY_FUNCTION__).warning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); qt_noop(); } | - |
1669 | dead code: { QMessageLogger(__FILE__, 1670, __PRETTY_FUNCTION__).warning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); qt_noop(); } | - |
1670 | qWarning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); dead code: { QMessageLogger(__FILE__, 1670, __PRETTY_FUNCTION__).warning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); qt_noop(); } | - |
1671 | QT_RETHROW; dead code: { QMessageLogger(__FILE__, 1670, __PRETTY_FUNCTION__).warning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); qt_noop(); } | - |
1672 | } dead code: { QMessageLogger(__FILE__, 1670, __PRETTY_FUNCTION__).warning("Detected an unexpected exception in ~QWidget while emitting destroyed()."); qt_noop(); } | - |
1673 | } | - |
1674 | | - |
1675 | if (d->declarativeData) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1676 | if (static_cast<QAbstractDeclarativeDataImpl*>(d->declarativeData)->ownedByQml1) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1677 | if (QAbstractDeclarativeData::destroyed_qml1)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1678 | QAbstractDeclarativeData::destroyed_qml1(d->declarativeData, this); never executed: QAbstractDeclarativeData::destroyed_qml1(d->declarativeData, this); | 0 |
1679 | } else { never executed: end of block | 0 |
1680 | if (QAbstractDeclarativeData::destroyed)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1681 | QAbstractDeclarativeData::destroyed(d->declarativeData, this); never executed: QAbstractDeclarativeData::destroyed(d->declarativeData, this); | 0 |
1682 | } never executed: end of block | 0 |
1683 | d->declarativeData = 0; | - |
1684 | } never executed: end of block | 0 |
1685 | | - |
1686 | d->blockSig = blocked; | - |
1687 | | - |
1688 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
1689 | | - |
1690 | | - |
1691 | | - |
1692 | | - |
1693 | extern void qt_mac_clearCocoaViewQWidgetPointers(QWidget *); | - |
1694 | qt_mac_clearCocoaViewQWidgetPointers(this); | - |
1695 | #endif | - |
1696 | | - |
1697 | if (!d->children.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1698 | d->deleteChildren(); never executed: d->deleteChildren(); | 0 |
1699 | | - |
1700 | QApplication::removePostedEvents(this); | - |
1701 | | - |
1702 | QT_TRY { | - |
1703 | destroy(); | - |
1704 | } QT_CATCH(...) { never executed: end of block dead code: { } | - |
1705 | dead code: { } | - |
1706 | } dead code: { } | - |
1707 | --QWidgetPrivate::instanceCounter; | - |
1708 | | - |
1709 | if (QWidgetPrivate::allWidgets) TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1710 | QWidgetPrivate::allWidgets->remove(this); never executed: QWidgetPrivate::allWidgets->remove(this); | 0 |
1711 | | - |
1712 | QT_TRY { | - |
1713 | QEvent e(QEvent::Destroy); | - |
1714 | QCoreApplication::sendEvent(this, &e); | - |
1715 | } QT_CATCH(const std::exception&) { never executed: end of block dead code: { } | - |
1716 | dead code: { } | - |
1717 | } dead code: { } | - |
1718 | } | - |
1719 | | - |
1720 | int QWidgetPrivate::instanceCounter = 0; | - |
1721 | int QWidgetPrivate::maxInstances = 0; | - |
1722 | | - |
1723 | void QWidgetPrivate::setWinId(WId id) | - |
1724 | { | - |
1725 | Q_Q(QWidget); | - |
1726 | | - |
1727 | | - |
1728 | | - |
1729 | | - |
1730 | | - |
1731 | bool userDesktopWidget = qt_desktopWidget != 0 && qt_desktopWidget != q && q->windowType() == Qt::Desktop;TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1732 | if (mapper && data.winid && !userDesktopWidget) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1733 | mapper->remove(data.winid); | - |
1734 | } never executed: end of block | 0 |
1735 | | - |
1736 | const WId oldWinId = data.winid; | - |
1737 | | - |
1738 | data.winid = id; | - |
1739 | #if defined(Q_DEAD_CODE_FROM_QT4_X11) | - |
1740 | hd = id; | - |
1741 | #endif | - |
1742 | if (mapper && id && !userDesktopWidget) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1743 | mapper->insert(data.winid, q); | - |
1744 | } never executed: end of block | 0 |
1745 | | - |
1746 | if(oldWinId != id) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1747 | QEvent e(QEvent::WinIdChange); | - |
1748 | QCoreApplication::sendEvent(q, &e); | - |
1749 | } never executed: end of block | 0 |
1750 | } never executed: end of block | 0 |
1751 | | - |
1752 | void QWidgetPrivate::createTLExtra() | - |
1753 | { | - |
1754 | if (!extra)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1755 | createExtra(); never executed: createExtra(); | 0 |
1756 | if (!extra->topextra) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1757 | QTLWExtra* x = extra->topextra = new QTLWExtra; | - |
1758 | x->icon = 0; | - |
1759 | x->backingStore = 0; | - |
1760 | x->sharedPainter = 0; | - |
1761 | x->incw = x->inch = 0; | - |
1762 | x->basew = x->baseh = 0; | - |
1763 | x->frameStrut.setCoords(0, 0, 0, 0); | - |
1764 | x->normalGeometry = QRect(0,0,-1,-1); | - |
1765 | x->savedFlags = 0; | - |
1766 | x->opacity = 255; | - |
1767 | x->posIncludesFrame = 0; | - |
1768 | x->sizeAdjusted = false; | - |
1769 | x->inTopLevelResize = false; | - |
1770 | x->inRepaint = false; | - |
1771 | x->embedded = 0; | - |
1772 | x->window = 0; | - |
1773 | x->shareContext = 0; | - |
1774 | x->initialScreenIndex = -1; | - |
1775 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
1776 | x->wasMaximized = false; | - |
1777 | #endif // Q_DEAD_CODE_FROM_QT4_MAC | - |
1778 | #ifdef QWIDGET_EXTRA_DEBUG | - |
1779 | static int count = 0; | - |
1780 | qDebug() << "tlextra" << ++count; | - |
1781 | #endif | - |
1782 | } never executed: end of block | 0 |
1783 | } never executed: end of block | 0 |
1784 | | - |
1785 | | - |
1786 | | - |
1787 | | - |
1788 | | - |
1789 | | - |
1790 | void QWidgetPrivate::createExtra() | - |
1791 | { | - |
1792 | if (!extra) { TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1793 | extra = new QWExtra; | - |
1794 | extra->glContext = 0; | - |
1795 | extra->topextra = 0; | - |
1796 | #ifndef QT_NO_GRAPHICSVIEW | - |
1797 | extra->proxyWidget = 0; | - |
1798 | #endif | - |
1799 | #ifndef QT_NO_CURSOR | - |
1800 | extra->curs = 0; | - |
1801 | #endif | - |
1802 | extra->minw = 0; | - |
1803 | extra->minh = 0; | - |
1804 | extra->maxw = QWIDGETSIZE_MAX; | - |
1805 | extra->maxh = QWIDGETSIZE_MAX; | - |
1806 | extra->customDpiX = 0; | - |
1807 | extra->customDpiY = 0; | - |
1808 | extra->explicitMinSize = 0; | - |
1809 | extra->explicitMaxSize = 0; | - |
1810 | extra->autoFillBackground = 0; | - |
1811 | extra->nativeChildrenForced = 0; | - |
1812 | extra->inRenderWithPainter = 0; | - |
1813 | extra->hasWindowContainer = false; | - |
1814 | extra->hasMask = 0; | - |
1815 | createSysExtra(); | - |
1816 | #ifdef QWIDGET_EXTRA_DEBUG | - |
1817 | static int count = 0; | - |
1818 | qDebug() << "extra" << ++count; | - |
1819 | #endif | - |
1820 | } never executed: end of block | 0 |
1821 | } never executed: end of block | 0 |
1822 | | - |
1823 | void QWidgetPrivate::createSysExtra() | - |
1824 | { | - |
1825 | } | - |
1826 | | - |
1827 | | - |
1828 | | - |
1829 | | - |
1830 | | - |
1831 | | - |
1832 | void QWidgetPrivate::deleteExtra() | - |
1833 | { | - |
1834 | if (extra) { TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1835 | #ifndef QT_NO_CURSOR | - |
1836 | delete extra->curs; | - |
1837 | #endif | - |
1838 | deleteSysExtra(); | - |
1839 | #ifndef QT_NO_STYLE_STYLESHEET | - |
1840 | | - |
1841 | if (QStyleSheetStyle *proxy = qobject_cast<QStyleSheetStyle *>(extra->style))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1842 | proxy->deref(); never executed: proxy->deref(); | 0 |
1843 | #endif | - |
1844 | if (extra->topextra) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1845 | deleteTLSysExtra(); | - |
1846 | | - |
1847 | delete extra->topextra->icon; | - |
1848 | delete extra->topextra; | - |
1849 | } never executed: end of block | 0 |
1850 | delete extra; | - |
1851 | | - |
1852 | extra = 0; | - |
1853 | } never executed: end of block | 0 |
1854 | } never executed: end of block | 0 |
1855 | | - |
1856 | void QWidgetPrivate::deleteSysExtra() | - |
1857 | { | - |
1858 | } | - |
1859 | | - |
1860 | static void deleteBackingStore(QWidgetPrivate *d) | - |
1861 | { | - |
1862 | QTLWExtra *topData = d->topData(); | - |
1863 | | - |
1864 | | - |
1865 | | - |
1866 | | - |
1867 | | - |
1868 | QScopedPointer<QOffscreenSurface> tempSurface; | - |
1869 | #ifndef QT_NO_OPENGL | - |
1870 | if (d->textureChildSeen && topData->shareContext) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1871 | if (topData->window->handle()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1872 | topData->shareContext->makeCurrent(topData->window); | - |
1873 | } else { never executed: end of block | 0 |
1874 | tempSurface.reset(new QOffscreenSurface); | - |
1875 | tempSurface->setFormat(topData->shareContext->format()); | - |
1876 | tempSurface->create(); | - |
1877 | topData->shareContext->makeCurrent(tempSurface.data()); | - |
1878 | } never executed: end of block | 0 |
1879 | } | - |
1880 | #endif | - |
1881 | | - |
1882 | delete topData->backingStore; | - |
1883 | topData->backingStore = 0; | - |
1884 | | - |
1885 | #ifndef QT_NO_OPENGL | - |
1886 | if (d->textureChildSeen && topData->shareContext)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1887 | topData->shareContext->doneCurrent(); never executed: topData->shareContext->doneCurrent(); | 0 |
1888 | #endif | - |
1889 | } never executed: end of block | 0 |
1890 | | - |
1891 | void QWidgetPrivate::deleteTLSysExtra() | - |
1892 | { | - |
1893 | if (extra && extra->topextra) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1894 | | - |
1895 | | - |
1896 | | - |
1897 | | - |
1898 | extra->topextra->backingStoreTracker.destroy(); | - |
1899 | deleteBackingStore(this); | - |
1900 | #ifndef QT_NO_OPENGL | - |
1901 | qDeleteAll(extra->topextra->widgetTextures); | - |
1902 | extra->topextra->widgetTextures.clear(); | - |
1903 | delete extra->topextra->shareContext; | - |
1904 | extra->topextra->shareContext = 0; | - |
1905 | #endif | - |
1906 | | - |
1907 | | - |
1908 | | - |
1909 | | - |
1910 | | - |
1911 | if (extra->topextra->window) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1912 | extra->topextra->window->destroy(); | - |
1913 | } never executed: end of block | 0 |
1914 | delete extra->topextra->window; | - |
1915 | extra->topextra->window = 0; | - |
1916 | | - |
1917 | } never executed: end of block | 0 |
1918 | } never executed: end of block | 0 |
1919 | | - |
1920 | | - |
1921 | | - |
1922 | | - |
1923 | | - |
1924 | | - |
1925 | bool QWidgetPrivate::isOverlapped(const QRect &rect) const | - |
1926 | { | - |
1927 | Q_Q(const QWidget); | - |
1928 | | - |
1929 | const QWidget *w = q; | - |
1930 | QRect r = rect; | - |
1931 | while (w) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1932 | if (w->isWindow())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1933 | return false; never executed: return false; | 0 |
1934 | QWidgetPrivate *pd = w->parentWidget()->d_func(); | - |
1935 | bool above = false; | - |
1936 | for (int i = 0; i < pd->children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1937 | QWidget *sibling = qobject_cast<QWidget *>(pd->children.at(i)); | - |
1938 | if (!sibling || !sibling->isVisible() || sibling->isWindow())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1939 | continue; never executed: continue; | 0 |
1940 | if (!above) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1941 | above = (sibling == w); | - |
1942 | continue; never executed: continue; | 0 |
1943 | } | - |
1944 | | - |
1945 | if (qRectIntersects(sibling->d_func()->effectiveRectFor(sibling->data->crect), r)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1946 | const QWExtra *siblingExtra = sibling->d_func()->extra; | - |
1947 | if (siblingExtra && siblingExtra->hasMask && !sibling->d_func()->graphicsEffectTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1948 | && !siblingExtra->mask.translated(sibling->data->crect.topLeft()).intersects(r)) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1949 | continue; never executed: continue; | 0 |
1950 | } | - |
1951 | return true; never executed: return true; | 0 |
1952 | } | - |
1953 | } never executed: end of block | 0 |
1954 | w = w->parentWidget(); | - |
1955 | r.translate(pd->data.crect.topLeft()); | - |
1956 | } never executed: end of block | 0 |
1957 | return false; never executed: return false; | 0 |
1958 | } | - |
1959 | | - |
1960 | void QWidgetPrivate::syncBackingStore() | - |
1961 | { | - |
1962 | if (paintOnScreen()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1963 | repaint_sys(dirty); | - |
1964 | dirty = QRegion(); | - |
1965 | } else if (QWidgetBackingStore *bs = maybeBackingStore()) { never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1966 | bs->sync(); | - |
1967 | } never executed: end of block | 0 |
1968 | } never executed: end of block | 0 |
1969 | | - |
1970 | void QWidgetPrivate::syncBackingStore(const QRegion ®ion) | - |
1971 | { | - |
1972 | if (paintOnScreen())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1973 | repaint_sys(region); never executed: repaint_sys(region); | 0 |
1974 | else if (QWidgetBackingStore *bs = maybeBackingStore()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1975 | bs->sync(q_func(), region); | - |
1976 | } never executed: end of block | 0 |
1977 | } never executed: end of block | 0 |
1978 | | - |
1979 | void QWidgetPrivate::setUpdatesEnabled_helper(bool enable) | - |
1980 | { | - |
1981 | Q_Q(QWidget); | - |
1982 | | - |
1983 | if (enable && !q->isWindow() && q->parentWidget() && !q->parentWidget()->updatesEnabled())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1984 | return; never executed: return; | 0 |
1985 | | - |
1986 | if (enable != q->testAttribute(Qt::WA_UpdatesDisabled))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1987 | return; never executed: return; | 0 |
1988 | | - |
1989 | q->setAttribute(Qt::WA_UpdatesDisabled, !enable); | - |
1990 | if (enable)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1991 | q->update(); never executed: q->update(); | 0 |
1992 | | - |
1993 | Qt::WidgetAttribute attribute = enable ? Qt::WA_ForceUpdatesDisabled : Qt::WA_UpdatesDisabled;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1994 | for (int i = 0; i < children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1995 | QWidget *w = qobject_cast<QWidget *>(children.at(i)); | - |
1996 | if (w && !w->isWindow() && !w->testAttribute(attribute))TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
1997 | w->d_func()->setUpdatesEnabled_helper(enable); never executed: w->d_func()->setUpdatesEnabled_helper(enable); | 0 |
1998 | } never executed: end of block | 0 |
1999 | } never executed: end of block | 0 |
2000 | | - |
2001 | | - |
2002 | | - |
2003 | | - |
2004 | | - |
2005 | | - |
2006 | | - |
2007 | | - |
2008 | void QWidgetPrivate::propagatePaletteChange() | - |
2009 | { | - |
2010 | Q_Q(QWidget); | - |
2011 | | - |
2012 | #ifndef QT_NO_GRAPHICSVIEW | - |
2013 | if (!q->parentWidget() && extra && extra->proxyWidget) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2014 | QGraphicsProxyWidget *p = extra->proxyWidget; | - |
2015 | inheritedPaletteResolveMask = p->d_func()->inheritedPaletteResolveMask | p->palette().resolve(); | - |
2016 | } else never executed: end of block | 0 |
2017 | #endif //QT_NO_GRAPHICSVIEW | - |
2018 | if (q->isWindow() && !q->testAttribute(Qt::WA_WindowPropagation)) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2019 | inheritedPaletteResolveMask = 0; | - |
2020 | } never executed: end of block | 0 |
2021 | int mask = data.pal.resolve() | inheritedPaletteResolveMask; | - |
2022 | | - |
2023 | const bool useStyleSheetPropagationInWidgetStyles = | - |
2024 | QCoreApplication::testAttribute(Qt::AA_UseStyleSheetPropagationInWidgetStyles); | - |
2025 | | - |
2026 | QEvent pc(QEvent::PaletteChange); | - |
2027 | QApplication::sendEvent(q, &pc); | - |
2028 | for (int i = 0; i < children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2029 | QWidget *w = qobject_cast<QWidget*>(children.at(i)); | - |
2030 | if (w && (!w->testAttribute(Qt::WA_StyleSheet) || useStyleSheetPropagationInWidgetStyles)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2031 | && (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation))) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2032 | QWidgetPrivate *wd = w->d_func(); | - |
2033 | wd->inheritedPaletteResolveMask = mask; | - |
2034 | wd->resolvePalette(); | - |
2035 | } never executed: end of block | 0 |
2036 | } never executed: end of block | 0 |
2037 | } never executed: end of block | 0 |
2038 | | - |
2039 | | - |
2040 | | - |
2041 | | - |
2042 | QRect QWidgetPrivate::clipRect() const | - |
2043 | { | - |
2044 | Q_Q(const QWidget); | - |
2045 | const QWidget * w = q; | - |
2046 | if (!w->isVisible())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2047 | return QRect(); never executed: return QRect(); | 0 |
2048 | QRect r = effectiveRectFor(q->rect()); | - |
2049 | int ox = 0; | - |
2050 | int oy = 0; | - |
2051 | while (wTRUE | never evaluated | FALSE | never evaluated |
| 0 |
2052 | && w->isVisible()TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2053 | && !w->isWindow()TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2054 | && w->parentWidget()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2055 | ox -= w->x(); | - |
2056 | oy -= w->y(); | - |
2057 | w = w->parentWidget(); | - |
2058 | r &= QRect(ox, oy, w->width(), w->height()); | - |
2059 | } never executed: end of block | 0 |
2060 | return r; never executed: return r; | 0 |
2061 | } | - |
2062 | | - |
2063 | | - |
2064 | | - |
2065 | | - |
2066 | QRegion QWidgetPrivate::clipRegion() const | - |
2067 | { | - |
2068 | Q_Q(const QWidget); | - |
2069 | if (!q->isVisible())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2070 | return QRegion(); never executed: return QRegion(); | 0 |
2071 | QRegion r(q->rect()); | - |
2072 | const QWidget * w = q; | - |
2073 | const QWidget *ignoreUpTo; | - |
2074 | int ox = 0; | - |
2075 | int oy = 0; | - |
2076 | while (wTRUE | never evaluated | FALSE | never evaluated |
| 0 |
2077 | && w->isVisible()TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2078 | && !w->isWindow()TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2079 | && w->parentWidget()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2080 | ox -= w->x(); | - |
2081 | oy -= w->y(); | - |
2082 | ignoreUpTo = w; | - |
2083 | w = w->parentWidget(); | - |
2084 | r &= QRegion(ox, oy, w->width(), w->height()); | - |
2085 | | - |
2086 | int i = 0; | - |
2087 | while(w->d_func()->children.at(i++) != static_cast<const QObject *>(ignoreUpTo))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2088 | ; never executed: ; | 0 |
2089 | for ( ; i < w->d_func()->children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2090 | if(QWidget *sibling = qobject_cast<QWidget *>(w->d_func()->children.at(i))) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2091 | if(sibling->isVisible() && !sibling->isWindow()) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2092 | QRect siblingRect(ox+sibling->x(), oy+sibling->y(), | - |
2093 | sibling->width(), sibling->height()); | - |
2094 | if (qRectIntersects(siblingRect, q->rect()))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2095 | r -= QRegion(siblingRect); never executed: r -= QRegion(siblingRect); | 0 |
2096 | } never executed: end of block | 0 |
2097 | } never executed: end of block | 0 |
2098 | } never executed: end of block | 0 |
2099 | } never executed: end of block | 0 |
2100 | return r; never executed: return r; | 0 |
2101 | } | - |
2102 | | - |
2103 | void QWidgetPrivate::setSystemClip(QPaintDevice *paintDevice, const QRegion ®ion) | - |
2104 | { | - |
2105 | | - |
2106 | QPaintEngine *paintEngine = paintDevice->paintEngine(); | - |
2107 | QTransform scaleTransform; | - |
2108 | const qreal devicePixelRatio = paintDevice->devicePixelRatioF(); | - |
2109 | scaleTransform.scale(devicePixelRatio, devicePixelRatio); | - |
2110 | paintEngine->d_func()->systemClip = scaleTransform.map(region); | - |
2111 | } never executed: end of block | 0 |
2112 | | - |
2113 | #ifndef QT_NO_GRAPHICSEFFECT | - |
2114 | void QWidgetPrivate::invalidateGraphicsEffectsRecursively() | - |
2115 | { | - |
2116 | Q_Q(QWidget); | - |
2117 | QWidget *w = q; | - |
2118 | do { | - |
2119 | if (w->graphicsEffect()) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2120 | QWidgetEffectSourcePrivate *sourced = | - |
2121 | static_cast<QWidgetEffectSourcePrivate *>(w->graphicsEffect()->source()->d_func()); | - |
2122 | if (!sourced->updateDueToGraphicsEffect)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2123 | w->graphicsEffect()->source()->d_func()->invalidateCache(); never executed: w->graphicsEffect()->source()->d_func()->invalidateCache(); | 0 |
2124 | } never executed: end of block | 0 |
2125 | w = w->parentWidget(); | - |
2126 | } while (w); never executed: end of block TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2127 | } never executed: end of block | 0 |
2128 | #endif //QT_NO_GRAPHICSEFFECT | - |
2129 | | - |
2130 | void QWidgetPrivate::setDirtyOpaqueRegion() | - |
2131 | { | - |
2132 | Q_Q(QWidget); | - |
2133 | | - |
2134 | dirtyOpaqueChildren = true; | - |
2135 | | - |
2136 | #ifndef QT_NO_GRAPHICSEFFECT | - |
2137 | invalidateGraphicsEffectsRecursively(); | - |
2138 | #endif //QT_NO_GRAPHICSEFFECT | - |
2139 | | - |
2140 | if (q->isWindow())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2141 | return; never executed: return; | 0 |
2142 | | - |
2143 | QWidget *parent = q->parentWidget(); | - |
2144 | if (!parent)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2145 | return; never executed: return; | 0 |
2146 | | - |
2147 | | - |
2148 | QWidgetPrivate *pd = parent->d_func(); | - |
2149 | if (!pd->dirtyOpaqueChildren)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2150 | pd->setDirtyOpaqueRegion(); never executed: pd->setDirtyOpaqueRegion(); | 0 |
2151 | } never executed: end of block | 0 |
2152 | | - |
2153 | const QRegion &QWidgetPrivate::getOpaqueChildren() const | - |
2154 | { | - |
2155 | if (!dirtyOpaqueChildren)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2156 | return opaqueChildren; never executed: return opaqueChildren; | 0 |
2157 | | - |
2158 | QWidgetPrivate *that = const_cast<QWidgetPrivate*>(this); | - |
2159 | that->opaqueChildren = QRegion(); | - |
2160 | | - |
2161 | for (int i = 0; i < children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2162 | QWidget *child = qobject_cast<QWidget *>(children.at(i)); | - |
2163 | if (!child || !child->isVisible() || child->isWindow())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2164 | continue; never executed: continue; | 0 |
2165 | | - |
2166 | const QPoint offset = child->geometry().topLeft(); | - |
2167 | QWidgetPrivate *childd = child->d_func(); | - |
2168 | QRegion r = childd->isOpaque ? child->rect() : childd->getOpaqueChildren();TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2169 | if (childd->extra && childd->extra->hasMask)TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2170 | r &= childd->extra->mask; never executed: r &= childd->extra->mask; | 0 |
2171 | if (r.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2172 | continue; never executed: continue; | 0 |
2173 | r.translate(offset); | - |
2174 | that->opaqueChildren += r; | - |
2175 | } never executed: end of block | 0 |
2176 | | - |
2177 | that->opaqueChildren &= q_func()->rect(); | - |
2178 | that->dirtyOpaqueChildren = false; | - |
2179 | | - |
2180 | return that->opaqueChildren; never executed: return that->opaqueChildren; | 0 |
2181 | } | - |
2182 | | - |
2183 | void QWidgetPrivate::subtractOpaqueChildren(QRegion &source, const QRect &clipRect) const | - |
2184 | { | - |
2185 | if (children.isEmpty() || clipRect.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2186 | return; never executed: return; | 0 |
2187 | | - |
2188 | const QRegion &r = getOpaqueChildren(); | - |
2189 | if (!r.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2190 | source -= (r & clipRect); never executed: source -= (r & clipRect); | 0 |
2191 | } never executed: end of block | 0 |
2192 | | - |
2193 | | - |
2194 | void QWidgetPrivate::subtractOpaqueSiblings(QRegion &sourceRegion, bool *hasDirtySiblingsAbove, | - |
2195 | bool alsoNonOpaque) const | - |
2196 | { | - |
2197 | Q_Q(const QWidget); | - |
2198 | static int disableSubtractOpaqueSiblings = qEnvironmentVariableIntValue("QT_NO_SUBTRACTOPAQUESIBLINGS"); | - |
2199 | if (disableSubtractOpaqueSiblings || q->isWindow())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2200 | return; never executed: return; | 0 |
2201 | | - |
2202 | #ifdef Q_DEAD_CODE_FROM_QT4_MAC | - |
2203 | if (q->d_func()->isInUnifiedToolbar) | - |
2204 | return; | - |
2205 | #endif // Q_DEAD_CODE_FROM_QT4_MAC | - |
2206 | | - |
2207 | QRect clipBoundingRect; | - |
2208 | bool dirtyClipBoundingRect = true; | - |
2209 | | - |
2210 | QRegion parentClip; | - |
2211 | bool dirtyParentClip = true; | - |
2212 | | - |
2213 | QPoint parentOffset = data.crect.topLeft(); | - |
2214 | | - |
2215 | const QWidget *w = q; | - |
2216 | | - |
2217 | while (w) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2218 | if (w->isWindow())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2219 | break; never executed: break; | 0 |
2220 | QWidgetPrivate *pd = w->parentWidget()->d_func(); | - |
2221 | const int myIndex = pd->children.indexOf(const_cast<QWidget *>(w)); | - |
2222 | const QRect widgetGeometry = w->d_func()->effectiveRectFor(w->data->crect); | - |
2223 | for (int i = myIndex + 1; i < pd->children.size(); ++i) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2224 | QWidget *sibling = qobject_cast<QWidget *>(pd->children.at(i)); | - |
2225 | if (!sibling || !sibling->isVisible() || sibling->isWindow())TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2226 | continue; never executed: continue; | 0 |
2227 | | - |
2228 | const QRect siblingGeometry = sibling->d_func()->effectiveRectFor(sibling->data->crect); | - |
2229 | if (!qRectIntersects(siblingGeometry, widgetGeometry))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2230 | continue; never executed: continue; | 0 |
2231 | | - |
2232 | if (dirtyClipBoundingRect) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2233 | clipBoundingRect = sourceRegion.boundingRect(); | - |
2234 | dirtyClipBoundingRect = false; | - |
2235 | } never executed: end of block | 0 |
2236 | | - |
2237 | if (!qRectIntersects(siblingGeometry, clipBoundingRect.translated(parentOffset)))TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2238 | continue; never executed: continue; | 0 |
2239 | | - |
2240 | if (dirtyParentClip) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2241 | parentClip = sourceRegion.translated(parentOffset); | - |
2242 | dirtyParentClip = false; | - |
2243 | } never executed: end of block | 0 |
2244 | | - |
2245 | const QPoint siblingPos(sibling->data->crect.topLeft()); | - |
2246 | const QRect siblingClipRect(sibling->d_func()->clipRect()); | - |
2247 | QRegion siblingDirty(parentClip); | - |
2248 | siblingDirty &= (siblingClipRect.translated(siblingPos)); | - |
2249 | const bool hasMask = sibling->d_func()->extra && sibling->d_func()->extra->hasMaskTRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2250 | && !sibling->d_func()->graphicsEffect;TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2251 | if (hasMask)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2252 | siblingDirty &= sibling->d_func()->extra->mask.translated(siblingPos); never executed: siblingDirty &= sibling->d_func()->extra->mask.translated(siblingPos); | 0 |
2253 | if (siblingDirty.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2254 | continue; never executed: continue; | 0 |
2255 | | - |
2256 | if (sibling->d_func()->isOpaque || alsoNonOpaque) {TRUE | never evaluated | FALSE | never evaluated |
TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2257 | if (hasMask) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2258 | siblingDirty.translate(-parentOffset); | - |
2259 | sourceRegion -= siblingDirty; | - |
2260 | } else { never executed: end of block | 0 |
2261 | sourceRegion -= siblingGeometry.translated(-parentOffset); | - |
2262 | } never executed: end of block | 0 |
2263 | } else { | - |
2264 | if (hasDirtySiblingsAbove)TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2265 | *hasDirtySiblingsAbove = true; never executed: *hasDirtySiblingsAbove = true; | 0 |
2266 | if (sibling->d_func()->children.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2267 | continue; never executed: continue; | 0 |
2268 | QRegion opaqueSiblingChildren(sibling->d_func()->getOpaqueChildren()); | - |
2269 | opaqueSiblingChildren.translate(-parentOffset + siblingPos); | - |
2270 | sourceRegion -= opaqueSiblingChildren; | - |
2271 | } never executed: end of block | 0 |
2272 | if (sourceRegion.isEmpty())TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2273 | return; never executed: return; | 0 |
2274 | | - |
2275 | dirtyClipBoundingRect = true; | - |
2276 | dirtyParentClip = true; | - |
2277 | } never executed: end of block | 0 |
2278 | | - |
2279 | w = w->parentWidget(); | - |
2280 | parentOffset += pd->data.crect.topLeft(); | - |
2281 | dirtyParentClip = true; | - |
2282 | } never executed: end of block | 0 |
2283 | } never executed: end of block | 0 |
2284 | | - |
2285 | void QWidgetPrivate::clipToEffectiveMask(QRegion ®ion) const | - |
2286 | { | - |
2287 | Q_Q(const QWidget); | - |
2288 | | - |
2289 | const QWidget *w = q; | - |
2290 | QPoint offset; | - |
2291 | | - |
2292 | #ifndef QT_NO_GRAPHICSEFFECT | - |
2293 | if (graphicsEffect) {TRUE | never evaluated | FALSE | never evaluated |
| 0 |
2294 | w = q->parentWidget(); | - |
2295 | offset -= data.crect.topLeft(); | - |
2296 | } never executed: end of block | 0 |
2297 | #endif //QT_NO_GRAPHICSEFFECT | - |
2298 | | - |
2299 | while (w) {TRUE | never evaluated | FALSE | never evaluated |
|