OpenCoverage

qgraphicswidget_p.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/graphicsview/qgraphicswidget_p.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtWidgets module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qglobal.h"-
41-
42#ifndef QT_NO_GRAPHICSVIEW-
43-
44#include <QtCore/qdebug.h>-
45#include <QtCore/qnumeric.h>-
46#include "qgraphicswidget_p.h"-
47#include "qgraphicslayoutitem_p.h"-
48#include "qgraphicslayout.h"-
49#include "qgraphicsscene_p.h"-
50#include <QtWidgets/qapplication.h>-
51#include <QtWidgets/qgraphicsscene.h>-
52#include <QtWidgets/qstyleoption.h>-
53#include <QtWidgets/QStyleOptionTitleBar>-
54#include <QtWidgets/QGraphicsSceneMouseEvent>-
55#if defined(Q_DEAD_CODE_FROM_QT4_MAC) && !defined(QT_NO_STYLE_MAC)-
56# include <private/qmacstyle_mac_p.h>-
57#endif-
58-
59QT_BEGIN_NAMESPACE-
60-
61void QGraphicsWidgetPrivate::init(QGraphicsItem *parentItem, Qt::WindowFlags wFlags)-
62{-
63 Q_Q(QGraphicsWidget);-
64-
65 attributes = 0;-
66 isWidget = 1; // QGraphicsItem::isWidget() returns true.-
67 focusNext = focusPrev = q;-
68 focusPolicy = Qt::NoFocus;-
69-
70 adjustWindowFlags(&wFlags);-
71 windowFlags = wFlags;-
72-
73 q->setParentItem(parentItem);-
74 q->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred, QSizePolicy::DefaultType));-
75 q->setGraphicsItem(q);-
76-
77 resolveLayoutDirection();-
78 q->unsetWindowFrameMargins();-
79 flags |= QGraphicsItem::ItemUsesExtendedStyleOption;-
80 flags |= QGraphicsItem::ItemSendsGeometryChanges;-
81 if (windowFlags & Qt::Window)
windowFlags & Qt::WindowDescription
TRUEnever evaluated
FALSEnever evaluated
0
82 flags |= QGraphicsItem::ItemIsPanel;
never executed: flags |= QGraphicsItem::ItemIsPanel;
0
83}
never executed: end of block
0
84-
85qreal QGraphicsWidgetPrivate::titleBarHeight(const QStyleOptionTitleBar &options) const-
86{-
87 Q_Q(const QGraphicsWidget);-
88 int height = q->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options);-
89 return (qreal)height;
never executed: return (qreal)height;
0
90}-
91-
92/*!-
93 \internal-
94*/-
95QGraphicsWidgetPrivate::QGraphicsWidgetPrivate()-
96 : margins(nullptr),-
97 layout(nullptr),-
98 inheritedPaletteResolveMask(0),-
99 inheritedFontResolveMask(0),-
100 inSetGeometry(false),-
101 polished(false),-
102 inSetPos(false),-
103 autoFillBackground(false),-
104 focusPolicy(Qt::NoFocus),-
105 focusNext(nullptr),-
106 focusPrev(nullptr),-
107 windowFlags(),-
108 windowData(nullptr),-
109 setWindowFrameMargins(false),-
110 windowFrameMargins(nullptr)-
111{-
112}
never executed: end of block
0
113-
114QGraphicsWidgetPrivate::~QGraphicsWidgetPrivate()-
115{-
116 // Remove any lazily allocated data-
117 delete[] margins;-
118 delete[] windowFrameMargins;-
119 delete windowData;-
120}
never executed: end of block
0
121-
122/*!-
123 \internal-
124-
125 Ensures that margins is allocated.-
126 This function must be called before any dereferencing.-
127*/-
128void QGraphicsWidgetPrivate::ensureMargins() const-
129{-
130 if (!margins) {
!marginsDescription
TRUEnever evaluated
FALSEnever evaluated
0
131 margins = new qreal[4];-
132 for (int i = 0; i < 4; ++i)
i < 4Description
TRUEnever evaluated
FALSEnever evaluated
0
133 margins[i] = 0;
never executed: margins[i] = 0;
0
134 }
never executed: end of block
0
135}
never executed: end of block
0
136-
137/*!-
138 \internal-
139-
140 Ensures that windowFrameMargins is allocated.-
141 This function must be called before any dereferencing.-
142*/-
143void QGraphicsWidgetPrivate::ensureWindowFrameMargins() const-
144{-
145 if (!windowFrameMargins) {
!windowFrameMarginsDescription
TRUEnever evaluated
FALSEnever evaluated
0
146 windowFrameMargins = new qreal[4];-
147 for (int i = 0; i < 4; ++i)
i < 4Description
TRUEnever evaluated
FALSEnever evaluated
0
148 windowFrameMargins[i] = 0;
never executed: windowFrameMargins[i] = 0;
0
149 }
never executed: end of block
0
150}
never executed: end of block
0
151-
152/*!-
153 \internal-
154-
155 Ensures that windowData is allocated.-
156 This function must be called before any dereferencing.-
157*/-
158void QGraphicsWidgetPrivate::ensureWindowData()-
159{-
160 if (!windowData)
!windowDataDescription
TRUEnever evaluated
FALSEnever evaluated
0
161 windowData = new WindowData;
never executed: windowData = new WindowData;
0
162}
never executed: end of block
0
163-
164void QGraphicsWidgetPrivate::setPalette_helper(const QPalette &palette)-
165{-
166 if (this->palette == palette && this->palette.resolve() == palette.resolve())
this->palette == paletteDescription
TRUEnever evaluated
FALSEnever evaluated
this->palette....ette.resolve()Description
TRUEnever evaluated
FALSEnever evaluated
0
167 return;
never executed: return;
0
168 updatePalette(palette);-
169}
never executed: end of block
0
170-
171void QGraphicsWidgetPrivate::resolvePalette(uint inheritedMask)-
172{-
173 inheritedPaletteResolveMask = inheritedMask;-
174 QPalette naturalPalette = naturalWidgetPalette();-
175 QPalette resolvedPalette = palette.resolve(naturalPalette);-
176 updatePalette(resolvedPalette);-
177}
never executed: end of block
0
178-
179void QGraphicsWidgetPrivate::updatePalette(const QPalette &palette)-
180{-
181 Q_Q(QGraphicsWidget);-
182 // Update local palette setting.-
183 this->palette = palette;-
184-
185 // Calculate new mask.-
186 if (q->isWindow() && !q->testAttribute(Qt::WA_WindowPropagation))
q->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
!q->testAttrib...owPropagation)Description
TRUEnever evaluated
FALSEnever evaluated
0
187 inheritedPaletteResolveMask = 0;
never executed: inheritedPaletteResolveMask = 0;
0
188 int mask = palette.resolve() | inheritedPaletteResolveMask;-
189-
190 // Propagate to children.-
191 for (int i = 0; i < children.size(); ++i) {
i < children.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
192 QGraphicsItem *item = children.at(i);-
193 if (item->isWidget()) {
item->isWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
194 QGraphicsWidget *w = static_cast<QGraphicsWidget *>(item);-
195 if (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation))
!w->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
w->testAttribu...owPropagation)Description
TRUEnever evaluated
FALSEnever evaluated
0
196 w->d_func()->resolvePalette(mask);
never executed: w->d_func()->resolvePalette(mask);
0
197 } else {
never executed: end of block
0
198 item->d_ptr->resolvePalette(mask);-
199 }
never executed: end of block
0
200 }-
201-
202 // Notify change.-
203 QEvent event(QEvent::PaletteChange);-
204 QApplication::sendEvent(q, &event);-
205}
never executed: end of block
0
206-
207void QGraphicsWidgetPrivate::setLayoutDirection_helper(Qt::LayoutDirection direction)-
208{-
209 Q_Q(QGraphicsWidget);-
210 if ((direction == Qt::RightToLeft) == (testAttribute(Qt::WA_RightToLeft)))
(direction == ..._RightToLeft))Description
TRUEnever evaluated
FALSEnever evaluated
0
211 return;
never executed: return;
0
212 q->setAttribute(Qt::WA_RightToLeft, (direction == Qt::RightToLeft));-
213-
214 // Propagate this change to all children.-
215 for (int i = 0; i < children.size(); ++i) {
i < children.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
216 QGraphicsItem *item = children.at(i);-
217 if (item->isWidget()) {
item->isWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
218 QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item);-
219 if (widget->parentWidget() && !widget->testAttribute(Qt::WA_SetLayoutDirection))
widget->parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
!widget->testA...youtDirection)Description
TRUEnever evaluated
FALSEnever evaluated
0
220 widget->d_func()->setLayoutDirection_helper(direction);
never executed: widget->d_func()->setLayoutDirection_helper(direction);
0
221 }
never executed: end of block
0
222 }
never executed: end of block
0
223-
224 // Send the notification event to this widget item.-
225 QEvent e(QEvent::LayoutDirectionChange);-
226 QApplication::sendEvent(q, &e);-
227}
never executed: end of block
0
228-
229void QGraphicsWidgetPrivate::resolveLayoutDirection()-
230{-
231 Q_Q(QGraphicsWidget);-
232 if (q->testAttribute(Qt::WA_SetLayoutDirection)) {
q->testAttribu...youtDirection)Description
TRUEnever evaluated
FALSEnever evaluated
0
233 return;
never executed: return;
0
234 }-
235 if (QGraphicsWidget *parentWidget = q->parentWidget()) {
QGraphicsWidge...parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
236 setLayoutDirection_helper(parentWidget->layoutDirection());-
237 } else if (scene) {
never executed: end of block
sceneDescription
TRUEnever evaluated
FALSEnever evaluated
0
238 // ### shouldn't the scene have a layoutdirection really? how does-
239 // ### QGraphicsWidget get changes from QApplication::layoutDirection?-
240 setLayoutDirection_helper(QApplication::layoutDirection());-
241 } else {
never executed: end of block
0
242 setLayoutDirection_helper(QApplication::layoutDirection());-
243 }
never executed: end of block
0
244}-
245-
246QPalette QGraphicsWidgetPrivate::naturalWidgetPalette() const-
247{-
248 Q_Q(const QGraphicsWidget);-
249 QPalette palette;-
250 if (QGraphicsWidget *parent = q->parentWidget()) {
QGraphicsWidge...parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
251 palette = parent->palette();-
252 } else if (scene) {
never executed: end of block
sceneDescription
TRUEnever evaluated
FALSEnever evaluated
0
253 palette = scene->palette();-
254 }
never executed: end of block
0
255 palette.resolve(0);-
256 return palette;
never executed: return palette;
0
257}-
258-
259void QGraphicsWidgetPrivate::setFont_helper(const QFont &font)-
260{-
261 if (this->font == font && this->font.resolve() == font.resolve())
this->font == fontDescription
TRUEnever evaluated
FALSEnever evaluated
this->font.res...font.resolve()Description
TRUEnever evaluated
FALSEnever evaluated
0
262 return;
never executed: return;
0
263 updateFont(font);-
264}
never executed: end of block
0
265-
266void QGraphicsWidgetPrivate::resolveFont(uint inheritedMask)-
267{-
268 Q_Q(QGraphicsWidget);-
269 inheritedFontResolveMask = inheritedMask;-
270 if (QGraphicsWidget *p = q->parentWidget())
QGraphicsWidge...parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
271 inheritedFontResolveMask |= p->d_func()->inheritedFontResolveMask;
never executed: inheritedFontResolveMask |= p->d_func()->inheritedFontResolveMask;
0
272 QFont naturalFont = naturalWidgetFont();-
273 QFont resolvedFont = font.resolve(naturalFont);-
274 updateFont(resolvedFont);-
275}
never executed: end of block
0
276-
277void QGraphicsWidgetPrivate::updateFont(const QFont &font)-
278{-
279 Q_Q(QGraphicsWidget);-
280 // Update the local font setting.-
281 this->font = font;-
282-
283 // Calculate new mask.-
284 if (q->isWindow() && !q->testAttribute(Qt::WA_WindowPropagation))
q->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
!q->testAttrib...owPropagation)Description
TRUEnever evaluated
FALSEnever evaluated
0
285 inheritedFontResolveMask = 0;
never executed: inheritedFontResolveMask = 0;
0
286 int mask = font.resolve() | inheritedFontResolveMask;-
287-
288 // Propagate to children.-
289 for (int i = 0; i < children.size(); ++i) {
i < children.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
290 QGraphicsItem *item = children.at(i);-
291 if (item->isWidget()) {
item->isWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
292 QGraphicsWidget *w = static_cast<QGraphicsWidget *>(item);-
293 if (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation))
!w->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
w->testAttribu...owPropagation)Description
TRUEnever evaluated
FALSEnever evaluated
0
294 w->d_func()->resolveFont(mask);
never executed: w->d_func()->resolveFont(mask);
0
295 } else {
never executed: end of block
0
296 item->d_ptr->resolveFont(mask);-
297 }
never executed: end of block
0
298 }-
299-
300 if (!polished)
!polishedDescription
TRUEnever evaluated
FALSEnever evaluated
0
301 return;
never executed: return;
0
302 // Notify change.-
303 QEvent event(QEvent::FontChange);-
304 QApplication::sendEvent(q, &event);-
305}
never executed: end of block
0
306-
307QFont QGraphicsWidgetPrivate::naturalWidgetFont() const-
308{-
309 Q_Q(const QGraphicsWidget);-
310 QFont naturalFont; // ### no application font support-
311 if (QGraphicsWidget *parent = q->parentWidget()) {
QGraphicsWidge...parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
312 naturalFont = parent->font();-
313 } else if (scene) {
never executed: end of block
sceneDescription
TRUEnever evaluated
FALSEnever evaluated
0
314 naturalFont = scene->font();-
315 }
never executed: end of block
0
316 naturalFont.resolve(0);-
317 return naturalFont;
never executed: return naturalFont;
0
318}-
319-
320void QGraphicsWidgetPrivate::initStyleOptionTitleBar(QStyleOptionTitleBar *option)-
321{-
322 Q_Q(QGraphicsWidget);-
323 ensureWindowData();-
324 q->initStyleOption(option);-
325 option->rect.setHeight(titleBarHeight(*option));-
326 option->titleBarFlags = windowFlags;-
327 option->subControls = QStyle::SC_TitleBarCloseButton | QStyle::SC_TitleBarLabel | QStyle::SC_TitleBarSysMenu;-
328 option->activeSubControls = windowData->hoveredSubControl;-
329 bool isActive = q->isActiveWindow();-
330 option->state.setFlag(QStyle::State_Active, isActive);-
331 if (isActive) {
isActiveDescription
TRUEnever evaluated
FALSEnever evaluated
0
332 option->titleBarState = Qt::WindowActive;-
333 option->titleBarState |= QStyle::State_Active;-
334 } else {
never executed: end of block
0
335 option->titleBarState = Qt::WindowNoState;-
336 }
never executed: end of block
0
337 QFont windowTitleFont = QApplication::font("QMdiSubWindowTitleBar");-
338 QRect textRect = q->style()->subControlRect(QStyle::CC_TitleBar, option, QStyle::SC_TitleBarLabel, 0);-
339 option->text = QFontMetrics(windowTitleFont).elidedText(-
340 windowData->windowTitle, Qt::ElideRight, textRect.width());-
341}
never executed: end of block
0
342-
343void QGraphicsWidgetPrivate::adjustWindowFlags(Qt::WindowFlags *flags)-
344{-
345 bool customize = (*flags & (Qt::CustomizeWindowHint-
346 | Qt::FramelessWindowHint-
347 | Qt::WindowTitleHint-
348 | Qt::WindowSystemMenuHint-
349 | Qt::WindowMinimizeButtonHint-
350 | Qt::WindowMaximizeButtonHint-
351 | Qt::WindowContextHelpButtonHint));-
352-
353 uint type = (*flags & Qt::WindowType_Mask);-
354 if (customize)
customizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
355 ;
never executed: ;
0
356 else if (type == Qt::Dialog || type == Qt::Sheet)
type == Qt::DialogDescription
TRUEnever evaluated
FALSEnever evaluated
type == Qt::SheetDescription
TRUEnever evaluated
FALSEnever evaluated
0
357 *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowContextHelpButtonHint;
never executed: *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowContextHelpButtonHint;
0
358 else if (type == Qt::Tool)
type == Qt::ToolDescription
TRUEnever evaluated
FALSEnever evaluated
0
359 *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint;
never executed: *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint;
0
360 else if (type == Qt::Window || type == Qt::SubWindow)
type == Qt::WindowDescription
TRUEnever evaluated
FALSEnever evaluated
type == Qt::SubWindowDescription
TRUEnever evaluated
FALSEnever evaluated
0
361 *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint
never executed: *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint;
0
362 | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint;
never executed: *flags |= Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint;
0
363}
never executed: end of block
0
364-
365void QGraphicsWidgetPrivate::windowFrameMouseReleaseEvent(QGraphicsSceneMouseEvent *event)-
366{-
367 Q_Q(QGraphicsWidget);-
368 ensureWindowData();-
369 if (windowData->grabbedSection != Qt::NoSection) {
windowData->gr... Qt::NoSectionDescription
TRUEnever evaluated
FALSEnever evaluated
0
370 if (windowData->grabbedSection == Qt::TitleBarArea) {
windowData->gr...::TitleBarAreaDescription
TRUEnever evaluated
FALSEnever evaluated
0
371 windowData->buttonSunken = false;-
372 QStyleOptionTitleBar bar;-
373 initStyleOptionTitleBar(&bar);-
374 // make sure that the coordinates (rect and pos) we send to the style are positive.-
375 bar.rect = q->windowFrameRect().toRect();-
376 bar.rect.moveTo(0,0);-
377 bar.rect.setHeight(q->style()->pixelMetric(QStyle::PM_TitleBarHeight, &bar));-
378 QPointF pos = event->pos();-
379 if (windowFrameMargins) {
windowFrameMarginsDescription
TRUEnever evaluated
FALSEnever evaluated
0
380 pos.rx() += windowFrameMargins[Left];-
381 pos.ry() += windowFrameMargins[Top];-
382 }
never executed: end of block
0
383 bar.subControls = QStyle::SC_TitleBarCloseButton;-
384 if (q->style()->subControlRect(QStyle::CC_TitleBar, &bar,
q->style()->su...pos.toPoint())Description
TRUEnever evaluated
FALSEnever evaluated
0
385 QStyle::SC_TitleBarCloseButton,
q->style()->su...pos.toPoint())Description
TRUEnever evaluated
FALSEnever evaluated
0
386 event->widget()).contains(pos.toPoint())) {
q->style()->su...pos.toPoint())Description
TRUEnever evaluated
FALSEnever evaluated
0
387 q->close();-
388 }
never executed: end of block
0
389 }
never executed: end of block
0
390 if (!(static_cast<QGraphicsSceneMouseEvent *>(event)->buttons()))
!(static_cast<...t)->buttons())Description
TRUEnever evaluated
FALSEnever evaluated
0
391 windowData->grabbedSection = Qt::NoSection;
never executed: windowData->grabbedSection = Qt::NoSection;
0
392 event->accept();-
393 }
never executed: end of block
0
394}
never executed: end of block
0
395-
396void QGraphicsWidgetPrivate::windowFrameMousePressEvent(QGraphicsSceneMouseEvent *event)-
397{-
398 Q_Q(QGraphicsWidget);-
399 if (event->button() != Qt::LeftButton)
event->button(...Qt::LeftButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
400 return;
never executed: return;
0
401-
402 ensureWindowData();-
403 windowData->startGeometry = q->geometry();-
404 windowData->grabbedSection = q->windowFrameSectionAt(event->pos());-
405 ensureWindowData();-
406 if (windowData->grabbedSection == Qt::TitleBarArea
windowData->gr...::TitleBarAreaDescription
TRUEnever evaluated
FALSEnever evaluated
0
407 && windowData->hoveredSubControl == QStyle::SC_TitleBarCloseButton) {
windowData->ho...BarCloseButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
408 windowData->buttonSunken = true;-
409 q->update();-
410 }
never executed: end of block
0
411 event->setAccepted(windowData->grabbedSection != Qt::NoSection);-
412}
never executed: end of block
0
413-
414/*!-
415 Used to calculate the-
416 Precondition:-
417 \a widget should support either hfw or wfh-
418-
419 If \a heightForWidth is set to false, this function will query the width for height-
420 instead. \a width will then be interpreted as height, \a minh and \a maxh will be interpreted-
421 as minimum width and maximum width.-
422 */-
423static qreal minimumHeightForWidth(qreal width, qreal minh, qreal maxh,-
424 const QGraphicsWidget *widget,-
425 bool heightForWidth = true)-
426{-
427 qreal minimumHeightForWidth = -1;-
428 const bool hasHFW = QGraphicsLayoutItemPrivate::get(widget)->hasHeightForWidth();-
429 if (hasHFW == heightForWidth) {
hasHFW == heightForWidthDescription
TRUEnever evaluated
FALSEnever evaluated
0
430 minimumHeightForWidth = hasHFW
hasHFWDescription
TRUEnever evaluated
FALSEnever evaluated
0
431 ? widget->effectiveSizeHint(Qt::MinimumSize, QSizeF(width, -1)).height()-
432 : widget->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, width)).width(); //"width" is here height!-
433 } else {
never executed: end of block
0
434 // widthForHeight-
435 const qreal constraint = width;-
436 while (maxh - minh > 0.1) {
maxh - minh > 0.1Description
TRUEnever evaluated
FALSEnever evaluated
0
437 qreal middle = minh + (maxh - minh)/2;-
438 // ### really bad, if we are a widget with a layout it will call-
439 // layout->effectiveSizeHint(Qt::MiniumumSize), which again will call-
440 // sizeHint three times because of how the cache works-
441 qreal hfw = hasHFW
hasHFWDescription
TRUEnever evaluated
FALSEnever evaluated
0
442 ? widget->effectiveSizeHint(Qt::MinimumSize, QSizeF(middle, -1)).height()-
443 : widget->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, middle)).width();-
444 if (hfw > constraint) {
hfw > constraintDescription
TRUEnever evaluated
FALSEnever evaluated
0
445 minh = middle;-
446 } else if (hfw <= constraint) {
never executed: end of block
hfw <= constraintDescription
TRUEnever evaluated
FALSEnever evaluated
0
447 maxh = middle;-
448 }
never executed: end of block
0
449 }
never executed: end of block
0
450 minimumHeightForWidth = maxh;-
451 }
never executed: end of block
0
452 return minimumHeightForWidth;
never executed: return minimumHeightForWidth;
0
453}-
454-
455static qreal minimumWidthForHeight(qreal height, qreal minw, qreal maxw,-
456 const QGraphicsWidget *widget)-
457{-
458 return minimumHeightForWidth(height, minw, maxw, widget, false);
never executed: return minimumHeightForWidth(height, minw, maxw, widget, false);
0
459}-
460-
461static QSizeF closestAcceptableSize(const QSizeF &proposed,-
462 const QGraphicsWidget *widget)-
463{-
464 const QSizeF current = widget->size();-
465-
466 qreal minw = proposed.width();-
467 qreal maxw = current.width();-
468 qreal minh = proposed.height();-
469 qreal maxh = current.height();-
470-
471 qreal middlew = maxw;-
472 qreal middleh = maxh;-
473 qreal min_hfw;-
474 min_hfw = minimumHeightForWidth(maxw, minh, maxh, widget);-
475-
476 do {-
477 if (maxw - minw < 0.1) {
maxw - minw < 0.1Description
TRUEnever evaluated
FALSEnever evaluated
0
478 // we still haven't found anything, cut off binary search-
479 minw = maxw;-
480 minh = maxh;-
481 }
never executed: end of block
0
482 middlew = minw + (maxw - minw)/2.0;-
483 middleh = minh + (maxh - minh)/2.0;-
484-
485 min_hfw = minimumHeightForWidth(middlew, minh, maxh, widget);-
486-
487 if (min_hfw > middleh) {
min_hfw > middlehDescription
TRUEnever evaluated
FALSEnever evaluated
0
488 minw = middlew;-
489 minh = middleh;-
490 } else if (min_hfw <= middleh) {
never executed: end of block
min_hfw <= middlehDescription
TRUEnever evaluated
FALSEnever evaluated
0
491 maxw = middlew;-
492 maxh = middleh;-
493 }
never executed: end of block
0
494 } while (maxw != minw);
never executed: end of block
maxw != minwDescription
TRUEnever evaluated
FALSEnever evaluated
0
495-
496 min_hfw = minimumHeightForWidth(middlew, minh, maxh, widget);-
497-
498 QSizeF result;-
499 if (min_hfw < maxh) {
min_hfw < maxhDescription
TRUEnever evaluated
FALSEnever evaluated
0
500 result = QSizeF(middlew, min_hfw);-
501 } else {
never executed: end of block
0
502 // Needed because of the cut-off we do above.-
503 result = QSizeF(minimumWidthForHeight(maxh, proposed.width(), current.width(), widget), maxh);-
504 }
never executed: end of block
0
505 return result;
never executed: return result;
0
506}-
507-
508static void _q_boundGeometryToSizeConstraints(const QRectF &startGeometry,-
509 QRectF *rect, Qt::WindowFrameSection section,-
510 const QSizeF &min, const QSizeF &max,-
511 const QGraphicsWidget *widget)-
512{-
513 const QRectF proposedRect = *rect;-
514 qreal width = qBound(min.width(), proposedRect.width(), max.width());-
515 qreal height = qBound(min.height(), proposedRect.height(), max.height());-
516-
517 const bool hasHFW = QGraphicsLayoutItemPrivate::get(widget)->hasHeightForWidth();-
518 const bool hasWFH = QGraphicsLayoutItemPrivate::get(widget)->hasWidthForHeight();-
519-
520 const bool widthChanged = proposedRect.width() != widget->size().width();-
521 const bool heightChanged = proposedRect.height() != widget->size().height();-
522-
523 if (hasHFW || hasWFH) {
hasHFWDescription
TRUEnever evaluated
FALSEnever evaluated
hasWFHDescription
TRUEnever evaluated
FALSEnever evaluated
0
524 if (widthChanged || heightChanged) {
widthChangedDescription
TRUEnever evaluated
FALSEnever evaluated
heightChangedDescription
TRUEnever evaluated
FALSEnever evaluated
0
525 qreal minExtent;-
526 qreal maxExtent;-
527 qreal constraint;-
528 qreal proposed;-
529 if (hasHFW) {
hasHFWDescription
TRUEnever evaluated
FALSEnever evaluated
0
530 minExtent = min.height();-
531 maxExtent = max.height();-
532 constraint = width;-
533 proposed = proposedRect.height();-
534 } else {
never executed: end of block
0
535 // width for height-
536 minExtent = min.width();-
537 maxExtent = max.width();-
538 constraint = height;-
539 proposed = proposedRect.width();-
540 }
never executed: end of block
0
541 if (minimumHeightForWidth(constraint, minExtent, maxExtent, widget, hasHFW) > proposed) {
minimumHeightF...FW) > proposedDescription
TRUEnever evaluated
FALSEnever evaluated
0
542 QSizeF effectiveSize = closestAcceptableSize(QSizeF(width, height), widget);-
543 width = effectiveSize.width();-
544 height = effectiveSize.height();-
545 }
never executed: end of block
0
546 }
never executed: end of block
0
547 }
never executed: end of block
0
548-
549 switch (section) {-
550 case Qt::LeftSection:
never executed: case Qt::LeftSection:
0
551 rect->setRect(startGeometry.right() - qRound(width), startGeometry.top(),-
552 qRound(width), startGeometry.height());-
553 break;
never executed: break;
0
554 case Qt::TopLeftSection:
never executed: case Qt::TopLeftSection:
0
555 rect->setRect(startGeometry.right() - qRound(width), startGeometry.bottom() - qRound(height),-
556 qRound(width), qRound(height));-
557 break;
never executed: break;
0
558 case Qt::TopSection:
never executed: case Qt::TopSection:
0
559 rect->setRect(startGeometry.left(), startGeometry.bottom() - qRound(height),-
560 startGeometry.width(), qRound(height));-
561 break;
never executed: break;
0
562 case Qt::TopRightSection:
never executed: case Qt::TopRightSection:
0
563 rect->setTop(rect->bottom() - qRound(height));-
564 rect->setWidth(qRound(width));-
565 break;
never executed: break;
0
566 case Qt::RightSection:
never executed: case Qt::RightSection:
0
567 rect->setWidth(qRound(width));-
568 break;
never executed: break;
0
569 case Qt::BottomRightSection:
never executed: case Qt::BottomRightSection:
0
570 rect->setWidth(qRound(width));-
571 rect->setHeight(qRound(height));-
572 break;
never executed: break;
0
573 case Qt::BottomSection:
never executed: case Qt::BottomSection:
0
574 rect->setHeight(qRound(height));-
575 break;
never executed: break;
0
576 case Qt::BottomLeftSection:
never executed: case Qt::BottomLeftSection:
0
577 rect->setRect(startGeometry.right() - qRound(width), startGeometry.top(),-
578 qRound(width), qRound(height));-
579 break;
never executed: break;
0
580 default:
never executed: default:
0
581 break;
never executed: break;
0
582 }-
583}-
584-
585void QGraphicsWidgetPrivate::windowFrameMouseMoveEvent(QGraphicsSceneMouseEvent *event)-
586{-
587 Q_Q(QGraphicsWidget);-
588 ensureWindowData();-
589 if (!(event->buttons() & Qt::LeftButton) || windowData->hoveredSubControl != QStyle::SC_TitleBarLabel)
!(event->butto...t::LeftButton)Description
TRUEnever evaluated
FALSEnever evaluated
windowData->ho..._TitleBarLabelDescription
TRUEnever evaluated
FALSEnever evaluated
0
590 return;
never executed: return;
0
591-
592 QLineF delta(q->mapFromScene(event->buttonDownScenePos(Qt::LeftButton)), event->pos());-
593 QLineF parentDelta(q->mapToParent(delta.p1()), q->mapToParent(delta.p2()));-
594 QLineF parentXDelta(q->mapToParent(QPointF(delta.p1().x(), 0)), q->mapToParent(QPointF(delta.p2().x(), 0)));-
595 QLineF parentYDelta(q->mapToParent(QPointF(0, delta.p1().y())), q->mapToParent(QPointF(0, delta.p2().y())));-
596-
597 QRectF newGeometry;-
598 switch (windowData->grabbedSection) {-
599 case Qt::LeftSection:
never executed: case Qt::LeftSection:
0
600 newGeometry = QRectF(windowData->startGeometry.topLeft()-
601 + QPointF(parentXDelta.dx(), parentXDelta.dy()),-
602 windowData->startGeometry.size() - QSizeF(delta.dx(), delta.dy()));-
603 break;
never executed: break;
0
604 case Qt::TopLeftSection:
never executed: case Qt::TopLeftSection:
0
605 newGeometry = QRectF(windowData->startGeometry.topLeft()-
606 + QPointF(parentDelta.dx(), parentDelta.dy()),-
607 windowData->startGeometry.size() - QSizeF(delta.dx(), delta.dy()));-
608 break;
never executed: break;
0
609 case Qt::TopSection:
never executed: case Qt::TopSection:
0
610 newGeometry = QRectF(windowData->startGeometry.topLeft()-
611 + QPointF(parentYDelta.dx(), parentYDelta.dy()),-
612 windowData->startGeometry.size() - QSizeF(0, delta.dy()));-
613 break;
never executed: break;
0
614 case Qt::TopRightSection:
never executed: case Qt::TopRightSection:
0
615 newGeometry = QRectF(windowData->startGeometry.topLeft()-
616 + QPointF(parentYDelta.dx(), parentYDelta.dy()),-
617 windowData->startGeometry.size() - QSizeF(-delta.dx(), delta.dy()));-
618 break;
never executed: break;
0
619 case Qt::RightSection:
never executed: case Qt::RightSection:
0
620 newGeometry = QRectF(windowData->startGeometry.topLeft(),-
621 windowData->startGeometry.size() + QSizeF(delta.dx(), 0));-
622 break;
never executed: break;
0
623 case Qt::BottomRightSection:
never executed: case Qt::BottomRightSection:
0
624 newGeometry = QRectF(windowData->startGeometry.topLeft(),-
625 windowData->startGeometry.size() + QSizeF(delta.dx(), delta.dy()));-
626 break;
never executed: break;
0
627 case Qt::BottomSection:
never executed: case Qt::BottomSection:
0
628 newGeometry = QRectF(windowData->startGeometry.topLeft(),-
629 windowData->startGeometry.size() + QSizeF(0, delta.dy()));-
630 break;
never executed: break;
0
631 case Qt::BottomLeftSection:
never executed: case Qt::BottomLeftSection:
0
632 newGeometry = QRectF(windowData->startGeometry.topLeft()-
633 + QPointF(parentXDelta.dx(), parentXDelta.dy()),-
634 windowData->startGeometry.size() - QSizeF(delta.dx(), -delta.dy()));-
635 break;
never executed: break;
0
636 case Qt::TitleBarArea:
never executed: case Qt::TitleBarArea:
0
637 newGeometry = QRectF(windowData->startGeometry.topLeft()-
638 + QPointF(parentDelta.dx(), parentDelta.dy()),-
639 windowData->startGeometry.size());-
640 break;
never executed: break;
0
641 case Qt::NoSection:
never executed: case Qt::NoSection:
0
642 break;
never executed: break;
0
643 }-
644-
645 if (windowData->grabbedSection != Qt::NoSection) {
windowData->gr... Qt::NoSectionDescription
TRUEnever evaluated
FALSEnever evaluated
0
646 _q_boundGeometryToSizeConstraints(windowData->startGeometry, &newGeometry,-
647 windowData->grabbedSection,-
648 q->effectiveSizeHint(Qt::MinimumSize),-
649 q->effectiveSizeHint(Qt::MaximumSize),-
650 q);-
651 q->setGeometry(newGeometry);-
652 }
never executed: end of block
0
653}
never executed: end of block
0
654-
655void QGraphicsWidgetPrivate::windowFrameHoverMoveEvent(QGraphicsSceneHoverEvent *event)-
656{-
657 Q_Q(QGraphicsWidget);-
658 if (!hasDecoration())
!hasDecoration()Description
TRUEnever evaluated
FALSEnever evaluated
0
659 return;
never executed: return;
0
660-
661 ensureWindowData();-
662-
663 if (q->rect().contains(event->pos())) {
q->rect().cont...(event->pos())Description
TRUEnever evaluated
FALSEnever evaluated
0
664 if (windowData->buttonMouseOver || windowData->hoveredSubControl != QStyle::SC_None)
windowData->buttonMouseOverDescription
TRUEnever evaluated
FALSEnever evaluated
windowData->ho...Style::SC_NoneDescription
TRUEnever evaluated
FALSEnever evaluated
0
665 windowFrameHoverLeaveEvent(event);
never executed: windowFrameHoverLeaveEvent(event);
0
666 return;
never executed: return;
0
667 }-
668-
669 bool wasMouseOver = windowData->buttonMouseOver;-
670 QRect oldButtonRect = windowData->buttonRect;-
671 windowData->buttonRect = QRect();-
672 windowData->buttonMouseOver = false;-
673 QPointF pos = event->pos();-
674 QStyleOptionTitleBar bar;-
675 // make sure that the coordinates (rect and pos) we send to the style are positive.-
676 if (windowFrameMargins) {
windowFrameMarginsDescription
TRUEnever evaluated
FALSEnever evaluated
0
677 pos.rx() += windowFrameMargins[Left];-
678 pos.ry() += windowFrameMargins[Top];-
679 }
never executed: end of block
0
680 initStyleOptionTitleBar(&bar);-
681 bar.rect = q->windowFrameRect().toRect();-
682 bar.rect.moveTo(0,0);-
683 bar.rect.setHeight(int(titleBarHeight(bar)));-
684-
685 Qt::CursorShape cursorShape = Qt::ArrowCursor;-
686 bool needsSetCursorCall = true;-
687 switch (q->windowFrameSectionAt(event->pos())) {-
688 case Qt::TopLeftSection:
never executed: case Qt::TopLeftSection:
0
689 case Qt::BottomRightSection:
never executed: case Qt::BottomRightSection:
0
690 cursorShape = Qt::SizeFDiagCursor;-
691 break;
never executed: break;
0
692 case Qt::TopRightSection:
never executed: case Qt::TopRightSection:
0
693 case Qt::BottomLeftSection:
never executed: case Qt::BottomLeftSection:
0
694 cursorShape = Qt::SizeBDiagCursor;-
695 break;
never executed: break;
0
696 case Qt::LeftSection:
never executed: case Qt::LeftSection:
0
697 case Qt::RightSection:
never executed: case Qt::RightSection:
0
698 cursorShape = Qt::SizeHorCursor;-
699 break;
never executed: break;
0
700 case Qt::TopSection:
never executed: case Qt::TopSection:
0
701 case Qt::BottomSection:
never executed: case Qt::BottomSection:
0
702 cursorShape = Qt::SizeVerCursor;-
703 break;
never executed: break;
0
704 case Qt::TitleBarArea:
never executed: case Qt::TitleBarArea:
0
705 windowData->buttonRect = q->style()->subControlRect(-
706 QStyle::CC_TitleBar, &bar, QStyle::SC_TitleBarCloseButton, 0);-
707#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
708 // On mac we should hover if we are in the 'area' of the buttons-
709 windowData->buttonRect |= q->style()->subControlRect(-
710 QStyle::CC_TitleBar, &bar, QStyle::SC_TitleBarMinButton, 0);-
711 windowData->buttonRect |= q->style()->subControlRect(-
712 QStyle::CC_TitleBar, &bar, QStyle::SC_TitleBarMaxButton, 0);-
713#endif-
714 if (windowData->buttonRect.contains(pos.toPoint()))
windowData->bu...pos.toPoint())Description
TRUEnever evaluated
FALSEnever evaluated
0
715 windowData->buttonMouseOver = true;
never executed: windowData->buttonMouseOver = true;
0
716 event->ignore();-
717 break;
never executed: break;
0
718 default:
never executed: default:
0
719 needsSetCursorCall = false;-
720 event->ignore();-
721 }
never executed: end of block
0
722#ifndef QT_NO_CURSOR-
723 if (needsSetCursorCall)
needsSetCursorCallDescription
TRUEnever evaluated
FALSEnever evaluated
0
724 q->setCursor(cursorShape);
never executed: q->setCursor(cursorShape);
0
725#endif-
726 // update buttons if we hover over them-
727 windowData->hoveredSubControl = q->style()->hitTestComplexControl(QStyle::CC_TitleBar, &bar, pos.toPoint(), 0);-
728 if (windowData->hoveredSubControl != QStyle::SC_TitleBarCloseButton)
windowData->ho...BarCloseButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
729 windowData->hoveredSubControl = QStyle::SC_TitleBarLabel;
never executed: windowData->hoveredSubControl = QStyle::SC_TitleBarLabel;
0
730-
731 if (windowData->buttonMouseOver != wasMouseOver) {
windowData->bu...= wasMouseOverDescription
TRUEnever evaluated
FALSEnever evaluated
0
732 if (!oldButtonRect.isNull())
!oldButtonRect.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
0
733 q->update(QRectF(oldButtonRect).translated(q->windowFrameRect().topLeft()));
never executed: q->update(QRectF(oldButtonRect).translated(q->windowFrameRect().topLeft()));
0
734 if (!windowData->buttonRect.isNull())
!windowData->b...nRect.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
0
735 q->update(QRectF(windowData->buttonRect).translated(q->windowFrameRect().topLeft()));
never executed: q->update(QRectF(windowData->buttonRect).translated(q->windowFrameRect().topLeft()));
0
736 }
never executed: end of block
0
737}
never executed: end of block
0
738-
739void QGraphicsWidgetPrivate::windowFrameHoverLeaveEvent(QGraphicsSceneHoverEvent *event)-
740{-
741 Q_UNUSED(event);-
742 Q_Q(QGraphicsWidget);-
743 if (hasDecoration()) {
hasDecoration()Description
TRUEnever evaluated
FALSEnever evaluated
0
744 // ### restore the cursor, don't override it-
745#ifndef QT_NO_CURSOR-
746 q->unsetCursor();-
747#endif-
748-
749 ensureWindowData();-
750-
751 bool needsUpdate = false;-
752 if (windowData->hoveredSubControl == QStyle::SC_TitleBarCloseButton
windowData->ho...BarCloseButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
753 || windowData->buttonMouseOver)
windowData->buttonMouseOverDescription
TRUEnever evaluated
FALSEnever evaluated
0
754 needsUpdate = true;
never executed: needsUpdate = true;
0
755-
756 // update the hover state (of buttons etc...)-
757 windowData->hoveredSubControl = QStyle::SC_None;-
758 windowData->buttonMouseOver = false;-
759 windowData->buttonRect = QRect();-
760 if (needsUpdate)
needsUpdateDescription
TRUEnever evaluated
FALSEnever evaluated
0
761 q->update(windowData->buttonRect);
never executed: q->update(windowData->buttonRect);
0
762 }
never executed: end of block
0
763}
never executed: end of block
0
764-
765bool QGraphicsWidgetPrivate::hasDecoration() const-
766{-
767 return (windowFlags & Qt::Window) && (windowFlags & Qt::WindowTitleHint);
never executed: return (windowFlags & Qt::Window) && (windowFlags & Qt::WindowTitleHint);
0
768}-
769-
770/**-
771 * is called after a reparent has taken place to fix up the focus chain(s)-
772 */-
773void QGraphicsWidgetPrivate::fixFocusChainBeforeReparenting(QGraphicsWidget *newParent, QGraphicsScene *oldScene, QGraphicsScene *newScene)-
774{-
775 Q_Q(QGraphicsWidget);-
776 Q_ASSERT(focusNext && focusPrev);-
777-
778 if (q_ptr->isPanel()) {
q_ptr->isPanel()Description
TRUEnever evaluated
FALSEnever evaluated
0
779 // panels are never a part of their parent's or ancestors' focus-
780 // chains. so reparenting a panel is easy; there's nothing to-
781 // do.-
782 return;
never executed: return;
0
783 }-
784-
785 // we're not a panel, so find the first widget in the focus chain-
786 // (this), and the last (this, or the last widget that is still-
787 // a descendent of this). also find the widgets that currently /-
788 // before reparenting point to this widgets' focus chain.-
789 QGraphicsWidget *focusFirst = q;-
790 QGraphicsWidget *focusBefore = focusPrev;-
791 QGraphicsWidget *focusLast = focusFirst;-
792 QGraphicsWidget *focusAfter = focusNext;-
793 do {-
794 if (!q->isAncestorOf(focusAfter))
!q->isAncestorOf(focusAfter)Description
TRUEnever evaluated
FALSEnever evaluated
0
795 break;
never executed: break;
0
796 focusLast = focusAfter;-
797 } while ((focusAfter = focusAfter->d_func()->focusNext));
never executed: end of block
(focusAfter = ...()->focusNext)Description
TRUEnever evaluated
FALSEnever evaluated
0
798-
799 if (!parent && oldScene && oldScene != newScene && oldScene->d_func()->tabFocusFirst == q) {
!parentDescription
TRUEnever evaluated
FALSEnever evaluated
oldSceneDescription
TRUEnever evaluated
FALSEnever evaluated
oldScene != newSceneDescription
TRUEnever evaluated
FALSEnever evaluated
oldScene->d_fu...ocusFirst == qDescription
TRUEnever evaluated
FALSEnever evaluated
0
800 // detach from old scene's top level focus chain.-
801 oldScene->d_func()->tabFocusFirst = (focusAfter != q) ? focusAfter : 0;
(focusAfter != q)Description
TRUEnever evaluated
FALSEnever evaluated
0
802 }
never executed: end of block
0
803-
804 // detach from current focus chain; skip this widget subtree.-
805 focusBefore->d_func()->focusNext = focusAfter;-
806 focusAfter->d_func()->focusPrev = focusBefore;-
807-
808 if (newParent) {
newParentDescription
TRUEnever evaluated
FALSEnever evaluated
0
809 // attach to new parent's focus chain as the last element-
810 // in its chain.-
811 QGraphicsWidget *newFocusFirst = newParent;-
812 QGraphicsWidget *newFocusLast = newFocusFirst;-
813 QGraphicsWidget *newFocusAfter = newFocusFirst->d_func()->focusNext;-
814 do {-
815 if (!newParent->isAncestorOf(newFocusAfter))
!newParent->is...newFocusAfter)Description
TRUEnever evaluated
FALSEnever evaluated
0
816 break;
never executed: break;
0
817 newFocusLast = newFocusAfter;-
818 } while ((newFocusAfter = newFocusAfter->d_func()->focusNext));
never executed: end of block
(newFocusAfter...()->focusNext)Description
TRUEnever evaluated
FALSEnever evaluated
0
819-
820 newFocusLast->d_func()->focusNext = q;-
821 focusLast->d_func()->focusNext = newFocusAfter;-
822 newFocusAfter->d_func()->focusPrev = focusLast;-
823 focusPrev = newFocusLast;-
824 } else {
never executed: end of block
0
825 // no new parent, so just link up our own prev->last widgets.-
826 focusPrev = focusLast;-
827 focusLast->d_func()->focusNext = q;-
828 }
never executed: end of block
0
829}-
830-
831void QGraphicsWidgetPrivate::setLayout_helper(QGraphicsLayout *l)-
832{-
833 delete (this->layout);-
834 layout = l;-
835 if (!l) {
!lDescription
TRUEnever evaluated
FALSEnever evaluated
0
836 Q_Q(QGraphicsWidget);-
837 q->updateGeometry();-
838 }
never executed: end of block
0
839}
never executed: end of block
0
840-
841qreal QGraphicsWidgetPrivate::width() const-
842{-
843 Q_Q(const QGraphicsWidget);-
844 return q->geometry().width();
never executed: return q->geometry().width();
0
845}-
846-
847void QGraphicsWidgetPrivate::setWidth(qreal w)-
848{-
849 if (qIsNaN(w))
qIsNaN(w)Description
TRUEnever evaluated
FALSEnever evaluated
0
850 return;
never executed: return;
0
851 Q_Q(QGraphicsWidget);-
852 if (q->geometry().width() == w)
q->geometry().width() == wDescription
TRUEnever evaluated
FALSEnever evaluated
0
853 return;
never executed: return;
0
854-
855 q->setGeometry(QRectF(q->x(), q->y(), w, height()));-
856}
never executed: end of block
0
857-
858void QGraphicsWidgetPrivate::resetWidth()-
859{-
860 Q_Q(QGraphicsWidget);-
861 q->setGeometry(QRectF(q->x(), q->y(), 0, height()));-
862}
never executed: end of block
0
863-
864qreal QGraphicsWidgetPrivate::height() const-
865{-
866 Q_Q(const QGraphicsWidget);-
867 return q->geometry().height();
never executed: return q->geometry().height();
0
868}-
869-
870void QGraphicsWidgetPrivate::setHeight(qreal h)-
871{-
872 if (qIsNaN(h))
qIsNaN(h)Description
TRUEnever evaluated
FALSEnever evaluated
0
873 return;
never executed: return;
0
874 Q_Q(QGraphicsWidget);-
875 if (q->geometry().height() == h)
q->geometry().height() == hDescription
TRUEnever evaluated
FALSEnever evaluated
0
876 return;
never executed: return;
0
877-
878 q->setGeometry(QRectF(q->x(), q->y(), width(), h));-
879}
never executed: end of block
0
880-
881void QGraphicsWidgetPrivate::resetHeight()-
882{-
883 Q_Q(QGraphicsWidget);-
884 q->setGeometry(QRectF(q->x(), q->y(), width(), 0));-
885}
never executed: end of block
0
886-
887void QGraphicsWidgetPrivate::setGeometryFromSetPos()-
888{-
889 if (inSetGeometry)
inSetGeometryDescription
TRUEnever evaluated
FALSEnever evaluated
0
890 return;
never executed: return;
0
891 Q_Q(QGraphicsWidget);-
892 inSetPos = 1;-
893 // Ensure setGeometry is called (avoid recursion when setPos is-
894 // called from within setGeometry).-
895 q->setGeometry(QRectF(pos, q->size()));-
896 inSetPos = 0 ;-
897}
never executed: end of block
0
898-
899QT_END_NAMESPACE-
900-
901#endif //QT_NO_GRAPHICSVIEW-
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9