qwidgetresizehandler.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qwidgetresizehandler.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2015 The Qt Company Ltd.-
4** Contact: http://www.qt.io/licensing/-
5**-
6** This file is part of the QtWidgets module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL21$-
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 http://www.qt.io/terms-conditions. For further-
15** information use the contact form at http://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 2.1 or version 3 as published by the Free-
20** Software Foundation and appearing in the file LICENSE.LGPLv21 and-
21** LICENSE.LGPLv3 included in the packaging of this file. Please review the-
22** following information to ensure the GNU Lesser General Public License-
23** requirements will be met: https://www.gnu.org/licenses/lgpl.html and-
24** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.-
25**-
26** As a special exception, The Qt Company gives you certain additional-
27** rights. These rights are described in The Qt Company LGPL Exception-
28** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.-
29**-
30** $QT_END_LICENSE$-
31**-
32****************************************************************************/-
33-
34#include "qwidgetresizehandler_p.h"-
35-
36#ifndef QT_NO_RESIZEHANDLER-
37#include "qframe.h"-
38#include "qapplication.h"-
39#include "qdesktopwidget.h"-
40#include "qcursor.h"-
41#include "qsizegrip.h"-
42#include "qevent.h"-
43#include "qdebug.h"-
44#include "private/qlayoutengine_p.h"-
45-
46QT_BEGIN_NAMESPACE-
47-
48#define RANGE 4-
49-
50static bool resizeHorizontalDirectionFixed = false;-
51static bool resizeVerticalDirectionFixed = false;-
52-
53// ### fixme: Qt 6: No longer export QWidgetResizeHandler and remove "Move"-
54// functionality. Currently, only the resize functionality is used by QDockWidget.-
55// Historically, the class was used in Qt 3's QWorkspace (predecessor to QMdiArea).-
56-
57QWidgetResizeHandler::QWidgetResizeHandler(QWidget *parent, QWidget *cw)-
58 : QObject(parent), widget(parent), childWidget(cw ? cw : parent),-
59 fw(0), extrahei(0), buttonDown(false), moveResizeMode(false), sizeprotect(true), movingEnabled(true)-
60{-
61 mode = Nowhere;-
62 widget->setMouseTracking(true);-
63 QFrame *frame = qobject_cast<QFrame*>(widget);-
64 range = frame ? frame->frameWidth() : RANGE;
frameDescription
TRUEnever evaluated
FALSEnever evaluated
0
65 range = qMax(RANGE, range);-
66 activeForMove = activeForResize = true;-
67 widget->installEventFilter(this);-
68}
never executed: end of block
0
69-
70void QWidgetResizeHandler::setActive(Action ac, bool b)-
71{-
72 if (ac & Move)
ac & MoveDescription
TRUEnever evaluated
FALSEnever evaluated
0
73 activeForMove = b;
never executed: activeForMove = b;
0
74 if (ac & Resize)
ac & ResizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
75 activeForResize = b;
never executed: activeForResize = b;
0
76-
77 if (!isActive())
!isActive()Description
TRUEnever evaluated
FALSEnever evaluated
0
78 setMouseCursor(Nowhere);
never executed: setMouseCursor(Nowhere);
0
79}
never executed: end of block
0
80-
81bool QWidgetResizeHandler::isActive(Action ac) const-
82{-
83 bool b = false;-
84 if (ac & Move) b = activeForMove;
never executed: b = activeForMove;
ac & MoveDescription
TRUEnever evaluated
FALSEnever evaluated
0
85 if (ac & Resize) b |= activeForResize;
never executed: b |= activeForResize;
ac & ResizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
86-
87 return b;
never executed: return b;
0
88}-
89-
90bool QWidgetResizeHandler::eventFilter(QObject *o, QEvent *ee)-
91{-
92 if (!isActive()
!isActive()Description
TRUEnever evaluated
FALSEnever evaluated
0
93 || (ee->type() != QEvent::MouseButtonPress
ee->type() != ...useButtonPressDescription
TRUEnever evaluated
FALSEnever evaluated
0
94 && ee->type() != QEvent::MouseButtonRelease
ee->type() != ...eButtonReleaseDescription
TRUEnever evaluated
FALSEnever evaluated
0
95 && ee->type() != QEvent::MouseMove
ee->type() != ...ent::MouseMoveDescription
TRUEnever evaluated
FALSEnever evaluated
0
96 && ee->type() != QEvent::KeyPress
ee->type() != QEvent::KeyPressDescription
TRUEnever evaluated
FALSEnever evaluated
0
97 && ee->type() != QEvent::ShortcutOverride)
ee->type() != ...ortcutOverrideDescription
TRUEnever evaluated
FALSEnever evaluated
0
98 )-
99 return false;
never executed: return false;
0
100-
101 Q_ASSERT(o == widget);-
102 QWidget *w = widget;-
103 if (QApplication::activePopupWidget()) {
QApplication::...ePopupWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
104 if (buttonDown && ee->type() == QEvent::MouseButtonRelease)
buttonDownDescription
TRUEnever evaluated
FALSEnever evaluated
ee->type() == ...eButtonReleaseDescription
TRUEnever evaluated
FALSEnever evaluated
0
105 buttonDown = false;
never executed: buttonDown = false;
0
106 return false;
never executed: return false;
0
107 }-
108-
109 QMouseEvent *e = (QMouseEvent*)ee;-
110 switch (e->type()) {-
111 case QEvent::MouseButtonPress: {
never executed: case QEvent::MouseButtonPress:
0
112 if (w->isMaximized())
w->isMaximized()Description
TRUEnever evaluated
FALSEnever evaluated
0
113 break;
never executed: break;
0
114 if (!widget->rect().contains(widget->mapFromGlobal(e->globalPos())))
!widget->rect(...>globalPos()))Description
TRUEnever evaluated
FALSEnever evaluated
0
115 return false;
never executed: return false;
0
116 if (e->button() == Qt::LeftButton) {
e->button() == Qt::LeftButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
117#if defined(Q_DEAD_CODE_FROM_QT4_X11)-
118 /*-
119 Implicit grabs do not stop the X server from changing-
120 the cursor in children, which looks *really* bad when-
121 doing resizingk, so we grab the cursor. Note that we do-
122 not do this on Windows since double clicks are lost due-
123 to the grab (see change 198463).-
124 */-
125 if (e->spontaneous())-
126# if !defined(QT_NO_CURSOR)-
127 widget->grabMouse(widget->cursor());-
128# else-
129 widget->grabMouse();-
130# endif // QT_NO_CURSOR-
131#endif // Q_DEAD_CODE_FROM_QT4_X11-
132 buttonDown = false;-
133 emit activate();-
134 bool me = movingEnabled;-
135 movingEnabled = (me && o == widget);
meDescription
TRUEnever evaluated
FALSEnever evaluated
o == widgetDescription
TRUEnever evaluated
FALSEnever evaluated
0
136 mouseMoveEvent(e);-
137 movingEnabled = me;-
138 buttonDown = true;-
139 moveOffset = widget->mapFromGlobal(e->globalPos());-
140 invertedMoveOffset = widget->rect().bottomRight() - moveOffset;-
141 if (mode == Center) {
mode == CenterDescription
TRUEnever evaluated
FALSEnever evaluated
0
142 if (movingEnabled)
movingEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
143 return true;
never executed: return true;
0
144 } else {
never executed: end of block
0
145 return true;
never executed: return true;
0
146 }-
147 }-
148 } break;
never executed: break;
0
149 case QEvent::MouseButtonRelease:
never executed: case QEvent::MouseButtonRelease:
0
150 if (w->isMaximized())
w->isMaximized()Description
TRUEnever evaluated
FALSEnever evaluated
0
151 break;
never executed: break;
0
152 if (e->button() == Qt::LeftButton) {
e->button() == Qt::LeftButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
153 moveResizeMode = false;-
154 buttonDown = false;-
155 widget->releaseMouse();-
156 widget->releaseKeyboard();-
157 if (mode == Center) {
mode == CenterDescription
TRUEnever evaluated
FALSEnever evaluated
0
158 if (movingEnabled)
movingEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
159 return true;
never executed: return true;
0
160 } else {
never executed: end of block
0
161 return true;
never executed: return true;
0
162 }-
163 }-
164 break;
never executed: break;
0
165 case QEvent::MouseMove: {
never executed: case QEvent::MouseMove:
0
166 if (w->isMaximized())
w->isMaximized()Description
TRUEnever evaluated
FALSEnever evaluated
0
167 break;
never executed: break;
0
168 buttonDown = buttonDown && (e->buttons() & Qt::LeftButton); // safety, state machine broken!
buttonDownDescription
TRUEnever evaluated
FALSEnever evaluated
(e->buttons() ...t::LeftButton)Description
TRUEnever evaluated
FALSEnever evaluated
0
169 bool me = movingEnabled;-
170 movingEnabled = (me && o == widget && (buttonDown || moveResizeMode));
meDescription
TRUEnever evaluated
FALSEnever evaluated
o == widgetDescription
TRUEnever evaluated
FALSEnever evaluated
buttonDownDescription
TRUEnever evaluated
FALSEnever evaluated
moveResizeModeDescription
TRUEnever evaluated
FALSEnever evaluated
0
171 mouseMoveEvent(e);-
172 movingEnabled = me;-
173 if (mode == Center) {
mode == CenterDescription
TRUEnever evaluated
FALSEnever evaluated
0
174 if (movingEnabled)
movingEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
175 return true;
never executed: return true;
0
176 } else {
never executed: end of block
0
177 return true;
never executed: return true;
0
178 }-
179 } break;
never executed: break;
0
180 case QEvent::KeyPress:
never executed: case QEvent::KeyPress:
0
181 keyPressEvent((QKeyEvent*)e);-
182 break;
never executed: break;
0
183 case QEvent::ShortcutOverride:
never executed: case QEvent::ShortcutOverride:
0
184 if (buttonDown) {
buttonDownDescription
TRUEnever evaluated
FALSEnever evaluated
0
185 ((QKeyEvent*)ee)->accept();-
186 return true;
never executed: return true;
0
187 }-
188 break;
never executed: break;
0
189 default:
never executed: default:
0
190 break;
never executed: break;
0
191 }-
192-
193 return false;
never executed: return false;
0
194}-
195-
196void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)-
197{-
198 QPoint pos = widget->mapFromGlobal(e->globalPos());-
199 if (!moveResizeMode && !buttonDown) {
!moveResizeModeDescription
TRUEnever evaluated
FALSEnever evaluated
!buttonDownDescription
TRUEnever evaluated
FALSEnever evaluated
0
200 if (pos.y() <= range && pos.x() <= range)
pos.y() <= rangeDescription
TRUEnever evaluated
FALSEnever evaluated
pos.x() <= rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
201 mode = TopLeft;
never executed: mode = TopLeft;
0
202 else if (pos.y() >= widget->height()-range && pos.x() >= widget->width()-range)
pos.y() >= wid...height()-rangeDescription
TRUEnever evaluated
FALSEnever evaluated
pos.x() >= wid...>width()-rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
203 mode = BottomRight;
never executed: mode = BottomRight;
0
204 else if (pos.y() >= widget->height()-range && pos.x() <= range)
pos.y() >= wid...height()-rangeDescription
TRUEnever evaluated
FALSEnever evaluated
pos.x() <= rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
205 mode = BottomLeft;
never executed: mode = BottomLeft;
0
206 else if (pos.y() <= range && pos.x() >= widget->width()-range)
pos.y() <= rangeDescription
TRUEnever evaluated
FALSEnever evaluated
pos.x() >= wid...>width()-rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
207 mode = TopRight;
never executed: mode = TopRight;
0
208 else if (pos.y() <= range)
pos.y() <= rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
209 mode = Top;
never executed: mode = Top;
0
210 else if (pos.y() >= widget->height()-range)
pos.y() >= wid...height()-rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
211 mode = Bottom;
never executed: mode = Bottom;
0
212 else if (pos.x() <= range)
pos.x() <= rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
213 mode = Left;
never executed: mode = Left;
0
214 else if ( pos.x() >= widget->width()-range)
pos.x() >= wid...>width()-rangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
215 mode = Right;
never executed: mode = Right;
0
216 else if (widget->rect().contains(pos))
widget->rect().contains(pos)Description
TRUEnever evaluated
FALSEnever evaluated
0
217 mode = Center;
never executed: mode = Center;
0
218 else-
219 mode = Nowhere;
never executed: mode = Nowhere;
0
220-
221 if (widget->isMinimized() || !isActive(Resize))
widget->isMinimized()Description
TRUEnever evaluated
FALSEnever evaluated
!isActive(Resize)Description
TRUEnever evaluated
FALSEnever evaluated
0
222 mode = Center;
never executed: mode = Center;
0
223#ifndef QT_NO_CURSOR-
224 setMouseCursor(mode);-
225#endif-
226 return;
never executed: return;
0
227 }-
228-
229 if (mode == Center && !movingEnabled)
mode == CenterDescription
TRUEnever evaluated
FALSEnever evaluated
!movingEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
230 return;
never executed: return;
0
231-
232 if (widget->testAttribute(Qt::WA_WState_ConfigPending))
widget->testAt...ConfigPending)Description
TRUEnever evaluated
FALSEnever evaluated
0
233 return;
never executed: return;
0
234-
235-
236 QPoint globalPos = (!widget->isWindow() && widget->parentWidget()) ?
!widget->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
widget->parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
237 widget->parentWidget()->mapFromGlobal(e->globalPos()) : e->globalPos();-
238 if (!widget->isWindow() && !widget->parentWidget()->rect().contains(globalPos)) {
!widget->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
!widget->paren...ins(globalPos)Description
TRUEnever evaluated
FALSEnever evaluated
0
239 if (globalPos.x() < 0)
globalPos.x() < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
240 globalPos.rx() = 0;
never executed: globalPos.rx() = 0;
0
241 if (globalPos.y() < 0)
globalPos.y() < 0Description
TRUEnever evaluated
FALSEnever evaluated
0
242 globalPos.ry() = 0;
never executed: globalPos.ry() = 0;
0
243 if (sizeprotect && globalPos.x() > widget->parentWidget()->width())
sizeprotectDescription
TRUEnever evaluated
FALSEnever evaluated
globalPos.x() ...get()->width()Description
TRUEnever evaluated
FALSEnever evaluated
0
244 globalPos.rx() = widget->parentWidget()->width();
never executed: globalPos.rx() = widget->parentWidget()->width();
0
245 if (sizeprotect && globalPos.y() > widget->parentWidget()->height())
sizeprotectDescription
TRUEnever evaluated
FALSEnever evaluated
globalPos.y() ...et()->height()Description
TRUEnever evaluated
FALSEnever evaluated
0
246 globalPos.ry() = widget->parentWidget()->height();
never executed: globalPos.ry() = widget->parentWidget()->height();
0
247 }
never executed: end of block
0
248-
249 QPoint p = globalPos + invertedMoveOffset;-
250 QPoint pp = globalPos - moveOffset;-
251-
252 // Workaround for window managers which refuse to move a tool window partially offscreen.-
253 if (QGuiApplication::platformName() == QLatin1String("xcb")) {
QGuiApplicatio...1String("xcb")Description
TRUEnever evaluated
FALSEnever evaluated
0
254 const QRect desktop = QApplication::desktop()->availableGeometry(widget);-
255 pp.rx() = qMax(pp.x(), desktop.left());-
256 pp.ry() = qMax(pp.y(), desktop.top());-
257 p.rx() = qMin(p.x(), desktop.right());-
258 p.ry() = qMin(p.y(), desktop.bottom());-
259 }
never executed: end of block
0
260-
261 QSize ms = qSmartMinSize(childWidget);-
262 int mw = ms.width();-
263 int mh = ms.height();-
264 if (childWidget != widget) {
childWidget != widgetDescription
TRUEnever evaluated
FALSEnever evaluated
0
265 mw += 2 * fw;-
266 mh += 2 * fw + extrahei;-
267 }
never executed: end of block
0
268-
269 QSize maxsize(childWidget->maximumSize());-
270 if (childWidget != widget)
childWidget != widgetDescription
TRUEnever evaluated
FALSEnever evaluated
0
271 maxsize += QSize(2 * fw, 2 * fw + extrahei);
never executed: maxsize += QSize(2 * fw, 2 * fw + extrahei);
0
272 QSize mpsize(widget->geometry().right() - pp.x() + 1,-
273 widget->geometry().bottom() - pp.y() + 1);-
274 mpsize = mpsize.expandedTo(widget->minimumSize()).expandedTo(QSize(mw, mh))-
275 .boundedTo(maxsize);-
276 QPoint mp(widget->geometry().right() - mpsize.width() + 1,-
277 widget->geometry().bottom() - mpsize.height() + 1);-
278-
279 QRect geom = widget->geometry();-
280-
281 switch (mode) {-
282 case TopLeft:
never executed: case TopLeft:
0
283 geom = QRect(mp, widget->geometry().bottomRight()) ;-
284 break;
never executed: break;
0
285 case BottomRight:
never executed: case BottomRight:
0
286 geom = QRect(widget->geometry().topLeft(), p) ;-
287 break;
never executed: break;
0
288 case BottomLeft:
never executed: case BottomLeft:
0
289 geom = QRect(QPoint(mp.x(), widget->geometry().y()), QPoint(widget->geometry().right(), p.y())) ;-
290 break;
never executed: break;
0
291 case TopRight:
never executed: case TopRight:
0
292 geom = QRect(QPoint(widget->geometry().x(), mp.y()), QPoint(p.x(), widget->geometry().bottom())) ;-
293 break;
never executed: break;
0
294 case Top:
never executed: case Top:
0
295 geom = QRect(QPoint(widget->geometry().left(), mp.y()), widget->geometry().bottomRight()) ;-
296 break;
never executed: break;
0
297 case Bottom:
never executed: case Bottom:
0
298 geom = QRect(widget->geometry().topLeft(), QPoint(widget->geometry().right(), p.y())) ;-
299 break;
never executed: break;
0
300 case Left:
never executed: case Left:
0
301 geom = QRect(QPoint(mp.x(), widget->geometry().top()), widget->geometry().bottomRight()) ;-
302 break;
never executed: break;
0
303 case Right:
never executed: case Right:
0
304 geom = QRect(widget->geometry().topLeft(), QPoint(p.x(), widget->geometry().bottom())) ;-
305 break;
never executed: break;
0
306 case Center:
never executed: case Center:
0
307 geom.moveTopLeft(pp);-
308 break;
never executed: break;
0
309 default:
never executed: default:
0
310 break;
never executed: break;
0
311 }-
312-
313 geom = QRect(geom.topLeft(),-
314 geom.size().expandedTo(widget->minimumSize())-
315 .expandedTo(QSize(mw, mh))-
316 .boundedTo(maxsize));-
317-
318 if (geom != widget->geometry() &&
geom != widget->geometry()Description
TRUEnever evaluated
FALSEnever evaluated
0
319 (widget->isWindow() || widget->parentWidget()->rect().intersects(geom))) {
widget->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
widget->parent...tersects(geom)Description
TRUEnever evaluated
FALSEnever evaluated
0
320 if (mode == Center)
mode == CenterDescription
TRUEnever evaluated
FALSEnever evaluated
0
321 widget->move(geom.topLeft());
never executed: widget->move(geom.topLeft());
0
322 else-
323 widget->setGeometry(geom);
never executed: widget->setGeometry(geom);
0
324 }-
325}
never executed: end of block
0
326-
327void QWidgetResizeHandler::setMouseCursor(MousePosition m)-
328{-
329#ifdef QT_NO_CURSOR-
330 Q_UNUSED(m);-
331#else-
332 QObjectList children = widget->children();-
333 for (int i = 0; i < children.size(); ++i) {
i < children.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
334 if (QWidget *w = qobject_cast<QWidget*>(children.at(i))) {
QWidget *w = q...hildren.at(i))Description
TRUEnever evaluated
FALSEnever evaluated
0
335 if (!w->testAttribute(Qt::WA_SetCursor)) {
!w->testAttrib...:WA_SetCursor)Description
TRUEnever evaluated
FALSEnever evaluated
0
336 w->setCursor(Qt::ArrowCursor);-
337 }
never executed: end of block
0
338 }
never executed: end of block
0
339 }
never executed: end of block
0
340-
341 switch (m) {-
342 case TopLeft:
never executed: case TopLeft:
0
343 case BottomRight:
never executed: case BottomRight:
0
344 widget->setCursor(Qt::SizeFDiagCursor);-
345 break;
never executed: break;
0
346 case BottomLeft:
never executed: case BottomLeft:
0
347 case TopRight:
never executed: case TopRight:
0
348 widget->setCursor(Qt::SizeBDiagCursor);-
349 break;
never executed: break;
0
350 case Top:
never executed: case Top:
0
351 case Bottom:
never executed: case Bottom:
0
352 widget->setCursor(Qt::SizeVerCursor);-
353 break;
never executed: break;
0
354 case Left:
never executed: case Left:
0
355 case Right:
never executed: case Right:
0
356 widget->setCursor(Qt::SizeHorCursor);-
357 break;
never executed: break;
0
358 default:
never executed: default:
0
359 widget->setCursor(Qt::ArrowCursor);-
360 break;
never executed: break;
0
361 }-
362#endif // QT_NO_CURSOR-
363}-
364-
365void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)-
366{-
367 if (!isMove() && !isResize())
!isMove()Description
TRUEnever evaluated
FALSEnever evaluated
!isResize()Description
TRUEnever evaluated
FALSEnever evaluated
0
368 return;
never executed: return;
0
369 bool is_control = e->modifiers() & Qt::ControlModifier;-
370 int delta = is_control?1:8;
is_controlDescription
TRUEnever evaluated
FALSEnever evaluated
0
371 QPoint pos = QCursor::pos();-
372 switch (e->key()) {-
373 case Qt::Key_Left:
never executed: case Qt::Key_Left:
0
374 pos.rx() -= delta;-
375 if (pos.x() <= QApplication::desktop()->geometry().left()) {
pos.x() <= QAp...metry().left()Description
TRUEnever evaluated
FALSEnever evaluated
0
376 if (mode == TopLeft || mode == BottomLeft) {
mode == TopLeftDescription
TRUEnever evaluated
FALSEnever evaluated
mode == BottomLeftDescription
TRUEnever evaluated
FALSEnever evaluated
0
377 moveOffset.rx() += delta;-
378 invertedMoveOffset.rx() += delta;-
379 } else {
never executed: end of block
0
380 moveOffset.rx() -= delta;-
381 invertedMoveOffset.rx() -= delta;-
382 }
never executed: end of block
0
383 }-
384 if (isResize() && !resizeHorizontalDirectionFixed) {
isResize()Description
TRUEnever evaluated
FALSEnever evaluated
!resizeHorizon...DirectionFixedDescription
TRUEnever evaluated
FALSEnever evaluated
0
385 resizeHorizontalDirectionFixed = true;-
386 if (mode == BottomRight)
mode == BottomRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
387 mode = BottomLeft;
never executed: mode = BottomLeft;
0
388 else if (mode == TopRight)
mode == TopRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
389 mode = TopLeft;
never executed: mode = TopLeft;
0
390#ifndef QT_NO_CURSOR-
391 setMouseCursor(mode);-
392 widget->grabMouse(widget->cursor());-
393#else-
394 widget->grabMouse();-
395#endif-
396 }
never executed: end of block
0
397 break;
never executed: break;
0
398 case Qt::Key_Right:
never executed: case Qt::Key_Right:
0
399 pos.rx() += delta;-
400 if (pos.x() >= QApplication::desktop()->geometry().right()) {
pos.x() >= QAp...etry().right()Description
TRUEnever evaluated
FALSEnever evaluated
0
401 if (mode == TopRight || mode == BottomRight) {
mode == TopRightDescription
TRUEnever evaluated
FALSEnever evaluated
mode == BottomRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
402 moveOffset.rx() += delta;-
403 invertedMoveOffset.rx() += delta;-
404 } else {
never executed: end of block
0
405 moveOffset.rx() -= delta;-
406 invertedMoveOffset.rx() -= delta;-
407 }
never executed: end of block
0
408 }-
409 if (isResize() && !resizeHorizontalDirectionFixed) {
isResize()Description
TRUEnever evaluated
FALSEnever evaluated
!resizeHorizon...DirectionFixedDescription
TRUEnever evaluated
FALSEnever evaluated
0
410 resizeHorizontalDirectionFixed = true;-
411 if (mode == BottomLeft)
mode == BottomLeftDescription
TRUEnever evaluated
FALSEnever evaluated
0
412 mode = BottomRight;
never executed: mode = BottomRight;
0
413 else if (mode == TopLeft)
mode == TopLeftDescription
TRUEnever evaluated
FALSEnever evaluated
0
414 mode = TopRight;
never executed: mode = TopRight;
0
415#ifndef QT_NO_CURSOR-
416 setMouseCursor(mode);-
417 widget->grabMouse(widget->cursor());-
418#else-
419 widget->grabMouse();-
420#endif-
421 }
never executed: end of block
0
422 break;
never executed: break;
0
423 case Qt::Key_Up:
never executed: case Qt::Key_Up:
0
424 pos.ry() -= delta;-
425 if (pos.y() <= QApplication::desktop()->geometry().top()) {
pos.y() <= QAp...ometry().top()Description
TRUEnever evaluated
FALSEnever evaluated
0
426 if (mode == TopLeft || mode == TopRight) {
mode == TopLeftDescription
TRUEnever evaluated
FALSEnever evaluated
mode == TopRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
427 moveOffset.ry() += delta;-
428 invertedMoveOffset.ry() += delta;-
429 } else {
never executed: end of block
0
430 moveOffset.ry() -= delta;-
431 invertedMoveOffset.ry() -= delta;-
432 }
never executed: end of block
0
433 }-
434 if (isResize() && !resizeVerticalDirectionFixed) {
isResize()Description
TRUEnever evaluated
FALSEnever evaluated
!resizeVerticalDirectionFixedDescription
TRUEnever evaluated
FALSEnever evaluated
0
435 resizeVerticalDirectionFixed = true;-
436 if (mode == BottomLeft)
mode == BottomLeftDescription
TRUEnever evaluated
FALSEnever evaluated
0
437 mode = TopLeft;
never executed: mode = TopLeft;
0
438 else if (mode == BottomRight)
mode == BottomRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
439 mode = TopRight;
never executed: mode = TopRight;
0
440#ifndef QT_NO_CURSOR-
441 setMouseCursor(mode);-
442 widget->grabMouse(widget->cursor());-
443#else-
444 widget->grabMouse();-
445#endif-
446 }
never executed: end of block
0
447 break;
never executed: break;
0
448 case Qt::Key_Down:
never executed: case Qt::Key_Down:
0
449 pos.ry() += delta;-
450 if (pos.y() >= QApplication::desktop()->geometry().bottom()) {
pos.y() >= QAp...try().bottom()Description
TRUEnever evaluated
FALSEnever evaluated
0
451 if (mode == BottomLeft || mode == BottomRight) {
mode == BottomLeftDescription
TRUEnever evaluated
FALSEnever evaluated
mode == BottomRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
452 moveOffset.ry() += delta;-
453 invertedMoveOffset.ry() += delta;-
454 } else {
never executed: end of block
0
455 moveOffset.ry() -= delta;-
456 invertedMoveOffset.ry() -= delta;-
457 }
never executed: end of block
0
458 }-
459 if (isResize() && !resizeVerticalDirectionFixed) {
isResize()Description
TRUEnever evaluated
FALSEnever evaluated
!resizeVerticalDirectionFixedDescription
TRUEnever evaluated
FALSEnever evaluated
0
460 resizeVerticalDirectionFixed = true;-
461 if (mode == TopLeft)
mode == TopLeftDescription
TRUEnever evaluated
FALSEnever evaluated
0
462 mode = BottomLeft;
never executed: mode = BottomLeft;
0
463 else if (mode == TopRight)
mode == TopRightDescription
TRUEnever evaluated
FALSEnever evaluated
0
464 mode = BottomRight;
never executed: mode = BottomRight;
0
465#ifndef QT_NO_CURSOR-
466 setMouseCursor(mode);-
467 widget->grabMouse(widget->cursor());-
468#else-
469 widget->grabMouse();-
470#endif-
471 }
never executed: end of block
0
472 break;
never executed: break;
0
473 case Qt::Key_Space:
never executed: case Qt::Key_Space:
0
474 case Qt::Key_Return:
never executed: case Qt::Key_Return:
0
475 case Qt::Key_Enter:
never executed: case Qt::Key_Enter:
0
476 case Qt::Key_Escape:
never executed: case Qt::Key_Escape:
0
477 moveResizeMode = false;-
478 widget->releaseMouse();-
479 widget->releaseKeyboard();-
480 buttonDown = false;-
481 break;
never executed: break;
0
482 default:
never executed: default:
0
483 return;
never executed: return;
0
484 }-
485 QCursor::setPos(pos);-
486}
never executed: end of block
0
487-
488-
489void QWidgetResizeHandler::doResize()-
490{-
491 if (!activeForResize)
!activeForResizeDescription
TRUEnever evaluated
FALSEnever evaluated
0
492 return;
never executed: return;
0
493-
494 moveResizeMode = true;-
495 moveOffset = widget->mapFromGlobal(QCursor::pos());-
496 if (moveOffset.x() < widget->width()/2) {
moveOffset.x()...get->width()/2Description
TRUEnever evaluated
FALSEnever evaluated
0
497 if (moveOffset.y() < widget->height()/2)
moveOffset.y()...et->height()/2Description
TRUEnever evaluated
FALSEnever evaluated
0
498 mode = TopLeft;
never executed: mode = TopLeft;
0
499 else-
500 mode = BottomLeft;
never executed: mode = BottomLeft;
0
501 } else {-
502 if (moveOffset.y() < widget->height()/2)
moveOffset.y()...et->height()/2Description
TRUEnever evaluated
FALSEnever evaluated
0
503 mode = TopRight;
never executed: mode = TopRight;
0
504 else-
505 mode = BottomRight;
never executed: mode = BottomRight;
0
506 }-
507 invertedMoveOffset = widget->rect().bottomRight() - moveOffset;-
508#ifndef QT_NO_CURSOR-
509 setMouseCursor(mode);-
510 widget->grabMouse(widget->cursor() );-
511#else-
512 widget->grabMouse();-
513#endif-
514 widget->grabKeyboard();-
515 resizeHorizontalDirectionFixed = false;-
516 resizeVerticalDirectionFixed = false;-
517}
never executed: end of block
0
518-
519void QWidgetResizeHandler::doMove()-
520{-
521 if (!activeForMove)
!activeForMoveDescription
TRUEnever evaluated
FALSEnever evaluated
0
522 return;
never executed: return;
0
523-
524 mode = Center;-
525 moveResizeMode = true;-
526 moveOffset = widget->mapFromGlobal(QCursor::pos());-
527 invertedMoveOffset = widget->rect().bottomRight() - moveOffset;-
528#ifndef QT_NO_CURSOR-
529 widget->grabMouse(Qt::SizeAllCursor);-
530#else-
531 widget->grabMouse();-
532#endif-
533 widget->grabKeyboard();-
534}
never executed: end of block
0
535-
536QT_END_NAMESPACE-
537-
538#include "moc_qwidgetresizehandler_p.cpp"-
539-
540#endif //QT_NO_RESIZEHANDLER-
Source codeSwitch to Preprocessed file

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