qtoolbutton.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qtoolbutton.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 "qtoolbutton.h"-
41#ifndef QT_NO_TOOLBUTTON-
42-
43#include <qapplication.h>-
44#include <qdesktopwidget.h>-
45#include <qdrawutil.h>-
46#include <qevent.h>-
47#include <qicon.h>-
48#include <qmenu.h>-
49#include <qpainter.h>-
50#include <qpointer.h>-
51#include <qstyle.h>-
52#include <qstyleoption.h>-
53#include <qtooltip.h>-
54#include <qmainwindow.h>-
55#include <qtoolbar.h>-
56#include <qvariant.h>-
57#include <qstylepainter.h>-
58#include <private/qabstractbutton_p.h>-
59#include <private/qaction_p.h>-
60#include <private/qmenu_p.h>-
61-
62QT_BEGIN_NAMESPACE-
63-
64class QToolButtonPrivate : public QAbstractButtonPrivate-
65{-
66 Q_DECLARE_PUBLIC(QToolButton)-
67public:-
68 void init();-
69#ifndef QT_NO_MENU-
70 void _q_buttonPressed();-
71 void _q_buttonReleased();-
72 void popupTimerDone();-
73 void _q_updateButtonDown();-
74 void _q_menuTriggered(QAction *);-
75#endif-
76 bool updateHoverControl(const QPoint &pos);-
77 void _q_actionTriggered();-
78 QStyle::SubControl newHoverControl(const QPoint &pos);-
79 QStyle::SubControl hoverControl;-
80 QRect hoverRect;-
81 QPointer<QAction> menuAction; //the menu set by the user (setMenu)-
82 QBasicTimer popupTimer;-
83 int delay;-
84 Qt::ArrowType arrowType;-
85 Qt::ToolButtonStyle toolButtonStyle;-
86 QToolButton::ToolButtonPopupMode popupMode;-
87 enum { NoButtonPressed=0, MenuButtonPressed=1, ToolButtonPressed=2 };-
88 uint buttonPressed : 2;-
89 uint menuButtonDown : 1;-
90 uint autoRaise : 1;-
91 uint repeat : 1;-
92 QAction *defaultAction;-
93#ifndef QT_NO_MENU-
94 bool hasMenu() const;-
95 //workaround for task 177850-
96 QList<QAction *> actionsCopy;-
97#endif-
98};-
99-
100#ifndef QT_NO_MENU-
101bool QToolButtonPrivate::hasMenu() const-
102{-
103 return ((defaultAction && defaultAction->menu())
never executed: return ((defaultAction && defaultAction->menu()) || (menuAction && menuAction->menu()) || actions.size() > (defaultAction ? 1 : 0));
0
104 || (menuAction && menuAction->menu())
never executed: return ((defaultAction && defaultAction->menu()) || (menuAction && menuAction->menu()) || actions.size() > (defaultAction ? 1 : 0));
0
105 || actions.size() > (defaultAction ? 1 : 0));
never executed: return ((defaultAction && defaultAction->menu()) || (menuAction && menuAction->menu()) || actions.size() > (defaultAction ? 1 : 0));
0
106}-
107#endif-
108-
109/*!-
110 \class QToolButton-
111 \brief The QToolButton class provides a quick-access button to-
112 commands or options, usually used inside a QToolBar.-
113-
114 \ingroup basicwidgets-
115 \inmodule QtWidgets-
116-
117 A tool button is a special button that provides quick-access to-
118 specific commands or options. As opposed to a normal command-
119 button, a tool button usually doesn't show a text label, but shows-
120 an icon instead.-
121-
122 Tool buttons are normally created when new QAction instances are-
123 created with QToolBar::addAction() or existing actions are added-
124 to a toolbar with QToolBar::addAction(). It is also possible to-
125 construct tool buttons in the same way as any other widget, and-
126 arrange them alongside other widgets in layouts.-
127-
128 One classic use of a tool button is to select tools; for example,-
129 the "pen" tool in a drawing program. This would be implemented-
130 by using a QToolButton as a toggle button (see setCheckable()).-
131-
132 QToolButton supports auto-raising. In auto-raise mode, the button-
133 draws a 3D frame only when the mouse points at it. The feature is-
134 automatically turned on when a button is used inside a QToolBar.-
135 Change it with setAutoRaise().-
136-
137 A tool button's icon is set as QIcon. This makes it possible to-
138 specify different pixmaps for the disabled and active state. The-
139 disabled pixmap is used when the button's functionality is not-
140 available. The active pixmap is displayed when the button is-
141 auto-raised because the mouse pointer is hovering over it.-
142-
143 The button's look and dimension is adjustable with-
144 setToolButtonStyle() and setIconSize(). When used inside a-
145 QToolBar in a QMainWindow, the button automatically adjusts to-
146 QMainWindow's settings (see QMainWindow::setToolButtonStyle() and-
147 QMainWindow::setIconSize()). Instead of an icon, a tool button can-
148 also display an arrow symbol, specified with-
149 \l{QToolButton::arrowType} {arrowType}.-
150-
151 A tool button can offer additional choices in a popup menu. The-
152 popup menu can be set using setMenu(). Use setPopupMode() to-
153 configure the different modes available for tool buttons with a-
154 menu set. The default mode is DelayedPopupMode which is sometimes-
155 used with the "Back" button in a web browser. After pressing and-
156 holding the button down for a while, a menu pops up showing a list-
157 of possible pages to jump to. The timeout is style dependent,-
158 see QStyle::SH_ToolButton_PopupDelay.-
159-
160 \table 100%-
161 \row \li \inlineimage assistant-toolbar.png Qt Assistant's toolbar with tool buttons-
162 \row \li Qt Assistant's toolbar contains tool buttons that are associated-
163 with actions used in other parts of the main window.-
164 \endtable-
165-
166 \sa QPushButton, QToolBar, QMainWindow, QAction,-
167 {fowler}{GUI Design Handbook: Push Button}-
168*/-
169-
170/*!-
171 \fn void QToolButton::triggered(QAction *action)-
172-
173 This signal is emitted when the given \a action is triggered.-
174-
175 The action may also be associated with other parts of the user interface,-
176 such as menu items and keyboard shortcuts. Sharing actions in this-
177 way helps make the user interface more consistent and is often less work-
178 to implement.-
179*/-
180-
181/*!-
182 Constructs an empty tool button with parent \a-
183 parent.-
184*/-
185QToolButton::QToolButton(QWidget * parent)-
186 : QAbstractButton(*new QToolButtonPrivate, parent)-
187{-
188 Q_D(QToolButton);-
189 d->init();-
190}
never executed: end of block
0
191-
192-
193-
194/* Set-up code common to all the constructors */-
195-
196void QToolButtonPrivate::init()-
197{-
198 Q_Q(QToolButton);-
199 defaultAction = 0;-
200#ifndef QT_NO_TOOLBAR-
201 if (qobject_cast<QToolBar*>(parent))
qobject_cast<Q...lBar*>(parent)Description
TRUEnever evaluated
FALSEnever evaluated
0
202 autoRaise = true;
never executed: autoRaise = true;
0
203 else-
204#endif-
205 autoRaise = false;
never executed: autoRaise = false;
0
206 arrowType = Qt::NoArrow;-
207 menuButtonDown = false;-
208 popupMode = QToolButton::DelayedPopup;-
209 buttonPressed = QToolButtonPrivate::NoButtonPressed;-
210-
211 toolButtonStyle = Qt::ToolButtonIconOnly;-
212 hoverControl = QStyle::SC_None;-
213-
214 q->setFocusPolicy(Qt::TabFocus);-
215 q->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed,-
216 QSizePolicy::ToolButton));-
217-
218#ifndef QT_NO_MENU-
219 QObject::connect(q, SIGNAL(pressed()), q, SLOT(_q_buttonPressed()));-
220 QObject::connect(q, SIGNAL(released()), q, SLOT(_q_buttonReleased()));-
221#endif-
222-
223 setLayoutItemMargins(QStyle::SE_ToolButtonLayoutItem);-
224 delay = q->style()->styleHint(QStyle::SH_ToolButton_PopupDelay, 0, q);-
225}
never executed: end of block
0
226-
227/*!-
228 Initialize \a option with the values from this QToolButton. This method-
229 is useful for subclasses when they need a QStyleOptionToolButton, but don't want-
230 to fill in all the information themselves.-
231-
232 \sa QStyleOption::initFrom()-
233*/-
234void QToolButton::initStyleOption(QStyleOptionToolButton *option) const-
235{-
236 if (!option)
!optionDescription
TRUEnever evaluated
FALSEnever evaluated
0
237 return;
never executed: return;
0
238-
239 Q_D(const QToolButton);-
240 option->initFrom(this);-
241 bool forceNoText = false;-
242 option->iconSize = iconSize(); //default value-
243-
244#ifndef QT_NO_TOOLBAR-
245 if (parentWidget()) {
parentWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
246 if (QToolBar *toolBar = qobject_cast<QToolBar *>(parentWidget())) {
QToolBar *tool...arentWidget())Description
TRUEnever evaluated
FALSEnever evaluated
0
247 option->iconSize = toolBar->iconSize();-
248 }
never executed: end of block
0
249 }
never executed: end of block
0
250#endif // QT_NO_TOOLBAR-
251-
252 if (!forceNoText)
!forceNoTextDescription
TRUEnever evaluated
FALSEnever evaluated
0
253 option->text = d->text;
never executed: option->text = d->text;
0
254 option->icon = d->icon;-
255 option->arrowType = d->arrowType;-
256 if (d->down)
d->downDescription
TRUEnever evaluated
FALSEnever evaluated
0
257 option->state |= QStyle::State_Sunken;
never executed: option->state |= QStyle::State_Sunken;
0
258 if (d->checked)
d->checkedDescription
TRUEnever evaluated
FALSEnever evaluated
0
259 option->state |= QStyle::State_On;
never executed: option->state |= QStyle::State_On;
0
260 if (d->autoRaise)
d->autoRaiseDescription
TRUEnever evaluated
FALSEnever evaluated
0
261 option->state |= QStyle::State_AutoRaise;
never executed: option->state |= QStyle::State_AutoRaise;
0
262 if (!d->checked && !d->down)
!d->checkedDescription
TRUEnever evaluated
FALSEnever evaluated
!d->downDescription
TRUEnever evaluated
FALSEnever evaluated
0
263 option->state |= QStyle::State_Raised;
never executed: option->state |= QStyle::State_Raised;
0
264-
265 option->subControls = QStyle::SC_ToolButton;-
266 option->activeSubControls = QStyle::SC_None;-
267-
268 option->features = QStyleOptionToolButton::None;-
269 if (d->popupMode == QToolButton::MenuButtonPopup) {
d->popupMode =...enuButtonPopupDescription
TRUEnever evaluated
FALSEnever evaluated
0
270 option->subControls |= QStyle::SC_ToolButtonMenu;-
271 option->features |= QStyleOptionToolButton::MenuButtonPopup;-
272 }
never executed: end of block
0
273 if (option->state & QStyle::State_MouseOver) {
option->state ...tate_MouseOverDescription
TRUEnever evaluated
FALSEnever evaluated
0
274 option->activeSubControls = d->hoverControl;-
275 }
never executed: end of block
0
276 if (d->menuButtonDown) {
d->menuButtonDownDescription
TRUEnever evaluated
FALSEnever evaluated
0
277 option->state |= QStyle::State_Sunken;-
278 option->activeSubControls |= QStyle::SC_ToolButtonMenu;-
279 }
never executed: end of block
0
280 if (d->down) {
d->downDescription
TRUEnever evaluated
FALSEnever evaluated
0
281 option->state |= QStyle::State_Sunken;-
282 option->activeSubControls |= QStyle::SC_ToolButton;-
283 }
never executed: end of block
0
284-
285-
286 if (d->arrowType != Qt::NoArrow)
d->arrowType != Qt::NoArrowDescription
TRUEnever evaluated
FALSEnever evaluated
0
287 option->features |= QStyleOptionToolButton::Arrow;
never executed: option->features |= QStyleOptionToolButton::Arrow;
0
288 if (d->popupMode == QToolButton::DelayedPopup)
d->popupMode =...::DelayedPopupDescription
TRUEnever evaluated
FALSEnever evaluated
0
289 option->features |= QStyleOptionToolButton::PopupDelay;
never executed: option->features |= QStyleOptionToolButton::PopupDelay;
0
290#ifndef QT_NO_MENU-
291 if (d->hasMenu())
d->hasMenu()Description
TRUEnever evaluated
FALSEnever evaluated
0
292 option->features |= QStyleOptionToolButton::HasMenu;
never executed: option->features |= QStyleOptionToolButton::HasMenu;
0
293#endif-
294 if (d->toolButtonStyle == Qt::ToolButtonFollowStyle) {
d->toolButtonS...tonFollowStyleDescription
TRUEnever evaluated
FALSEnever evaluated
0
295 option->toolButtonStyle = Qt::ToolButtonStyle(style()->styleHint(QStyle::SH_ToolButtonStyle, option, this));-
296 } else
never executed: end of block
0
297 option->toolButtonStyle = d->toolButtonStyle;
never executed: option->toolButtonStyle = d->toolButtonStyle;
0
298-
299 if (option->toolButtonStyle == Qt::ToolButtonTextBesideIcon) {
option->toolBu...TextBesideIconDescription
TRUEnever evaluated
FALSEnever evaluated
0
300 // If the action is not prioritized, remove the text label to save space-
301 if (d->defaultAction && d->defaultAction->priority() < QAction::NormalPriority)
d->defaultActionDescription
TRUEnever evaluated
FALSEnever evaluated
d->defaultActi...NormalPriorityDescription
TRUEnever evaluated
FALSEnever evaluated
0
302 option->toolButtonStyle = Qt::ToolButtonIconOnly;
never executed: option->toolButtonStyle = Qt::ToolButtonIconOnly;
0
303 }
never executed: end of block
0
304-
305 if (d->icon.isNull() && d->arrowType == Qt::NoArrow && !forceNoText) {
d->icon.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
d->arrowType == Qt::NoArrowDescription
TRUEnever evaluated
FALSEnever evaluated
!forceNoTextDescription
TRUEnever evaluated
FALSEnever evaluated
0
306 if (!d->text.isEmpty())
!d->text.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
307 option->toolButtonStyle = Qt::ToolButtonTextOnly;
never executed: option->toolButtonStyle = Qt::ToolButtonTextOnly;
0
308 else if (option->toolButtonStyle != Qt::ToolButtonTextOnly)
option->toolBu...ButtonTextOnlyDescription
TRUEnever evaluated
FALSEnever evaluated
0
309 option->toolButtonStyle = Qt::ToolButtonIconOnly;
never executed: option->toolButtonStyle = Qt::ToolButtonIconOnly;
0
310 }
never executed: end of block
0
311-
312 option->pos = pos();-
313 option->font = font();-
314}
never executed: end of block
0
315-
316/*!-
317 Destroys the object and frees any allocated resources.-
318*/-
319-
320QToolButton::~QToolButton()-
321{-
322}-
323-
324/*!-
325 \reimp-
326*/-
327QSize QToolButton::sizeHint() const-
328{-
329 Q_D(const QToolButton);-
330 if (d->sizeHint.isValid())
d->sizeHint.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
331 return d->sizeHint;
never executed: return d->sizeHint;
0
332 ensurePolished();-
333-
334 int w = 0, h = 0;-
335 QStyleOptionToolButton opt;-
336 initStyleOption(&opt);-
337-
338 QFontMetrics fm = fontMetrics();-
339 if (opt.toolButtonStyle != Qt::ToolButtonTextOnly) {
opt.toolButton...ButtonTextOnlyDescription
TRUEnever evaluated
FALSEnever evaluated
0
340 QSize icon = opt.iconSize;-
341 w = icon.width();-
342 h = icon.height();-
343 }
never executed: end of block
0
344-
345 if (opt.toolButtonStyle != Qt::ToolButtonIconOnly) {
opt.toolButton...ButtonIconOnlyDescription
TRUEnever evaluated
FALSEnever evaluated
0
346 QSize textSize = fm.size(Qt::TextShowMnemonic, text());-
347 textSize.setWidth(textSize.width() + fm.width(QLatin1Char(' '))*2);-
348 if (opt.toolButtonStyle == Qt::ToolButtonTextUnderIcon) {
opt.toolButton...nTextUnderIconDescription
TRUEnever evaluated
FALSEnever evaluated
0
349 h += 4 + textSize.height();-
350 if (textSize.width() > w)
textSize.width() > wDescription
TRUEnever evaluated
FALSEnever evaluated
0
351 w = textSize.width();
never executed: w = textSize.width();
0
352 } else if (opt.toolButtonStyle == Qt::ToolButtonTextBesideIcon) {
never executed: end of block
opt.toolButton...TextBesideIconDescription
TRUEnever evaluated
FALSEnever evaluated
0
353 w += 4 + textSize.width();-
354 if (textSize.height() > h)
textSize.height() > hDescription
TRUEnever evaluated
FALSEnever evaluated
0
355 h = textSize.height();
never executed: h = textSize.height();
0
356 } else { // TextOnly
never executed: end of block
0
357 w = textSize.width();-
358 h = textSize.height();-
359 }
never executed: end of block
0
360 }-
361-
362 opt.rect.setSize(QSize(w, h)); // PM_MenuButtonIndicator depends on the height-
363 if (d->popupMode == MenuButtonPopup)
d->popupMode =...enuButtonPopupDescription
TRUEnever evaluated
FALSEnever evaluated
0
364 w += style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, this);
never executed: w += style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, this);
0
365-
366 d->sizeHint = style()->sizeFromContents(QStyle::CT_ToolButton, &opt, QSize(w, h), this).-
367 expandedTo(QApplication::globalStrut());-
368 return d->sizeHint;
never executed: return d->sizeHint;
0
369}-
370-
371/*!-
372 \reimp-
373 */-
374QSize QToolButton::minimumSizeHint() const-
375{-
376 return sizeHint();
never executed: return sizeHint();
0
377}-
378-
379/*!-
380 \property QToolButton::toolButtonStyle-
381 \brief whether the tool button displays an icon only, text only,-
382 or text beside/below the icon.-
383-
384 The default is Qt::ToolButtonIconOnly.-
385-
386 To have the style of toolbuttons follow the system settings, set this property to Qt::ToolButtonFollowStyle.-
387 On Unix, the user settings from the desktop environment will be used.-
388 On other platforms, Qt::ToolButtonFollowStyle means icon only.-
389-
390 QToolButton automatically connects this slot to the relevant-
391 signal in the QMainWindow in which is resides.-
392*/-
393-
394/*!-
395 \property QToolButton::arrowType-
396 \brief whether the button displays an arrow instead of a normal icon-
397-
398 This displays an arrow as the icon for the QToolButton.-
399-
400 By default, this property is set to Qt::NoArrow.-
401*/-
402-
403Qt::ToolButtonStyle QToolButton::toolButtonStyle() const-
404{-
405 Q_D(const QToolButton);-
406 return d->toolButtonStyle;
never executed: return d->toolButtonStyle;
0
407}-
408-
409Qt::ArrowType QToolButton::arrowType() const-
410{-
411 Q_D(const QToolButton);-
412 return d->arrowType;
never executed: return d->arrowType;
0
413}-
414-
415-
416void QToolButton::setToolButtonStyle(Qt::ToolButtonStyle style)-
417{-
418 Q_D(QToolButton);-
419 if (d->toolButtonStyle == style)
d->toolButtonStyle == styleDescription
TRUEnever evaluated
FALSEnever evaluated
0
420 return;
never executed: return;
0
421-
422 d->toolButtonStyle = style;-
423 d->sizeHint = QSize();-
424 updateGeometry();-
425 if (isVisible()) {
isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
0
426 update();-
427 }
never executed: end of block
0
428}
never executed: end of block
0
429-
430void QToolButton::setArrowType(Qt::ArrowType type)-
431{-
432 Q_D(QToolButton);-
433 if (d->arrowType == type)
d->arrowType == typeDescription
TRUEnever evaluated
FALSEnever evaluated
0
434 return;
never executed: return;
0
435-
436 d->arrowType = type;-
437 d->sizeHint = QSize();-
438 updateGeometry();-
439 if (isVisible()) {
isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
0
440 update();-
441 }
never executed: end of block
0
442}
never executed: end of block
0
443-
444/*!-
445 \fn void QToolButton::paintEvent(QPaintEvent *event)-
446-
447 Paints the button in response to the paint \a event.-
448*/-
449void QToolButton::paintEvent(QPaintEvent *)-
450{-
451 QStylePainter p(this);-
452 QStyleOptionToolButton opt;-
453 initStyleOption(&opt);-
454 p.drawComplexControl(QStyle::CC_ToolButton, opt);-
455}
never executed: end of block
0
456-
457/*!-
458 \reimp-
459 */-
460void QToolButton::actionEvent(QActionEvent *event)-
461{-
462 Q_D(QToolButton);-
463 QAction *action = event->action();-
464 switch (event->type()) {-
465 case QEvent::ActionChanged:
never executed: case QEvent::ActionChanged:
0
466 if (action == d->defaultAction)
action == d->defaultActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
467 setDefaultAction(action); // update button state
never executed: setDefaultAction(action);
0
468 break;
never executed: break;
0
469 case QEvent::ActionAdded:
never executed: case QEvent::ActionAdded:
0
470 connect(action, SIGNAL(triggered()), this, SLOT(_q_actionTriggered()));-
471 break;
never executed: break;
0
472 case QEvent::ActionRemoved:
never executed: case QEvent::ActionRemoved:
0
473 if (d->defaultAction == action)
d->defaultAction == actionDescription
TRUEnever evaluated
FALSEnever evaluated
0
474 d->defaultAction = 0;
never executed: d->defaultAction = 0;
0
475#ifndef QT_NO_MENU-
476 if (action == d->menuAction)
action == d->menuActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
477 d->menuAction = 0;
never executed: d->menuAction = 0;
0
478#endif-
479 action->disconnect(this);-
480 break;
never executed: break;
0
481 default:
never executed: default:
0
482 ;-
483 }
never executed: end of block
0
484 QAbstractButton::actionEvent(event);-
485}
never executed: end of block
0
486-
487QStyle::SubControl QToolButtonPrivate::newHoverControl(const QPoint &pos)-
488{-
489 Q_Q(QToolButton);-
490 QStyleOptionToolButton opt;-
491 q->initStyleOption(&opt);-
492 opt.subControls = QStyle::SC_All;-
493 hoverControl = q->style()->hitTestComplexControl(QStyle::CC_ToolButton, &opt, pos, q);-
494 if (hoverControl == QStyle::SC_None)
hoverControl =...Style::SC_NoneDescription
TRUEnever evaluated
FALSEnever evaluated
0
495 hoverRect = QRect();
never executed: hoverRect = QRect();
0
496 else-
497 hoverRect = q->style()->subControlRect(QStyle::CC_ToolButton, &opt, hoverControl, q);
never executed: hoverRect = q->style()->subControlRect(QStyle::CC_ToolButton, &opt, hoverControl, q);
0
498 return hoverControl;
never executed: return hoverControl;
0
499}-
500-
501bool QToolButtonPrivate::updateHoverControl(const QPoint &pos)-
502{-
503 Q_Q(QToolButton);-
504 QRect lastHoverRect = hoverRect;-
505 QStyle::SubControl lastHoverControl = hoverControl;-
506 bool doesHover = q->testAttribute(Qt::WA_Hover);-
507 if (lastHoverControl != newHoverControl(pos) && doesHover) {
lastHoverContr...erControl(pos)Description
TRUEnever evaluated
FALSEnever evaluated
doesHoverDescription
TRUEnever evaluated
FALSEnever evaluated
0
508 q->update(lastHoverRect);-
509 q->update(hoverRect);-
510 return true;
never executed: return true;
0
511 }-
512 return !doesHover;
never executed: return !doesHover;
0
513}-
514-
515void QToolButtonPrivate::_q_actionTriggered()-
516{-
517 Q_Q(QToolButton);-
518 if (QAction *action = qobject_cast<QAction *>(q->sender()))
QAction *actio...>(q->sender())Description
TRUEnever evaluated
FALSEnever evaluated
0
519 emit q->triggered(action);
never executed: q->triggered(action);
0
520}
never executed: end of block
0
521-
522/*!-
523 \reimp-
524 */-
525void QToolButton::enterEvent(QEvent * e)-
526{-
527 Q_D(QToolButton);-
528 if (d->autoRaise)
d->autoRaiseDescription
TRUEnever evaluated
FALSEnever evaluated
0
529 update();
never executed: update();
0
530 if (d->defaultAction)
d->defaultActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
531 d->defaultAction->hover();
never executed: d->defaultAction->hover();
0
532 QAbstractButton::enterEvent(e);-
533}
never executed: end of block
0
534-
535-
536/*!-
537 \reimp-
538 */-
539void QToolButton::leaveEvent(QEvent * e)-
540{-
541 Q_D(QToolButton);-
542 if (d->autoRaise)
d->autoRaiseDescription
TRUEnever evaluated
FALSEnever evaluated
0
543 update();
never executed: update();
0
544-
545 QAbstractButton::leaveEvent(e);-
546}
never executed: end of block
0
547-
548-
549/*!-
550 \reimp-
551 */-
552void QToolButton::timerEvent(QTimerEvent *e)-
553{-
554#ifndef QT_NO_MENU-
555 Q_D(QToolButton);-
556 if (e->timerId() == d->popupTimer.timerId()) {
e->timerId() =...imer.timerId()Description
TRUEnever evaluated
FALSEnever evaluated
0
557 d->popupTimerDone();-
558 return;
never executed: return;
0
559 }-
560#endif-
561 QAbstractButton::timerEvent(e);-
562}
never executed: end of block
0
563-
564-
565/*!-
566 \reimp-
567*/-
568void QToolButton::changeEvent(QEvent *e)-
569{-
570#ifndef QT_NO_TOOLBAR-
571 Q_D(QToolButton);-
572 if (e->type() == QEvent::ParentChange) {
e->type() == Q...::ParentChangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
573 if (qobject_cast<QToolBar*>(parentWidget()))
qobject_cast<Q...arentWidget())Description
TRUEnever evaluated
FALSEnever evaluated
0
574 d->autoRaise = true;
never executed: d->autoRaise = true;
0
575 } else if (e->type() == QEvent::StyleChange
never executed: end of block
e->type() == Q...t::StyleChangeDescription
TRUEnever evaluated
FALSEnever evaluated
0
576#ifdef Q_OS_MAC-
577 || e->type() == QEvent::MacSizeChange-
578#endif-
579 ) {-
580 d->delay = style()->styleHint(QStyle::SH_ToolButton_PopupDelay, 0, this);-
581 d->setLayoutItemMargins(QStyle::SE_ToolButtonLayoutItem);-
582 }
never executed: end of block
0
583#endif-
584 QAbstractButton::changeEvent(e);-
585}
never executed: end of block
0
586-
587/*!-
588 \reimp-
589*/-
590void QToolButton::mousePressEvent(QMouseEvent *e)-
591{-
592 Q_D(QToolButton);-
593#ifndef QT_NO_MENU-
594 QStyleOptionToolButton opt;-
595 initStyleOption(&opt);-
596 if (e->button() == Qt::LeftButton && (d->popupMode == MenuButtonPopup)) {
e->button() == Qt::LeftButtonDescription
TRUEnever evaluated
FALSEnever evaluated
(d->popupMode ...nuButtonPopup)Description
TRUEnever evaluated
FALSEnever evaluated
0
597 QRect popupr = style()->subControlRect(QStyle::CC_ToolButton, &opt,-
598 QStyle::SC_ToolButtonMenu, this);-
599 if (popupr.isValid() && popupr.contains(e->pos())) {
popupr.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
popupr.contains(e->pos())Description
TRUEnever evaluated
FALSEnever evaluated
0
600 d->buttonPressed = QToolButtonPrivate::MenuButtonPressed;-
601 showMenu();-
602 return;
never executed: return;
0
603 }-
604 }
never executed: end of block
0
605#endif-
606 d->buttonPressed = QToolButtonPrivate::ToolButtonPressed;-
607 QAbstractButton::mousePressEvent(e);-
608}
never executed: end of block
0
609-
610/*!-
611 \reimp-
612*/-
613void QToolButton::mouseReleaseEvent(QMouseEvent *e)-
614{-
615 Q_D(QToolButton);-
616 QAbstractButton::mouseReleaseEvent(e);-
617 d->buttonPressed = QToolButtonPrivate::NoButtonPressed;-
618}
never executed: end of block
0
619-
620/*!-
621 \reimp-
622*/-
623bool QToolButton::hitButton(const QPoint &pos) const-
624{-
625 Q_D(const QToolButton);-
626 if(QAbstractButton::hitButton(pos))
QAbstractButto...hitButton(pos)Description
TRUEnever evaluated
FALSEnever evaluated
0
627 return (d->buttonPressed != QToolButtonPrivate::MenuButtonPressed);
never executed: return (d->buttonPressed != QToolButtonPrivate::MenuButtonPressed);
0
628 return false;
never executed: return false;
0
629}-
630-
631-
632#ifndef QT_NO_MENU-
633/*!-
634 Associates the given \a menu with this tool button.-
635-
636 The menu will be shown according to the button's \l popupMode.-
637-
638 Ownership of the menu is not transferred to the tool button.-
639-
640 \sa menu()-
641*/-
642void QToolButton::setMenu(QMenu* menu)-
643{-
644 Q_D(QToolButton);-
645-
646 if (d->menuAction == (menu ? menu->menuAction() : 0))
d->menuAction ...uAction() : 0)Description
TRUEnever evaluated
FALSEnever evaluated
menuDescription
TRUEnever evaluated
FALSEnever evaluated
0
647 return;
never executed: return;
0
648-
649 if (d->menuAction)
d->menuActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
650 removeAction(d->menuAction);
never executed: removeAction(d->menuAction);
0
651-
652 if (menu) {
menuDescription
TRUEnever evaluated
FALSEnever evaluated
0
653 d->menuAction = menu->menuAction();-
654 addAction(d->menuAction);-
655 } else {
never executed: end of block
0
656 d->menuAction = 0;-
657 }
never executed: end of block
0
658-
659 // changing the menu set may change the size hint, so reset it-
660 d->sizeHint = QSize();-
661 updateGeometry();-
662 update();-
663}
never executed: end of block
0
664-
665/*!-
666 Returns the associated menu, or 0 if no menu has been defined.-
667-
668 \sa setMenu()-
669*/-
670QMenu* QToolButton::menu() const-
671{-
672 Q_D(const QToolButton);-
673 if (d->menuAction)
d->menuActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
674 return d->menuAction->menu();
never executed: return d->menuAction->menu();
0
675 return 0;
never executed: return 0;
0
676}-
677-
678/*!-
679 Shows (pops up) the associated popup menu. If there is no such-
680 menu, this function does nothing. This function does not return-
681 until the popup menu has been closed by the user.-
682*/-
683void QToolButton::showMenu()-
684{-
685 Q_D(QToolButton);-
686 if (!d->hasMenu()) {
!d->hasMenu()Description
TRUEnever evaluated
FALSEnever evaluated
0
687 d->menuButtonDown = false;-
688 return; // no menu to show
never executed: return;
0
689 }-
690 // prevent recursions spinning another event loop-
691 if (d->menuButtonDown)
d->menuButtonDownDescription
TRUEnever evaluated
FALSEnever evaluated
0
692 return;
never executed: return;
0
693-
694-
695 d->menuButtonDown = true;-
696 repaint();-
697 d->popupTimer.stop();-
698 d->popupTimerDone();-
699}
never executed: end of block
0
700-
701void QToolButtonPrivate::_q_buttonPressed()-
702{-
703 Q_Q(QToolButton);-
704 if (!hasMenu())
!hasMenu()Description
TRUEnever evaluated
FALSEnever evaluated
0
705 return; // no menu to show
never executed: return;
0
706 if (popupMode == QToolButton::MenuButtonPopup)
popupMode == Q...enuButtonPopupDescription
TRUEnever evaluated
FALSEnever evaluated
0
707 return;
never executed: return;
0
708 else if (delay > 0 && popupMode == QToolButton::DelayedPopup)
delay > 0Description
TRUEnever evaluated
FALSEnever evaluated
popupMode == Q...::DelayedPopupDescription
TRUEnever evaluated
FALSEnever evaluated
0
709 popupTimer.start(delay, q);
never executed: popupTimer.start(delay, q);
0
710 else if (delay == 0 || popupMode == QToolButton::InstantPopup)
delay == 0Description
TRUEnever evaluated
FALSEnever evaluated
popupMode == Q...::InstantPopupDescription
TRUEnever evaluated
FALSEnever evaluated
0
711 q->showMenu();
never executed: q->showMenu();
0
712}
never executed: end of block
0
713-
714void QToolButtonPrivate::_q_buttonReleased()-
715{-
716 popupTimer.stop();-
717}
never executed: end of block
0
718-
719void QToolButtonPrivate::popupTimerDone()-
720{-
721 Q_Q(QToolButton);-
722 popupTimer.stop();-
723 if (!menuButtonDown && !down)
!menuButtonDownDescription
TRUEnever evaluated
FALSEnever evaluated
!downDescription
TRUEnever evaluated
FALSEnever evaluated
0
724 return;
never executed: return;
0
725-
726 menuButtonDown = true;-
727 QPointer<QMenu> actualMenu;-
728 bool mustDeleteActualMenu = false;-
729 if(menuAction) {
menuActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
730 actualMenu = menuAction->menu();-
731 } else if (defaultAction && defaultAction->menu()) {
never executed: end of block
defaultActionDescription
TRUEnever evaluated
FALSEnever evaluated
defaultAction->menu()Description
TRUEnever evaluated
FALSEnever evaluated
0
732 actualMenu = defaultAction->menu();-
733 } else {
never executed: end of block
0
734 actualMenu = new QMenu(q);-
735 mustDeleteActualMenu = true;-
736 for(int i = 0; i < actions.size(); i++)
i < actions.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
737 actualMenu->addAction(actions.at(i));
never executed: actualMenu->addAction(actions.at(i));
0
738 }
never executed: end of block
0
739 repeat = q->autoRepeat();-
740 q->setAutoRepeat(false);-
741 bool horizontal = true;-
742#if !defined(QT_NO_TOOLBAR)-
743 QToolBar *tb = qobject_cast<QToolBar*>(parent);-
744 if (tb && tb->orientation() == Qt::Vertical)
tbDescription
TRUEnever evaluated
FALSEnever evaluated
tb->orientatio...= Qt::VerticalDescription
TRUEnever evaluated
FALSEnever evaluated
0
745 horizontal = false;
never executed: horizontal = false;
0
746#endif-
747 QPoint p;-
748 const QRect rect = q->rect(); // Find screen via point in case of QGraphicsProxyWidget.-
749 QRect screen = QApplication::desktop()->availableGeometry(q->mapToGlobal(rect.center()));-
750 QSize sh = ((QToolButton*)(QMenu*)actualMenu)->receivers(SIGNAL(aboutToShow()))? QSize() : actualMenu->sizeHint();
((QToolButton*...__ ":" "750"))Description
TRUEnever evaluated
FALSEnever evaluated
0
751 if (horizontal) {
horizontalDescription
TRUEnever evaluated
FALSEnever evaluated
0
752 if (q->isRightToLeft()) {
q->isRightToLeft()Description
TRUEnever evaluated
FALSEnever evaluated
0
753 if (q->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height()) {
q->mapToGlobal...creen.height()Description
TRUEnever evaluated
FALSEnever evaluated
0
754 p = q->mapToGlobal(rect.bottomRight());-
755 } else {
never executed: end of block
0
756 p = q->mapToGlobal(rect.topRight() - QPoint(0, sh.height()));-
757 }
never executed: end of block
0
758 p.rx() -= sh.width();-
759 } else {
never executed: end of block
0
760 if (q->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height()) {
q->mapToGlobal...creen.height()Description
TRUEnever evaluated
FALSEnever evaluated
0
761 p = q->mapToGlobal(rect.bottomLeft());-
762 } else {
never executed: end of block
0
763 p = q->mapToGlobal(rect.topLeft() - QPoint(0, sh.height()));-
764 }
never executed: end of block
0
765 }-
766 } else {-
767 if (q->isRightToLeft()) {
q->isRightToLeft()Description
TRUEnever evaluated
FALSEnever evaluated
0
768 if (q->mapToGlobal(QPoint(rect.left(), 0)).x() - sh.width() <= screen.x()) {
q->mapToGlobal... <= screen.x()Description
TRUEnever evaluated
FALSEnever evaluated
0
769 p = q->mapToGlobal(rect.topRight());-
770 } else {
never executed: end of block
0
771 p = q->mapToGlobal(rect.topLeft());-
772 p.rx() -= sh.width();-
773 }
never executed: end of block
0
774 } else {-
775 if (q->mapToGlobal(QPoint(rect.right(), 0)).x() + sh.width() <= screen.right()) {
q->mapToGlobal...screen.right()Description
TRUEnever evaluated
FALSEnever evaluated
0
776 p = q->mapToGlobal(rect.topRight());-
777 } else {
never executed: end of block
0
778 p = q->mapToGlobal(rect.topLeft() - QPoint(sh.width(), 0));-
779 }
never executed: end of block
0
780 }-
781 }-
782 p.rx() = qMax(screen.left(), qMin(p.x(), screen.right() - sh.width()));-
783 p.ry() += 1;-
784 QPointer<QToolButton> that = q;-
785 actualMenu->setNoReplayFor(q);-
786 if (!mustDeleteActualMenu) //only if action are not in this widget
!mustDeleteActualMenuDescription
TRUEnever evaluated
FALSEnever evaluated
0
787 QObject::connect(actualMenu, SIGNAL(triggered(QAction*)), q, SLOT(_q_menuTriggered(QAction*)));
never executed: QObject::connect(actualMenu, qFlagLocation("2""triggered(QAction*)" "\0" __FILE__ ":" "787"), q, qFlagLocation("1""_q_menuTriggered(QAction*)" "\0" __FILE__ ":" "787"));
0
788 QObject::connect(actualMenu, SIGNAL(aboutToHide()), q, SLOT(_q_updateButtonDown()));-
789 actualMenu->d_func()->causedPopup.widget = q;-
790 actualMenu->d_func()->causedPopup.action = defaultAction;-
791 actionsCopy = q->actions(); //(the list of action may be modified in slots)-
792 actualMenu->exec(p);-
793-
794 if (!that)
!thatDescription
TRUEnever evaluated
FALSEnever evaluated
0
795 return;
never executed: return;
0
796-
797 QObject::disconnect(actualMenu, SIGNAL(aboutToHide()), q, SLOT(_q_updateButtonDown()));-
798 if (mustDeleteActualMenu)
mustDeleteActualMenuDescription
TRUEnever evaluated
FALSEnever evaluated
0
799 delete actualMenu;
never executed: delete actualMenu;
0
800 else-
801 QObject::disconnect(actualMenu, SIGNAL(triggered(QAction*)), q, SLOT(_q_menuTriggered(QAction*)));
never executed: QObject::disconnect(actualMenu, qFlagLocation("2""triggered(QAction*)" "\0" __FILE__ ":" "801"), q, qFlagLocation("1""_q_menuTriggered(QAction*)" "\0" __FILE__ ":" "801"));
0
802-
803 actionsCopy.clear();-
804-
805 if (repeat)
repeatDescription
TRUEnever evaluated
FALSEnever evaluated
0
806 q->setAutoRepeat(true);
never executed: q->setAutoRepeat(true);
0
807}
never executed: end of block
0
808-
809void QToolButtonPrivate::_q_updateButtonDown()-
810{-
811 Q_Q(QToolButton);-
812 menuButtonDown = false;-
813 if (q->isDown())
q->isDown()Description
TRUEnever evaluated
FALSEnever evaluated
0
814 q->setDown(false);
never executed: q->setDown(false);
0
815 else-
816 q->repaint();
never executed: q->repaint();
0
817}-
818-
819void QToolButtonPrivate::_q_menuTriggered(QAction *action)-
820{-
821 Q_Q(QToolButton);-
822 if (action && !actionsCopy.contains(action))
actionDescription
TRUEnever evaluated
FALSEnever evaluated
!actionsCopy.contains(action)Description
TRUEnever evaluated
FALSEnever evaluated
0
823 emit q->triggered(action);
never executed: q->triggered(action);
0
824}
never executed: end of block
0
825#endif // QT_NO_MENU-
826-
827-
828#ifndef QT_NO_MENU-
829/*! \enum QToolButton::ToolButtonPopupMode-
830-
831 Describes how a menu should be popped up for tool buttons that has-
832 a menu set or contains a list of actions.-
833-
834 \value DelayedPopup After pressing and holding the tool button-
835 down for a certain amount of time (the timeout is style dependent,-
836 see QStyle::SH_ToolButton_PopupDelay), the menu is displayed. A-
837 typical application example is the "back" button in some web-
838 browsers's tool bars. If the user clicks it, the browser simply-
839 browses back to the previous page. If the user presses and holds-
840 the button down for a while, the tool button shows a menu-
841 containing the current history list-
842-
843 \value MenuButtonPopup In this mode the tool button displays a-
844 special arrow to indicate that a menu is present. The menu is-
845 displayed when the arrow part of the button is pressed.-
846-
847 \value InstantPopup The menu is displayed, without delay, when-
848 the tool button is pressed. In this mode, the button's own action-
849 is not triggered.-
850*/-
851-
852/*!-
853 \property QToolButton::popupMode-
854 \brief describes the way that popup menus are used with tool buttons-
855-
856 By default, this property is set to \l DelayedPopup.-
857*/-
858-
859void QToolButton::setPopupMode(ToolButtonPopupMode mode)-
860{-
861 Q_D(QToolButton);-
862 d->popupMode = mode;-
863}
never executed: end of block
0
864-
865QToolButton::ToolButtonPopupMode QToolButton::popupMode() const-
866{-
867 Q_D(const QToolButton);-
868 return d->popupMode;
never executed: return d->popupMode;
0
869}-
870#endif-
871-
872/*!-
873 \property QToolButton::autoRaise-
874 \brief whether auto-raising is enabled or not.-
875-
876 The default is disabled (i.e. false).-
877-
878 This property is currently ignored on \macos when using QMacStyle.-
879*/-
880void QToolButton::setAutoRaise(bool enable)-
881{-
882 Q_D(QToolButton);-
883 d->autoRaise = enable;-
884-
885 update();-
886}
never executed: end of block
0
887-
888bool QToolButton::autoRaise() const-
889{-
890 Q_D(const QToolButton);-
891 return d->autoRaise;
never executed: return d->autoRaise;
0
892}-
893-
894/*!-
895 Sets the default action to \a action.-
896-
897 If a tool button has a default action, the action defines the-
898 button's properties like text, icon, tool tip, etc.-
899 */-
900void QToolButton::setDefaultAction(QAction *action)-
901{-
902 Q_D(QToolButton);-
903#ifndef QT_NO_MENU-
904 bool hadMenu = false;-
905 hadMenu = d->hasMenu();-
906#endif-
907 d->defaultAction = action;-
908 if (!action)
!actionDescription
TRUEnever evaluated
FALSEnever evaluated
0
909 return;
never executed: return;
0
910 if (!actions().contains(action))
!actions().contains(action)Description
TRUEnever evaluated
FALSEnever evaluated
0
911 addAction(action);
never executed: addAction(action);
0
912 QString buttonText = action->iconText();-
913 // If iconText() is generated from text(), we need to escape any '&'s so they-
914 // don't turn into shortcuts-
915 if (QActionPrivate::get(action)->iconText.isEmpty())
QActionPrivate...Text.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
916 buttonText.replace(QLatin1String("&"), QLatin1String("&&"));
never executed: buttonText.replace(QLatin1String("&"), QLatin1String("&&"));
0
917 setText(buttonText);-
918 setIcon(action->icon());-
919#ifndef QT_NO_TOOLTIP-
920 setToolTip(action->toolTip());-
921#endif-
922#ifndef QT_NO_STATUSTIP-
923 setStatusTip(action->statusTip());-
924#endif-
925#ifndef QT_NO_WHATSTHIS-
926 setWhatsThis(action->whatsThis());-
927#endif-
928#ifndef QT_NO_MENU-
929 if (action->menu() && !hadMenu) {
action->menu()Description
TRUEnever evaluated
FALSEnever evaluated
!hadMenuDescription
TRUEnever evaluated
FALSEnever evaluated
0
930 // new 'default' popup mode defined introduced by tool bar. We-
931 // should have changed QToolButton's default instead. Do that-
932 // in 4.2.-
933 setPopupMode(QToolButton::MenuButtonPopup);-
934 }
never executed: end of block
0
935#endif-
936 setCheckable(action->isCheckable());-
937 setChecked(action->isChecked());-
938 setEnabled(action->isEnabled());-
939 if (action->d_func()->fontSet)
action->d_func()->fontSetDescription
TRUEnever evaluated
FALSEnever evaluated
0
940 setFont(action->font());
never executed: setFont(action->font());
0
941}
never executed: end of block
0
942-
943-
944/*!-
945 Returns the default action.-
946-
947 \sa setDefaultAction()-
948 */-
949QAction *QToolButton::defaultAction() const-
950{-
951 Q_D(const QToolButton);-
952 return d->defaultAction;
never executed: return d->defaultAction;
0
953}-
954-
955-
956-
957/*!-
958 \reimp-
959 */-
960void QToolButton::nextCheckState()-
961{-
962 Q_D(QToolButton);-
963 if (!d->defaultAction)
!d->defaultActionDescription
TRUEnever evaluated
FALSEnever evaluated
0
964 QAbstractButton::nextCheckState();
never executed: QAbstractButton::nextCheckState();
0
965 else-
966 d->defaultAction->trigger();
never executed: d->defaultAction->trigger();
0
967}-
968-
969/*! \reimp */-
970bool QToolButton::event(QEvent *event)-
971{-
972 switch(event->type()) {-
973 case QEvent::HoverEnter:
never executed: case QEvent::HoverEnter:
0
974 case QEvent::HoverLeave:
never executed: case QEvent::HoverLeave:
0
975 case QEvent::HoverMove:
never executed: case QEvent::HoverMove:
0
976 if (const QHoverEvent *he = static_cast<const QHoverEvent *>(event))
const QHoverEv...vent *>(event)Description
TRUEnever evaluated
FALSEnever evaluated
0
977 d_func()->updateHoverControl(he->pos());
never executed: d_func()->updateHoverControl(he->pos());
0
978 break;
never executed: break;
0
979 default:
never executed: default:
0
980 break;
never executed: break;
0
981 }-
982 return QAbstractButton::event(event);
never executed: return QAbstractButton::event(event);
0
983}-
984-
985QT_END_NAMESPACE-
986-
987#include "moc_qtoolbutton.cpp"-
988-
989#endif-
Source codeSwitch to Preprocessed file

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