widgets/qsizegrip.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtGui 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 Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41 -
42#include "qsizegrip.h" -
43 -
44#ifndef QT_NO_SIZEGRIP -
45 -
46#include "qapplication.h" -
47#include "qevent.h" -
48#include "qpainter.h" -
49#include "qwindow.h" -
50#include <qpa/qplatformwindow.h> -
51#include "qstyle.h" -
52#include "qstyleoption.h" -
53#include "qlayout.h" -
54#include "qdebug.h" -
55#include <QDesktopWidget> -
56 -
57#ifdef Q_WS_MAC -
58#include <private/qt_mac_p.h> -
59#endif -
60 -
61#include <private/qwidget_p.h> -
62#include <QtWidgets/qabstractscrollarea.h> -
63 -
64QT_BEGIN_NAMESPACE -
65 -
66static QWidget *qt_sizegrip_topLevelWidget(QWidget* w) -
67{ -
68 while (w && !w->isWindow() && w->windowType() != Qt::SubWindow)
partially evaluated: w
TRUEFALSE
yes
Evaluation Count:602
no
Evaluation Count:0
evaluated: !w->isWindow()
TRUEFALSE
yes
Evaluation Count:312
yes
Evaluation Count:290
evaluated: w->windowType() != Qt::SubWindow
TRUEFALSE
yes
Evaluation Count:310
yes
Evaluation Count:2
0-602
69 w = w->parentWidget();
executed: w = w->parentWidget();
Execution Count:310
310
70 return w;
executed: return w;
Execution Count:292
292
71} -
72 -
73class QSizeGripPrivate : public QWidgetPrivate -
74{ -
75 Q_DECLARE_PUBLIC(QSizeGrip) -
76public: -
77 QSizeGripPrivate(); -
78 void init(); -
79 QPoint p; -
80 QRect r; -
81 int d; -
82 int dxMax; -
83 int dyMax; -
84 Qt::Corner m_corner; -
85 bool gotMousePress; -
86 QWidget *tlw; -
87#ifdef Q_WS_MAC -
88 void updateMacSizer(bool hide) const; -
89#endif -
90 Qt::Corner corner() const; -
91 inline bool atBottom() const -
92 { -
93 return m_corner == Qt::BottomRightCorner || m_corner == Qt::BottomLeftCorner;
never executed: return m_corner == Qt::BottomRightCorner || m_corner == Qt::BottomLeftCorner;
0
94 } -
95 -
96 inline bool atLeft() const -
97 { -
98 return m_corner == Qt::BottomLeftCorner || m_corner == Qt::TopLeftCorner;
never executed: return m_corner == Qt::BottomLeftCorner || m_corner == Qt::TopLeftCorner;
0
99 } -
100 -
101 void updateTopLevelWidget() -
102 { -
103 Q_Q(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGrip * const q = q_func();
-
104 QWidget *w = qt_sizegrip_topLevelWidget(q);
executed (the execution status of this line is deduced): QWidget *w = qt_sizegrip_topLevelWidget(q);
-
105 if (tlw == w)
evaluated: tlw == w
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:216
6-216
106 return;
executed: return;
Execution Count:6
6
107 if (tlw)
evaluated: tlw
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:215
1-215
108 tlw->removeEventFilter(q);
executed: tlw->removeEventFilter(q);
Execution Count:1
1
109 tlw = w;
executed (the execution status of this line is deduced): tlw = w;
-
110 if (tlw)
partially evaluated: tlw
TRUEFALSE
yes
Evaluation Count:216
no
Evaluation Count:0
0-216
111 tlw->installEventFilter(q);
executed: tlw->installEventFilter(q);
Execution Count:216
216
112 }
executed: }
Execution Count:216
216
113 -
114 // This slot is invoked by QLayout when the size grip is added to -
115 // a layout or reparented after the tlw is shown. This re-implementation is basically -
116 // the same as QWidgetPrivate::_q_showIfNotHidden except that it checks -
117 // for Qt::WindowFullScreen and Qt::WindowMaximized as well. -
118 void _q_showIfNotHidden() -
119 { -
120 Q_Q(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGrip * const q = q_func();
-
121 bool showSizeGrip = !(q->isHidden() && q->testAttribute(Qt::WA_WState_ExplicitShowHide));
partially evaluated: q->isHidden()
TRUEFALSE
yes
Evaluation Count:7
no
Evaluation Count:0
partially evaluated: q->testAttribute(Qt::WA_WState_ExplicitShowHide)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:7
0-7
122 updateTopLevelWidget();
executed (the execution status of this line is deduced): updateTopLevelWidget();
-
123 if (tlw && showSizeGrip) {
partially evaluated: tlw
TRUEFALSE
yes
Evaluation Count:7
no
Evaluation Count:0
partially evaluated: showSizeGrip
TRUEFALSE
yes
Evaluation Count:7
no
Evaluation Count:0
0-7
124 Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen;
executed (the execution status of this line is deduced): Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen;
-
125#ifndef Q_WS_MAC -
126 sizeGripNotVisibleState |= Qt::WindowMaximized;
executed (the execution status of this line is deduced): sizeGripNotVisibleState |= Qt::WindowMaximized;
-
127#endif -
128 // Don't show the size grip if the tlw is maximized or in full screen mode. -
129 showSizeGrip = !(tlw->windowState() & sizeGripNotVisibleState);
executed (the execution status of this line is deduced): showSizeGrip = !(tlw->windowState() & sizeGripNotVisibleState);
-
130 }
executed: }
Execution Count:7
7
131 if (showSizeGrip)
evaluated: showSizeGrip
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:2
2-5
132 q->setVisible(true);
executed: q->setVisible(true);
Execution Count:5
5
133 }
executed: }
Execution Count:7
7
134 -
135 bool m_platformSizeGrip; -
136}; -
137 -
138QSizeGripPrivate::QSizeGripPrivate() -
139 : dxMax(0) -
140 , dyMax(0) -
141 , gotMousePress(false) -
142 , tlw(0) -
143 , m_platformSizeGrip(false) -
144{ -
145}
executed: }
Execution Count:215
215
146 -
147#ifdef Q_WS_MAC -
148void QSizeGripPrivate::updateMacSizer(bool hide) const -
149{ -
150 Q_Q(const QSizeGrip); -
151 if (QApplication::closingDown() || !parent) -
152 return; -
153 QWidget *topLevelWindow = qt_sizegrip_topLevelWidget(const_cast<QSizeGrip *>(q)); -
154 if(topLevelWindow && topLevelWindow->isWindow()) -
155 QWidgetPrivate::qt_mac_update_sizer(topLevelWindow, hide ? -1 : 1); -
156} -
157#endif -
158 -
159Qt::Corner QSizeGripPrivate::corner() const -
160{ -
161 Q_Q(const QSizeGrip);
executed (the execution status of this line is deduced): const QSizeGrip * const q = q_func();
-
162 QWidget *tlw = qt_sizegrip_topLevelWidget(const_cast<QSizeGrip *>(q));
executed (the execution status of this line is deduced): QWidget *tlw = qt_sizegrip_topLevelWidget(const_cast<QSizeGrip *>(q));
-
163 const QPoint sizeGripPos = q->mapTo(tlw, QPoint(0, 0));
executed (the execution status of this line is deduced): const QPoint sizeGripPos = q->mapTo(tlw, QPoint(0, 0));
-
164 bool isAtBottom = sizeGripPos.y() >= tlw->height() / 2;
executed (the execution status of this line is deduced): bool isAtBottom = sizeGripPos.y() >= tlw->height() / 2;
-
165 bool isAtLeft = sizeGripPos.x() <= tlw->width() / 2;
executed (the execution status of this line is deduced): bool isAtLeft = sizeGripPos.x() <= tlw->width() / 2;
-
166 if (isAtLeft)
evaluated: isAtLeft
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:61
9-61
167 return isAtBottom ? Qt::BottomLeftCorner : Qt::TopLeftCorner;
executed: return isAtBottom ? Qt::BottomLeftCorner : Qt::TopLeftCorner;
Execution Count:9
9
168 else -
169 return isAtBottom ? Qt::BottomRightCorner : Qt::TopRightCorner;
executed: return isAtBottom ? Qt::BottomRightCorner : Qt::TopRightCorner;
Execution Count:61
61
170} -
171 -
172/*! -
173 \class QSizeGrip -
174 -
175 \brief The QSizeGrip class provides a resize handle for resizing top-level windows. -
176 -
177 \ingroup mainwindow-classes -
178 \ingroup basicwidgets -
179 \inmodule QtWidgets -
180 -
181 This widget works like the standard Windows resize handle. In the -
182 X11 version this resize handle generally works differently from -
183 the one provided by the system if the X11 window manager does not -
184 support necessary modern post-ICCCM specifications. -
185 -
186 Put this widget anywhere in a widget tree and the user can use it -
187 to resize the top-level window or any widget with the Qt::SubWindow -
188 flag set. Generally, this should be in the lower right-hand corner. -
189 Note that QStatusBar already uses this widget, so if you have a -
190 status bar (e.g., you are using QMainWindow), then you don't need -
191 to use this widget explicitly. -
192 -
193 On some platforms the size grip automatically hides itself when the -
194 window is shown full screen or maximised. -
195 -
196 \table 50% -
197 \row \li \inlineimage fusion-statusbar-sizegrip.png Screenshot of a Fusion style size grip -
198 \li A size grip widget at the bottom-right corner of a main window, shown in the -
199 \l{Fusion Style Widget Gallery}{Fusion widget style}. -
200 \endtable -
201 -
202 The QSizeGrip class inherits QWidget and reimplements the \l -
203 {QWidget::mousePressEvent()}{mousePressEvent()} and \l -
204 {QWidget::mouseMoveEvent()}{mouseMoveEvent()} functions to feature -
205 the resize functionality, and the \l -
206 {QWidget::paintEvent()}{paintEvent()} function to render the -
207 size grip widget. -
208 -
209 \sa QStatusBar, QWidget::windowState() -
210*/ -
211 -
212 -
213/*! -
214 Constructs a resize corner as a child widget of the given \a -
215 parent. -
216*/ -
217QSizeGrip::QSizeGrip(QWidget * parent) -
218 : QWidget(*new QSizeGripPrivate, parent, 0) -
219{ -
220 Q_D(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
221 d->init();
executed (the execution status of this line is deduced): d->init();
-
222}
executed: }
Execution Count:215
215
223 -
224 -
225void QSizeGripPrivate::init() -
226{ -
227 Q_Q(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGrip * const q = q_func();
-
228 m_corner = q->isLeftToRight() ? Qt::BottomRightCorner : Qt::BottomLeftCorner;
partially evaluated: q->isLeftToRight()
TRUEFALSE
yes
Evaluation Count:215
no
Evaluation Count:0
0-215
229 -
230#if !defined(QT_NO_CURSOR) && !defined(Q_WS_MAC) -
231 q->setCursor(m_corner == Qt::TopLeftCorner || m_corner == Qt::BottomRightCorner
executed (the execution status of this line is deduced): q->setCursor(m_corner == Qt::TopLeftCorner || m_corner == Qt::BottomRightCorner
-
232 ? Qt::SizeFDiagCursor : Qt::SizeBDiagCursor);
executed (the execution status of this line is deduced): ? Qt::SizeFDiagCursor : Qt::SizeBDiagCursor);
-
233#endif -
234 q->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
executed (the execution status of this line is deduced): q->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
-
235 updateTopLevelWidget();
executed (the execution status of this line is deduced): updateTopLevelWidget();
-
236}
executed: }
Execution Count:215
215
237 -
238 -
239/*! -
240 Destroys this size grip. -
241*/ -
242QSizeGrip::~QSizeGrip() -
243{ -
244} -
245 -
246/*! -
247 \reimp -
248*/ -
249QSize QSizeGrip::sizeHint() const -
250{ -
251 QStyleOption opt(0);
executed (the execution status of this line is deduced): QStyleOption opt(0);
-
252 opt.init(this);
executed (the execution status of this line is deduced): opt.init(this);
-
253 return (style()->sizeFromContents(QStyle::CT_SizeGrip, &opt, QSize(13, 13), this).
executed: return (style()->sizeFromContents(QStyle::CT_SizeGrip, &opt, QSize(13, 13), this). expandedTo(QApplication::globalStrut()));
Execution Count:260
260
254 expandedTo(QApplication::globalStrut()));
executed: return (style()->sizeFromContents(QStyle::CT_SizeGrip, &opt, QSize(13, 13), this). expandedTo(QApplication::globalStrut()));
Execution Count:260
260
255} -
256 -
257/*! -
258 Paints the resize grip. -
259 -
260 Resize grips are usually rendered as small diagonal textured lines -
261 in the lower-right corner. The paint event is passed in the \a -
262 event parameter. -
263*/ -
264void QSizeGrip::paintEvent(QPaintEvent *event) -
265{ -
266 Q_UNUSED(event);
executed (the execution status of this line is deduced): (void)event;;
-
267 Q_D(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
268 QPainter painter(this);
executed (the execution status of this line is deduced): QPainter painter(this);
-
269 QStyleOptionSizeGrip opt;
executed (the execution status of this line is deduced): QStyleOptionSizeGrip opt;
-
270 opt.init(this);
executed (the execution status of this line is deduced): opt.init(this);
-
271 opt.corner = d->m_corner;
executed (the execution status of this line is deduced): opt.corner = d->m_corner;
-
272 style()->drawControl(QStyle::CE_SizeGrip, &opt, &painter, this);
executed (the execution status of this line is deduced): style()->drawControl(QStyle::CE_SizeGrip, &opt, &painter, this);
-
273}
executed: }
Execution Count:45
45
274 -
275/*! -
276 \fn void QSizeGrip::mousePressEvent(QMouseEvent * event) -
277 -
278 Receives the mouse press events for the widget, and primes the -
279 resize operation. The mouse press event is passed in the \a event -
280 parameter. -
281*/ -
282 -
283void QSizeGrip::mousePressEvent(QMouseEvent * e) -
284{ -
285 if (e->button() != Qt::LeftButton) {
never evaluated: e->button() != Qt::LeftButton
0
286 QWidget::mousePressEvent(e);
never executed (the execution status of this line is deduced): QWidget::mousePressEvent(e);
-
287 return;
never executed: return;
0
288 } -
289 -
290 Q_D(QSizeGrip);
never executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
291 QWidget *tlw = qt_sizegrip_topLevelWidget(this);
never executed (the execution status of this line is deduced): QWidget *tlw = qt_sizegrip_topLevelWidget(this);
-
292 d->p = e->globalPos();
never executed (the execution status of this line is deduced): d->p = e->globalPos();
-
293 d->gotMousePress = true;
never executed (the execution status of this line is deduced): d->gotMousePress = true;
-
294 d->r = tlw->geometry();
never executed (the execution status of this line is deduced): d->r = tlw->geometry();
-
295 -
296 // Does the platform provide size grip support? -
297 d->m_platformSizeGrip = false;
never executed (the execution status of this line is deduced): d->m_platformSizeGrip = false;
-
298 if (tlw->isWindow()
never evaluated: tlw->isWindow()
0
299 && tlw->windowHandle()
never evaluated: tlw->windowHandle()
0
300 && !(tlw->windowFlags() & Qt::X11BypassWindowManagerHint)
never evaluated: !(tlw->windowFlags() & Qt::X11BypassWindowManagerHint)
0
301 && !tlw->testAttribute(Qt::WA_DontShowOnScreen)
never evaluated: !tlw->testAttribute(Qt::WA_DontShowOnScreen)
0
302 && !tlw->hasHeightForWidth()) {
never evaluated: !tlw->hasHeightForWidth()
0
303 QPlatformWindow *platformWindow = tlw->windowHandle()->handle();
never executed (the execution status of this line is deduced): QPlatformWindow *platformWindow = tlw->windowHandle()->handle();
-
304 const QPoint topLevelPos = mapTo(tlw, e->pos());
never executed (the execution status of this line is deduced): const QPoint topLevelPos = mapTo(tlw, e->pos());
-
305 d->m_platformSizeGrip = platformWindow && platformWindow->startSystemResize(topLevelPos, d->m_corner);
never evaluated: platformWindow
never evaluated: platformWindow->startSystemResize(topLevelPos, d->m_corner)
0
306 }
never executed: }
0
307 -
308 if (d->m_platformSizeGrip)
never evaluated: d->m_platformSizeGrip
0
309 return;
never executed: return;
0
310 -
311 // Find available desktop/workspace geometry. -
312 QRect availableGeometry;
never executed (the execution status of this line is deduced): QRect availableGeometry;
-
313 bool hasVerticalSizeConstraint = true;
never executed (the execution status of this line is deduced): bool hasVerticalSizeConstraint = true;
-
314 bool hasHorizontalSizeConstraint = true;
never executed (the execution status of this line is deduced): bool hasHorizontalSizeConstraint = true;
-
315 if (tlw->isWindow())
never evaluated: tlw->isWindow()
0
316 availableGeometry = QApplication::desktop()->availableGeometry(tlw);
never executed: availableGeometry = QApplication::desktop()->availableGeometry(tlw);
0
317 else { -
318 const QWidget *tlwParent = tlw->parentWidget();
never executed (the execution status of this line is deduced): const QWidget *tlwParent = tlw->parentWidget();
-
319 // Check if tlw is inside QAbstractScrollArea/QScrollArea. -
320 // If that's the case tlw->parentWidget() will return the viewport -
321 // and tlw->parentWidget()->parentWidget() will return the scroll area. -
322#ifndef QT_NO_SCROLLAREA -
323 QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea *>(tlwParent->parentWidget());
never executed (the execution status of this line is deduced): QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea *>(tlwParent->parentWidget());
-
324 if (scrollArea) {
never evaluated: scrollArea
0
325 hasHorizontalSizeConstraint = scrollArea->horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff;
never executed (the execution status of this line is deduced): hasHorizontalSizeConstraint = scrollArea->horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff;
-
326 hasVerticalSizeConstraint = scrollArea->verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff;
never executed (the execution status of this line is deduced): hasVerticalSizeConstraint = scrollArea->verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff;
-
327 }
never executed: }
0
328#endif // QT_NO_SCROLLAREA -
329 availableGeometry = tlwParent->contentsRect();
never executed (the execution status of this line is deduced): availableGeometry = tlwParent->contentsRect();
-
330 }
never executed: }
0
331 -
332 // Find frame geometries, title bar height, and decoration sizes. -
333 const QRect frameGeometry = tlw->frameGeometry();
never executed (the execution status of this line is deduced): const QRect frameGeometry = tlw->frameGeometry();
-
334 const int titleBarHeight = qMax(tlw->geometry().y() - frameGeometry.y(), 0);
never executed (the execution status of this line is deduced): const int titleBarHeight = qMax(tlw->geometry().y() - frameGeometry.y(), 0);
-
335 const int bottomDecoration = qMax(frameGeometry.height() - tlw->height() - titleBarHeight, 0);
never executed (the execution status of this line is deduced): const int bottomDecoration = qMax(frameGeometry.height() - tlw->height() - titleBarHeight, 0);
-
336 const int leftRightDecoration = qMax((frameGeometry.width() - tlw->width()) / 2, 0);
never executed (the execution status of this line is deduced): const int leftRightDecoration = qMax((frameGeometry.width() - tlw->width()) / 2, 0);
-
337 -
338 // Determine dyMax depending on whether the sizegrip is at the bottom -
339 // of the widget or not. -
340 if (d->atBottom()) {
never evaluated: d->atBottom()
0
341 if (hasVerticalSizeConstraint)
never evaluated: hasVerticalSizeConstraint
0
342 d->dyMax = availableGeometry.bottom() - d->r.bottom() - bottomDecoration;
never executed: d->dyMax = availableGeometry.bottom() - d->r.bottom() - bottomDecoration;
0
343 else -
344 d->dyMax = INT_MAX;
never executed: d->dyMax = 2147483647;
0
345 } else { -
346 if (hasVerticalSizeConstraint)
never evaluated: hasVerticalSizeConstraint
0
347 d->dyMax = availableGeometry.y() - d->r.y() + titleBarHeight;
never executed: d->dyMax = availableGeometry.y() - d->r.y() + titleBarHeight;
0
348 else -
349 d->dyMax = -INT_MAX;
never executed: d->dyMax = -2147483647;
0
350 } -
351 -
352 // In RTL mode, the size grip is to the left; find dxMax from the desktop/workspace -
353 // geometry, the size grip geometry and the width of the decoration. -
354 if (d->atLeft()) {
never evaluated: d->atLeft()
0
355 if (hasHorizontalSizeConstraint)
never evaluated: hasHorizontalSizeConstraint
0
356 d->dxMax = availableGeometry.x() - d->r.x() + leftRightDecoration;
never executed: d->dxMax = availableGeometry.x() - d->r.x() + leftRightDecoration;
0
357 else -
358 d->dxMax = -INT_MAX;
never executed: d->dxMax = -2147483647;
0
359 } else { -
360 if (hasHorizontalSizeConstraint)
never evaluated: hasHorizontalSizeConstraint
0
361 d->dxMax = availableGeometry.right() - d->r.right() - leftRightDecoration;
never executed: d->dxMax = availableGeometry.right() - d->r.right() - leftRightDecoration;
0
362 else -
363 d->dxMax = INT_MAX;
never executed: d->dxMax = 2147483647;
0
364 } -
365} -
366 -
367 -
368/*! -
369 \fn void QSizeGrip::mouseMoveEvent(QMouseEvent * event) -
370 Resizes the top-level widget containing this widget. The mouse -
371 move event is passed in the \a event parameter. -
372*/ -
373void QSizeGrip::mouseMoveEvent(QMouseEvent * e) -
374{ -
375 Q_D(QSizeGrip);
never executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
376 if (e->buttons() != Qt::LeftButton || d->m_platformSizeGrip) {
never evaluated: e->buttons() != Qt::LeftButton
never evaluated: d->m_platformSizeGrip
0
377 QWidget::mouseMoveEvent(e);
never executed (the execution status of this line is deduced): QWidget::mouseMoveEvent(e);
-
378 return;
never executed: return;
0
379 } -
380 -
381 QWidget* tlw = qt_sizegrip_topLevelWidget(this);
never executed (the execution status of this line is deduced): QWidget* tlw = qt_sizegrip_topLevelWidget(this);
-
382 if (!d->gotMousePress || tlw->testAttribute(Qt::WA_WState_ConfigPending))
never evaluated: !d->gotMousePress
never evaluated: tlw->testAttribute(Qt::WA_WState_ConfigPending)
0
383 return;
never executed: return;
0
384 -
385 QPoint np(e->globalPos());
never executed (the execution status of this line is deduced): QPoint np(e->globalPos());
-
386 -
387 // Don't extend beyond the available geometry; bound to dyMax and dxMax. -
388 QSize ns;
never executed (the execution status of this line is deduced): QSize ns;
-
389 if (d->atBottom())
never evaluated: d->atBottom()
0
390 ns.rheight() = d->r.height() + qMin(np.y() - d->p.y(), d->dyMax);
never executed: ns.rheight() = d->r.height() + qMin(np.y() - d->p.y(), d->dyMax);
0
391 else -
392 ns.rheight() = d->r.height() - qMax(np.y() - d->p.y(), d->dyMax);
never executed: ns.rheight() = d->r.height() - qMax(np.y() - d->p.y(), d->dyMax);
0
393 -
394 if (d->atLeft())
never evaluated: d->atLeft()
0
395 ns.rwidth() = d->r.width() - qMax(np.x() - d->p.x(), d->dxMax);
never executed: ns.rwidth() = d->r.width() - qMax(np.x() - d->p.x(), d->dxMax);
0
396 else -
397 ns.rwidth() = d->r.width() + qMin(np.x() - d->p.x(), d->dxMax);
never executed: ns.rwidth() = d->r.width() + qMin(np.x() - d->p.x(), d->dxMax);
0
398 -
399 ns = QLayout::closestAcceptableSize(tlw, ns);
never executed (the execution status of this line is deduced): ns = QLayout::closestAcceptableSize(tlw, ns);
-
400 -
401 QPoint p;
never executed (the execution status of this line is deduced): QPoint p;
-
402 QRect nr(p, ns);
never executed (the execution status of this line is deduced): QRect nr(p, ns);
-
403 if (d->atBottom()) {
never evaluated: d->atBottom()
0
404 if (d->atLeft())
never evaluated: d->atLeft()
0
405 nr.moveTopRight(d->r.topRight());
never executed: nr.moveTopRight(d->r.topRight());
0
406 else -
407 nr.moveTopLeft(d->r.topLeft());
never executed: nr.moveTopLeft(d->r.topLeft());
0
408 } else { -
409 if (d->atLeft())
never evaluated: d->atLeft()
0
410 nr.moveBottomRight(d->r.bottomRight());
never executed: nr.moveBottomRight(d->r.bottomRight());
0
411 else -
412 nr.moveBottomLeft(d->r.bottomLeft());
never executed: nr.moveBottomLeft(d->r.bottomLeft());
0
413 } -
414 -
415 tlw->setGeometry(nr);
never executed (the execution status of this line is deduced): tlw->setGeometry(nr);
-
416}
never executed: }
0
417 -
418/*! -
419 \reimp -
420*/ -
421void QSizeGrip::mouseReleaseEvent(QMouseEvent *mouseEvent) -
422{ -
423 if (mouseEvent->button() == Qt::LeftButton) {
never evaluated: mouseEvent->button() == Qt::LeftButton
0
424 Q_D(QSizeGrip);
never executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
425 d->gotMousePress = false;
never executed (the execution status of this line is deduced): d->gotMousePress = false;
-
426 d->p = QPoint();
never executed (the execution status of this line is deduced): d->p = QPoint();
-
427 } else {
never executed: }
0
428 QWidget::mouseReleaseEvent(mouseEvent);
never executed (the execution status of this line is deduced): QWidget::mouseReleaseEvent(mouseEvent);
-
429 }
never executed: }
0
430} -
431 -
432/*! -
433 \reimp -
434*/ -
435void QSizeGrip::moveEvent(QMoveEvent * /*moveEvent*/) -
436{ -
437 Q_D(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
438 // We're inside a resize operation; no update necessary. -
439 if (!d->p.isNull())
partially evaluated: !d->p.isNull()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:70
0-70
440 return;
never executed: return;
0
441 -
442 d->m_corner = d->corner();
executed (the execution status of this line is deduced): d->m_corner = d->corner();
-
443#if !defined(QT_NO_CURSOR) && !defined(Q_WS_MAC) -
444 setCursor(d->m_corner == Qt::TopLeftCorner || d->m_corner == Qt::BottomRightCorner
executed (the execution status of this line is deduced): setCursor(d->m_corner == Qt::TopLeftCorner || d->m_corner == Qt::BottomRightCorner
-
445 ? Qt::SizeFDiagCursor : Qt::SizeBDiagCursor);
executed (the execution status of this line is deduced): ? Qt::SizeFDiagCursor : Qt::SizeBDiagCursor);
-
446#endif -
447}
executed: }
Execution Count:70
70
448 -
449/*! -
450 \reimp -
451*/ -
452void QSizeGrip::showEvent(QShowEvent *showEvent) -
453{ -
454#ifdef Q_WS_MAC -
455 d_func()->updateMacSizer(false); -
456#endif -
457 QWidget::showEvent(showEvent);
executed (the execution status of this line is deduced): QWidget::showEvent(showEvent);
-
458}
executed: }
Execution Count:66
66
459 -
460/*! -
461 \reimp -
462*/ -
463void QSizeGrip::hideEvent(QHideEvent *hideEvent) -
464{ -
465#ifdef Q_WS_MAC -
466 d_func()->updateMacSizer(true); -
467#endif -
468 QWidget::hideEvent(hideEvent);
executed (the execution status of this line is deduced): QWidget::hideEvent(hideEvent);
-
469}
executed: }
Execution Count:64
64
470 -
471/*! -
472 \reimp -
473*/ -
474void QSizeGrip::setVisible(bool visible) -
475{ -
476 QWidget::setVisible(visible);
executed (the execution status of this line is deduced): QWidget::setVisible(visible);
-
477}
executed: }
Execution Count:243
243
478 -
479/*! \reimp */ -
480bool QSizeGrip::eventFilter(QObject *o, QEvent *e) -
481{ -
482 Q_D(QSizeGrip);
executed (the execution status of this line is deduced): QSizeGripPrivate * const d = d_func();
-
483 if ((isHidden() && testAttribute(Qt::WA_WState_ExplicitShowHide))
evaluated: isHidden()
TRUEFALSE
yes
Evaluation Count:569
yes
Evaluation Count:9896
evaluated: testAttribute(Qt::WA_WState_ExplicitShowHide)
TRUEFALSE
yes
Evaluation Count:495
yes
Evaluation Count:74
74-9896
484 || e->type() != QEvent::WindowStateChange
evaluated: e->type() != QEvent::WindowStateChange
TRUEFALSE
yes
Evaluation Count:9953
yes
Evaluation Count:17
17-9953
485 || o != d->tlw) {
partially evaluated: o != d->tlw
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:17
0-17
486 return QWidget::eventFilter(o, e);
executed: return QWidget::eventFilter(o, e);
Execution Count:10448
10448
487 } -
488 Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen;
executed (the execution status of this line is deduced): Qt::WindowStates sizeGripNotVisibleState = Qt::WindowFullScreen;
-
489#ifndef Q_WS_MAC -
490 sizeGripNotVisibleState |= Qt::WindowMaximized;
executed (the execution status of this line is deduced): sizeGripNotVisibleState |= Qt::WindowMaximized;
-
491#endif -
492 // Don't show the size grip if the tlw is maximized or in full screen mode. -
493 setVisible(!(d->tlw->windowState() & sizeGripNotVisibleState));
executed (the execution status of this line is deduced): setVisible(!(d->tlw->windowState() & sizeGripNotVisibleState));
-
494 setAttribute(Qt::WA_WState_ExplicitShowHide, false);
executed (the execution status of this line is deduced): setAttribute(Qt::WA_WState_ExplicitShowHide, false);
-
495 return QWidget::eventFilter(o, e);
executed: return QWidget::eventFilter(o, e);
Execution Count:17
17
496} -
497 -
498/*! -
499 \reimp -
500*/ -
501bool QSizeGrip::event(QEvent *event) -
502{ -
503 return QWidget::event(event);
executed: return QWidget::event(event);
Execution Count:1275
1275
504} -
505 -
506QT_END_NAMESPACE -
507 -
508#include "moc_qsizegrip.cpp" -
509 -
510#endif //QT_NO_SIZEGRIP -
511 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial