widgets/qpushbutton.cpp

Switch to Source codePreprocessed file
LineSource CodeCoverage
1 -
2 -
3 -
4 -
5 -
6 -
7 -
8 -
9 -
10 -
11QPushButton::QPushButton(QWidget *parent) -
12 : QAbstractButton(*new QPushButtonPrivate, parent) -
13{ -
14 QPushButtonPrivate * const d = d_func(); -
15 d->init(); -
16}
executed: }
Execution Count:501
501
17 -
18 -
19 -
20 -
21 -
22 -
23QPushButton::QPushButton(const QString &text, QWidget *parent) -
24 : QAbstractButton(*new QPushButtonPrivate, parent) -
25{ -
26 QPushButtonPrivate * const d = d_func(); -
27 setText(text); -
28 d->init(); -
29}
executed: }
Execution Count:949
949
30QPushButton::QPushButton(const QIcon& icon, const QString &text, QWidget *parent) -
31 : QAbstractButton(*new QPushButtonPrivate, parent) -
32{ -
33 QPushButtonPrivate * const d = d_func(); -
34 setText(text); -
35 setIcon(icon); -
36 d->init(); -
37}
never executed: }
0
38 -
39 -
40 -
41QPushButton::QPushButton(QPushButtonPrivate &dd, QWidget *parent) -
42 : QAbstractButton(dd, parent) -
43{ -
44 QPushButtonPrivate * const d = d_func(); -
45 d->init(); -
46}
executed: }
Execution Count:12
12
47 -
48 -
49 -
50 -
51QPushButton::~QPushButton() -
52{ -
53} -
54 -
55QDialog *QPushButtonPrivate::dialogParent() const -
56{ -
57 const QPushButton * const q = q_func(); -
58 const QWidget *p = q; -
59 while (p && !p->isWindow()) {
partially evaluated: p
TRUEFALSE
yes
Evaluation Count:18509
no
Evaluation Count:0
evaluated: !p->isWindow()
TRUEFALSE
yes
Evaluation Count:14804
yes
Evaluation Count:3705
0-18509
60 p = p->parentWidget(); -
61 if (const QDialog *dialog = qobject_cast<const QDialog *>(p))
evaluated: const QDialog *dialog = qobject_cast<const QDialog *>(p)
TRUEFALSE
yes
Evaluation Count:5322
yes
Evaluation Count:9482
5322-9482
62 return const_cast<QDialog *>(dialog);
executed: return const_cast<QDialog *>(dialog);
Execution Count:5322
5322
63 }
executed: }
Execution Count:9482
9482
64 return 0;
executed: return 0;
Execution Count:3705
3705
65} -
66void QPushButton::initStyleOption(QStyleOptionButton *option) const -
67{ -
68 if (!option)
partially evaluated: !option
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5294
0-5294
69 return;
never executed: return;
0
70 -
71 const QPushButtonPrivate * const d = d_func(); -
72 option->initFrom(this); -
73 option->features = QStyleOptionButton::None; -
74 if (d->flat)
partially evaluated: d->flat
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5294
0-5294
75 option->features |= QStyleOptionButton::Flat;
never executed: option->features |= QStyleOptionButton::Flat;
0
76 -
77 if (d->menu)
evaluated: d->menu
TRUEFALSE
yes
Evaluation Count:14
yes
Evaluation Count:5280
14-5280
78 option->features |= QStyleOptionButton::HasMenu;
executed: option->features |= QStyleOptionButton::HasMenu;
Execution Count:14
14
79 -
80 if (autoDefault())
evaluated: autoDefault()
TRUEFALSE
yes
Evaluation Count:2246
yes
Evaluation Count:3048
2246-3048
81 option->features |= QStyleOptionButton::AutoDefaultButton;
executed: option->features |= QStyleOptionButton::AutoDefaultButton;
Execution Count:2246
2246
82 if (d->defaultButton)
evaluated: d->defaultButton
TRUEFALSE
yes
Evaluation Count:322
yes
Evaluation Count:4972
322-4972
83 option->features |= QStyleOptionButton::DefaultButton;
executed: option->features |= QStyleOptionButton::DefaultButton;
Execution Count:322
322
84 if (d->down || d->menuOpen)
evaluated: d->down
TRUEFALSE
yes
Evaluation Count:67
yes
Evaluation Count:5227
partially evaluated: d->menuOpen
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5227
0-5227
85 option->state |= QStyle::State_Sunken;
executed: option->state |= QStyle::State_Sunken;
Execution Count:67
67
86 if (d->checked)
partially evaluated: d->checked
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5294
0-5294
87 option->state |= QStyle::State_On;
never executed: option->state |= QStyle::State_On;
0
88 if (!d->flat && !d->down)
partially evaluated: !d->flat
TRUEFALSE
yes
Evaluation Count:5294
no
Evaluation Count:0
evaluated: !d->down
TRUEFALSE
yes
Evaluation Count:5227
yes
Evaluation Count:67
0-5294
89 option->state |= QStyle::State_Raised;
executed: option->state |= QStyle::State_Raised;
Execution Count:5227
5227
90 option->text = d->text; -
91 option->icon = d->icon; -
92 option->iconSize = iconSize(); -
93}
executed: }
Execution Count:5294
5294
94 -
95void QPushButton::setAutoDefault(bool enable) -
96{ -
97 QPushButtonPrivate * const d = d_func(); -
98 uint state = enable ? QPushButtonPrivate::On : QPushButtonPrivate::Off;
evaluated: enable
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:9
4-9
99 if (d->autoDefault != QPushButtonPrivate::Auto && d->autoDefault == state)
evaluated: d->autoDefault != QPushButtonPrivate::Auto
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:11
partially evaluated: d->autoDefault == state
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-11
100 return;
never executed: return;
0
101 d->autoDefault = state; -
102 d->sizeHint = QSize(); -
103 update(); -
104 updateGeometry(); -
105}
executed: }
Execution Count:13
13
106 -
107bool QPushButton::autoDefault() const -
108{ -
109 const QPushButtonPrivate * const d = d_func(); -
110 if(d->autoDefault == QPushButtonPrivate::Auto)
evaluated: d->autoDefault == QPushButtonPrivate::Auto
TRUEFALSE
yes
Evaluation Count:8495
yes
Evaluation Count:122
122-8495
111 return ( d->dialogParent() != 0 );
executed: return ( d->dialogParent() != 0 );
Execution Count:8495
8495
112 return d->autoDefault;
executed: return d->autoDefault;
Execution Count:122
122
113} -
114 -
115void QPushButton::setDefault(bool enable) -
116{ -
117 QPushButtonPrivate * const d = d_func(); -
118 if (d->defaultButton == enable)
evaluated: d->defaultButton == enable
TRUEFALSE
yes
Evaluation Count:2580
yes
Evaluation Count:670
670-2580
119 return;
executed: return;
Execution Count:2580
2580
120 d->defaultButton = enable; -
121 if (d->defaultButton) {
evaluated: d->defaultButton
TRUEFALSE
yes
Evaluation Count:420
yes
Evaluation Count:250
250-420
122 if (QDialog *dlg = d->dialogParent())
evaluated: QDialog *dlg = d->dialogParent()
TRUEFALSE
yes
Evaluation Count:411
yes
Evaluation Count:9
9-411
123 dlg->d_func()->setMainDefault(this);
executed: dlg->d_func()->setMainDefault(this);
Execution Count:411
411
124 }
executed: }
Execution Count:420
420
125 update(); -
126 -
127 QAccessible::State s; -
128 s.defaultButton = true; -
129 QAccessibleStateChangeEvent event(this, s); -
130 QAccessible::updateAccessibility(&event); -
131 -
132}
executed: }
Execution Count:670
670
133 -
134bool QPushButton::isDefault() const -
135{ -
136 const QPushButtonPrivate * const d = d_func(); -
137 return d->defaultButton;
executed: return d->defaultButton;
Execution Count:346
346
138} -
139 -
140 -
141 -
142 -
143QSize QPushButton::sizeHint() const -
144{ -
145 const QPushButtonPrivate * const d = d_func(); -
146 if (d->sizeHint.isValid() && d->lastAutoDefault == autoDefault())
evaluated: d->sizeHint.isValid()
TRUEFALSE
yes
Evaluation Count:1969
yes
Evaluation Count:924
evaluated: d->lastAutoDefault == autoDefault()
TRUEFALSE
yes
Evaluation Count:1963
yes
Evaluation Count:6
6-1969
147 return d->sizeHint;
executed: return d->sizeHint;
Execution Count:1963
1963
148 d->lastAutoDefault = autoDefault(); -
149 ensurePolished(); -
150 -
151 int w = 0, h = 0; -
152 -
153 QStyleOptionButton opt; -
154 initStyleOption(&opt); -
155 -
156 -
157 -
158 -
159 bool showButtonBoxIcons = qobject_cast<QDialogButtonBox*>(parentWidget())
evaluated: qobject_cast<QDialogButtonBox*>(parentWidget())
TRUEFALSE
yes
Evaluation Count:454
yes
Evaluation Count:476
454-476
160 && style()->styleHint(QStyle::SH_DialogButtonBox_ButtonsHaveIcons);
partially evaluated: style()->styleHint(QStyle::SH_DialogButtonBox_ButtonsHaveIcons)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:454
0-454
161 -
162 if (!icon().isNull() || showButtonBoxIcons) {
evaluated: !icon().isNull()
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:917
partially evaluated: showButtonBoxIcons
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:917
0-917
163 int ih = opt.iconSize.height(); -
164 int iw = opt.iconSize.width() + 4; -
165 w += iw; -
166 h = qMax(h, ih); -
167 }
executed: }
Execution Count:13
13
168 -
169 QString s(text()); -
170 bool empty = s.isEmpty(); -
171 if (empty)
evaluated: empty
TRUEFALSE
yes
Evaluation Count:170
yes
Evaluation Count:760
170-760
172 s = QString::fromLatin1("XXXX");
executed: s = QString::fromLatin1("XXXX");
Execution Count:170
170
173 QFontMetrics fm = fontMetrics(); -
174 QSize sz = fm.size(Qt::TextShowMnemonic, s); -
175 if(!empty || !w)
evaluated: !empty
TRUEFALSE
yes
Evaluation Count:760
yes
Evaluation Count:170
evaluated: !w
TRUEFALSE
yes
Evaluation Count:159
yes
Evaluation Count:11
11-760
176 w += sz.width();
executed: w += sz.width();
Execution Count:919
919
177 if(!empty || !h)
evaluated: !empty
TRUEFALSE
yes
Evaluation Count:760
yes
Evaluation Count:170
evaluated: !h
TRUEFALSE
yes
Evaluation Count:159
yes
Evaluation Count:11
11-760
178 h = qMax(h, sz.height());
executed: h = qMax(h, sz.height());
Execution Count:919
919
179 opt.rect.setSize(QSize(w, h)); -
180 -
181 if (menu())
evaluated: menu()
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:926
4-926
182 w += style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, this);
executed: w += style()->pixelMetric(QStyle::PM_MenuButtonIndicator, &opt, this);
Execution Count:4
4
183 -
184 d->sizeHint = (style()->sizeFromContents(QStyle::CT_PushButton, &opt, QSize(w, h), this). -
185 expandedTo(QApplication::globalStrut())); -
186 return d->sizeHint;
executed: return d->sizeHint;
Execution Count:930
930
187} -
188 -
189 -
190 -
191 -
192QSize QPushButton::minimumSizeHint() const -
193{ -
194 return sizeHint();
executed: return sizeHint();
Execution Count:1357
1357
195} -
196 -
197 -
198 -
199 -
200void QPushButton::paintEvent(QPaintEvent *) -
201{ -
202 QStylePainter p(this); -
203 QStyleOptionButton option; -
204 initStyleOption(&option); -
205 p.drawControl(QStyle::CE_PushButton, option); -
206}
executed: }
Execution Count:721
721
207 -
208 -
209 -
210void QPushButton::keyPressEvent(QKeyEvent *e) -
211{ -
212 QPushButtonPrivate * const d = d_func(); -
213 switch (e->key()) { -
214 case Qt::Key_Enter: -
215 case Qt::Key_Return: -
216 if (autoDefault() || d->defaultButton) {
evaluated: autoDefault()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:6
partially evaluated: d->defaultButton
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6
0-6
217 click(); -
218 break;
executed: break;
Execution Count:2
2
219 } -
220 -
221 default:
code before this statement executed: default:
Execution Count:6
6
222 QAbstractButton::keyPressEvent(e); -
223 }
executed: }
Execution Count:20
20
224}
executed: }
Execution Count:22
22
225 -
226 -
227 -
228 -
229void QPushButton::focusInEvent(QFocusEvent *e) -
230{ -
231 QPushButtonPrivate * const d = d_func(); -
232 if (e->reason() != Qt::PopupFocusReason && autoDefault() && !d->defaultButton) {
evaluated: e->reason() != Qt::PopupFocusReason
TRUEFALSE
yes
Evaluation Count:221
yes
Evaluation Count:2
evaluated: autoDefault()
TRUEFALSE
yes
Evaluation Count:152
yes
Evaluation Count:69
evaluated: !d->defaultButton
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:140
2-221
233 d->defaultButton = true; -
234 QDialog *dlg = qobject_cast<QDialog*>(window()); -
235 if (dlg)
partially evaluated: dlg
TRUEFALSE
yes
Evaluation Count:12
no
Evaluation Count:0
0-12
236 dlg->d_func()->setDefault(this);
executed: dlg->d_func()->setDefault(this);
Execution Count:12
12
237 }
executed: }
Execution Count:12
12
238 QAbstractButton::focusInEvent(e); -
239}
executed: }
Execution Count:223
223
240 -
241 -
242 -
243 -
244void QPushButton::focusOutEvent(QFocusEvent *e) -
245{ -
246 QPushButtonPrivate * const d = d_func(); -
247 if (e->reason() != Qt::PopupFocusReason && autoDefault() && d->defaultButton) {
evaluated: e->reason() != Qt::PopupFocusReason
TRUEFALSE
yes
Evaluation Count:140
yes
Evaluation Count:3
evaluated: autoDefault()
TRUEFALSE
yes
Evaluation Count:77
yes
Evaluation Count:63
evaluated: d->defaultButton
TRUEFALSE
yes
Evaluation Count:74
yes
Evaluation Count:3
3-140
248 QDialog *dlg = qobject_cast<QDialog*>(window()); -
249 if (dlg)
partially evaluated: dlg
TRUEFALSE
yes
Evaluation Count:74
no
Evaluation Count:0
0-74
250 dlg->d_func()->setDefault(0);
executed: dlg->d_func()->setDefault(0);
Execution Count:74
74
251 else -
252 d->defaultButton = false;
never executed: d->defaultButton = false;
0
253 } -
254 -
255 QAbstractButton::focusOutEvent(e); -
256 -
257 if (d->menu && d->menu->isVisible())
partially evaluated: d->menu
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:143
never evaluated: d->menu->isVisible()
0-143
258 setDown(true);
never executed: setDown(true);
0
259 -
260}
executed: }
Execution Count:143
143
261void QPushButton::setMenu(QMenu* menu) -
262{ -
263 QPushButtonPrivate * const d = d_func(); -
264 if (menu == d->menu)
partially evaluated: menu == d->menu
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:8
0-8
265 return;
never executed: return;
0
266 -
267 if (menu && !d->menu) {
evaluated: menu
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:2
partially evaluated: !d->menu
TRUEFALSE
yes
Evaluation Count:6
no
Evaluation Count:0
0-6
268 connect(this, "2""pressed()", this, "1""_q_popupPressed()", Qt::UniqueConnection); -
269 }
executed: }
Execution Count:6
6
270 if (d->menu)
evaluated: d->menu
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:6
2-6
271 removeAction(d->menu->menuAction());
executed: removeAction(d->menu->menuAction());
Execution Count:2
2
272 d->menu = menu; -
273 if (d->menu)
evaluated: d->menu
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:2
2-6
274 addAction(d->menu->menuAction());
executed: addAction(d->menu->menuAction());
Execution Count:6
6
275 -
276 d->resetLayoutItemMargins(); -
277 d->sizeHint = QSize(); -
278 update(); -
279 updateGeometry(); -
280}
executed: }
Execution Count:8
8
281 -
282 -
283 -
284 -
285 -
286 -
287 -
288QMenu* QPushButton::menu() const -
289{ -
290 const QPushButtonPrivate * const d = d_func(); -
291 return d->menu;
executed: return d->menu;
Execution Count:951
951
292} -
293 -
294 -
295 -
296 -
297 -
298 -
299void QPushButton::showMenu() -
300{ -
301 QPushButtonPrivate * const d = d_func(); -
302 if (!d || !d->menu)
never evaluated: !d
never evaluated: !d->menu
0
303 return;
never executed: return;
0
304 setDown(true); -
305 d->_q_popupPressed(); -
306}
never executed: }
0
307 -
308void QPushButtonPrivate::_q_popupPressed() -
309{ -
310 QPushButton * const q = q_func(); -
311 if (!down || !menu)
partially evaluated: !down
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
partially evaluated: !menu
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
312 return;
never executed: return;
0
313 -
314 menu->setNoReplayFor(q); -
315 -
316 QPoint menuPos = adjustedMenuPosition(); -
317 -
318 QPointer<QPushButton> guard(q); -
319 QMenuPrivate::get(menu)->causedPopup.widget = guard; -
320 -
321 -
322 -
323 menuOpen = true; -
324 menu->exec(menuPos); -
325 if (guard) {
partially evaluated: guard
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
326 menuOpen = false; -
327 q->setDown(false); -
328 }
never executed: }
0
329}
executed: }
Execution Count:2
2
330 -
331QPoint QPushButtonPrivate::adjustedMenuPosition() -
332{ -
333 QPushButton * const q = q_func(); -
334 -
335 bool horizontal = true; -
336 -
337 QToolBar *tb = qobject_cast<QToolBar*>(parent); -
338 if (tb && tb->orientation() == Qt::Vertical)
partially evaluated: tb
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never evaluated: tb->orientation() == Qt::Vertical
0-2
339 horizontal = false;
never executed: horizontal = false;
0
340 -
341 -
342 QWidgetItem item(q); -
343 QRect rect = item.geometry(); -
344 rect.setRect(rect.x() - q->x(), rect.y() - q->y(), rect.width(), rect.height()); -
345 -
346 QSize menuSize = menu->sizeHint(); -
347 QPoint globalPos = q->mapToGlobal(rect.topLeft()); -
348 int x = globalPos.x(); -
349 int y = globalPos.y(); -
350 if (horizontal) {
partially evaluated: horizontal
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
351 if (globalPos.y() + rect.height() + menuSize.height() <= QApplication::desktop()->availableGeometry(q).height()) {
partially evaluated: globalPos.y() + rect.height() + menuSize.height() <= QApplication::desktop()->availableGeometry(q).height()
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
352 y += rect.height(); -
353 } else {
executed: }
Execution Count:2
2
354 y -= menuSize.height(); -
355 }
never executed: }
0
356 if (q->layoutDirection() == Qt::RightToLeft)
partially evaluated: q->layoutDirection() == Qt::RightToLeft
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
357 x += rect.width() - menuSize.width();
never executed: x += rect.width() - menuSize.width();
0
358 } else {
executed: }
Execution Count:2
2
359 if (globalPos.x() + rect.width() + menu->sizeHint().width() <= QApplication::desktop()->availableGeometry(q).width())
never evaluated: globalPos.x() + rect.width() + menu->sizeHint().width() <= QApplication::desktop()->availableGeometry(q).width()
0
360 x += rect.width();
never executed: x += rect.width();
0
361 else -
362 x -= menuSize.width();
never executed: x -= menuSize.width();
0
363 } -
364 -
365 return QPoint(x,y);
executed: return QPoint(x,y);
Execution Count:2
2
366} -
367 -
368 -
369 -
370void QPushButtonPrivate::resetLayoutItemMargins() -
371{ -
372 QPushButton * const q = q_func(); -
373 QStyleOptionButton opt; -
374 q->initStyleOption(&opt); -
375 setLayoutItemMargins(QStyle::SE_PushButtonLayoutItem, &opt); -
376}
executed: }
Execution Count:3586
3586
377 -
378void QPushButton::setFlat(bool flat) -
379{ -
380 QPushButtonPrivate * const d = d_func(); -
381 if (d->flat == flat)
never evaluated: d->flat == flat
0
382 return;
never executed: return;
0
383 d->flat = flat; -
384 d->resetLayoutItemMargins(); -
385 d->sizeHint = QSize(); -
386 update(); -
387 updateGeometry(); -
388}
never executed: }
0
389 -
390bool QPushButton::isFlat() const -
391{ -
392 const QPushButtonPrivate * const d = d_func(); -
393 return d->flat;
never executed: return d->flat;
0
394} -
395 -
396 -
397bool QPushButton::event(QEvent *e) -
398{ -
399 QPushButtonPrivate * const d = d_func(); -
400 if (e->type() == QEvent::ParentChange) {
evaluated: e->type() == QEvent::ParentChange
TRUEFALSE
yes
Evaluation Count:112
yes
Evaluation Count:16740
112-16740
401 if (QDialog *dialog = d->dialogParent()) {
evaluated: QDialog *dialog = d->dialogParent()
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:84
28-84
402 if (d->defaultButton)
evaluated: d->defaultButton
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:24
4-24
403 dialog->d_func()->setMainDefault(this);
executed: dialog->d_func()->setMainDefault(this);
Execution Count:4
4
404 }
executed: }
Execution Count:28
28
405 } else if (e->type() == QEvent::StyleChange
evaluated: e->type() == QEvent::StyleChange
TRUEFALSE
yes
Evaluation Count:2104
yes
Evaluation Count:14636
executed: }
Execution Count:112
112-14636
406 -
407 -
408 -
409 ) { -
410 d->resetLayoutItemMargins(); -
411 updateGeometry(); -
412 } else if (e->type() == QEvent::PolishRequest) {
executed: }
Execution Count:2104
evaluated: e->type() == QEvent::PolishRequest
TRUEFALSE
yes
Evaluation Count:564
yes
Evaluation Count:14072
564-14072
413 updateGeometry(); -
414 }
executed: }
Execution Count:564
564
415 return QAbstractButton::event(e);
executed: return QAbstractButton::event(e);
Execution Count:16852
16852
416} -
417 -
418 -
419 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial