qslider.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qslider.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7class QSliderPrivate : public QAbstractSliderPrivate-
8{-
9 inline QSlider* q_func() { return static_cast<QSlider *>(q_ptr); } inline const QSlider* q_func() const { return static_cast<const QSlider *>(q_ptr); } friend class QSlider;-
10public:-
11 QStyle::SubControl pressedControl;-
12 int tickInterval;-
13 QSlider::TickPosition tickPosition;-
14 int clickOffset;-
15 void init();-
16 void resetLayoutItemMargins();-
17 int pixelPosToRangeValue(int pos) const;-
18 inline int pick(const QPoint &pt) const;-
19-
20 QStyle::SubControl newHoverControl(const QPoint &pos);-
21 bool updateHoverControl(const QPoint &pos);-
22 QStyle::SubControl hoverControl;-
23 QRect hoverRect;-
24};-
25-
26void QSliderPrivate::init()-
27{-
28 QSlider * const q = q_func();-
29 pressedControl = QStyle::SC_None;-
30 tickInterval = 0;-
31 tickPosition = QSlider::NoTicks;-
32 hoverControl = QStyle::SC_None;-
33 q->setFocusPolicy(Qt::FocusPolicy(q->style()->styleHint(QStyle::SH_Button_FocusPolicy)));-
34 QSizePolicy sp(QSizePolicy::Expanding, QSizePolicy::Fixed, QSizePolicy::Slider);-
35 if (orientation == Qt::Vertical
orientation == Qt::VerticalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
36 sp.transpose();
never executed: sp.transpose();
0
37 q->setSizePolicy(sp);-
38 q->setAttribute(Qt::WA_WState_OwnSizePolicy, false);-
39 resetLayoutItemMargins();-
40}
never executed: end of block
0
41-
42void QSliderPrivate::resetLayoutItemMargins()-
43{-
44 QSlider * const q = q_func();-
45 QStyleOptionSlider opt;-
46 q->initStyleOption(&opt);-
47 setLayoutItemMargins(QStyle::SE_SliderLayoutItem, &opt);-
48}
never executed: end of block
0
49-
50int QSliderPrivate::pixelPosToRangeValue(int pos) const-
51{-
52 const QSlider * const q = q_func();-
53 QStyleOptionSlider opt;-
54 q->initStyleOption(&opt);-
55 QRect gr = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, q);-
56 QRect sr = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, q);-
57 int sliderMin, sliderMax, sliderLength;-
58-
59 if (orientation == Qt::Horizontal
orientation == Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
60 sliderLength = sr.width();-
61 sliderMin = gr.x();-
62 sliderMax = gr.right() - sliderLength + 1;-
63 }
never executed: end of block
else {
0
64 sliderLength = sr.height();-
65 sliderMin = gr.y();-
66 sliderMax = gr.bottom() - sliderLength + 1;-
67 }
never executed: end of block
0
68 return
never executed: return QStyle::sliderValueFromPosition(minimum, maximum, pos - sliderMin, sliderMax - sliderMin, opt.upsideDown);
QStyle::sliderValueFromPosition(minimum, maximum, pos - sliderMin,
never executed: return QStyle::sliderValueFromPosition(minimum, maximum, pos - sliderMin, sliderMax - sliderMin, opt.upsideDown);
0
69 sliderMax - sliderMin, opt.upsideDown);
never executed: return QStyle::sliderValueFromPosition(minimum, maximum, pos - sliderMin, sliderMax - sliderMin, opt.upsideDown);
0
70}-
71-
72inline int QSliderPrivate::pick(const QPoint &pt) const-
73{-
74 return
never executed: return orientation == Qt::Horizontal ? pt.x() : pt.y();
orientation == Qt::Horizontal ? pt.x() : pt.y();
never executed: return orientation == Qt::Horizontal ? pt.x() : pt.y();
0
75}-
76void QSlider::initStyleOption(QStyleOptionSlider *option) const-
77{-
78 if (!option
!optionDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
79 return;
never executed: return;
0
80-
81 const QSliderPrivate * const d = d_func();-
82 option->initFrom(this);-
83 option->subControls = QStyle::SC_None;-
84 option->activeSubControls = QStyle::SC_None;-
85 option->orientation = d->orientation;-
86 option->maximum = d->maximum;-
87 option->minimum = d->minimum;-
88 option->tickPosition = (QSlider::TickPosition)d->tickPosition;-
89 option->tickInterval = d->tickInterval;-
90 option->upsideDown = (
(d->orientatio...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
d->orientation == Qt::Horizontal)
(d->orientatio...t::Horizontal)Description
TRUEnever evaluated
FALSEnever evaluated
?
0
91 (d->invertedAppearance != (option->direction == Qt::RightToLeft))-
92 : (!d->invertedAppearance);-
93 option->direction = Qt::LeftToRight;-
94 option->sliderPosition = d->position;-
95 option->sliderValue = d->value;-
96 option->singleStep = d->singleStep;-
97 option->pageStep = d->pageStep;-
98 if (d->orientation == Qt::Horizontal
d->orientation...Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
99 option->state |= QStyle::State_Horizontal;
never executed: option->state |= QStyle::State_Horizontal;
0
100}
never executed: end of block
0
101-
102bool QSliderPrivate::updateHoverControl(const QPoint &pos)-
103{-
104 QSlider * const q = q_func();-
105 QRect lastHoverRect = hoverRect;-
106 QStyle::SubControl lastHoverControl = hoverControl;-
107 bool doesHover = q->testAttribute(Qt::WA_Hover);-
108 if (lastHoverControl != newHoverControl(pos)
lastHoverContr...erControl(pos)Description
TRUEnever evaluated
FALSEnever evaluated
&& doesHover
doesHoverDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
109 q->update(lastHoverRect);-
110 q->update(hoverRect);-
111 return
never executed: return true;
true;
never executed: return true;
0
112 }-
113 return
never executed: return !doesHover;
!doesHover;
never executed: return !doesHover;
0
114}-
115-
116QStyle::SubControl QSliderPrivate::newHoverControl(const QPoint &pos)-
117{-
118 QSlider * const q = q_func();-
119 QStyleOptionSlider opt;-
120 q->initStyleOption(&opt);-
121 opt.subControls = QStyle::SC_All;-
122 QRect handleRect = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, q);-
123 QRect grooveRect = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderGroove, q);-
124 QRect tickmarksRect = q->style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderTickmarks, q);-
125-
126 if (handleRect.contains(pos)
handleRect.contains(pos)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
127 hoverRect = handleRect;-
128 hoverControl = QStyle::SC_SliderHandle;-
129 }
never executed: end of block
else if (grooveRect.contains(pos)
grooveRect.contains(pos)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
130 hoverRect = grooveRect;-
131 hoverControl = QStyle::SC_SliderGroove;-
132 }
never executed: end of block
else if (tickmarksRect.contains(pos)
tickmarksRect.contains(pos)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
133 hoverRect = tickmarksRect;-
134 hoverControl = QStyle::SC_SliderTickmarks;-
135 }
never executed: end of block
else {
0
136 hoverRect = QRect();-
137 hoverControl = QStyle::SC_None;-
138 }
never executed: end of block
0
139-
140 return
never executed: return hoverControl;
hoverControl;
never executed: return hoverControl;
0
141}-
142QSlider::QSlider(QWidget *parent)-
143 : QAbstractSlider(*new QSliderPrivate, parent)-
144{-
145 d_func()->orientation = Qt::Vertical;-
146 d_func()->init();-
147}
never executed: end of block
0
148-
149-
150-
151-
152-
153-
154-
155QSlider::QSlider(Qt::Orientation orientation, QWidget *parent)-
156 : QAbstractSlider(*new QSliderPrivate, parent)-
157{-
158 d_func()->orientation = orientation;-
159 d_func()->init();-
160}
never executed: end of block
0
161-
162-
163-
164-
165-
166QSlider::~QSlider()-
167{-
168}-
169-
170-
171-
172-
173void QSlider::paintEvent(QPaintEvent *)-
174{-
175 QSliderPrivate * const d = d_func();-
176 QPainter p(this);-
177 QStyleOptionSlider opt;-
178 initStyleOption(&opt);-
179-
180 opt.subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle;-
181 if (d->tickPosition != NoTicks
d->tickPosition != NoTicksDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
182 opt.subControls |= QStyle::SC_SliderTickmarks;
never executed: opt.subControls |= QStyle::SC_SliderTickmarks;
0
183 if (d->pressedControl
d->pressedControlDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
184 opt.activeSubControls = d->pressedControl;-
185 opt.state |= QStyle::State_Sunken;-
186 }
never executed: end of block
else {
0
187 opt.activeSubControls = d->hoverControl;-
188 }
never executed: end of block
0
189-
190 style()->drawComplexControl(QStyle::CC_Slider, &opt, &p, this);-
191}
never executed: end of block
0
192-
193-
194-
195-
196-
197bool QSlider::event(QEvent *event)-
198{-
199 QSliderPrivate * const d = d_func();-
200-
201 switch(event->type()) {-
202 case
never executed: case QEvent::HoverEnter:
QEvent::HoverEnter:
never executed: case QEvent::HoverEnter:
0
203 case
never executed: case QEvent::HoverLeave:
QEvent::HoverLeave:
never executed: case QEvent::HoverLeave:
0
204 case
never executed: case QEvent::HoverMove:
QEvent::HoverMove:
never executed: case QEvent::HoverMove:
0
205 if (const
const QHoverEv...vent *>(event)Description
TRUEnever evaluated
FALSEnever evaluated
QHoverEvent *he = static_cast<const QHoverEvent *>(event)
const QHoverEv...vent *>(event)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
206 d->updateHoverControl(he->pos());
never executed: d->updateHoverControl(he->pos());
0
207 break;
never executed: break;
0
208 case
never executed: case QEvent::StyleChange:
QEvent::StyleChange:
never executed: case QEvent::StyleChange:
0
209 case
never executed: case QEvent::MacSizeChange:
QEvent::MacSizeChange:
never executed: case QEvent::MacSizeChange:
0
210 d->resetLayoutItemMargins();-
211 break;
never executed: break;
0
212 default
never executed: default:
:
never executed: default:
0
213 break;
never executed: break;
0
214 }-
215 return
never executed: return QAbstractSlider::event(event);
QAbstractSlider::event(event);
never executed: return QAbstractSlider::event(event);
0
216}-
217-
218-
219-
220-
221void QSlider::mousePressEvent(QMouseEvent *ev)-
222{-
223 QSliderPrivate * const d = d_func();-
224 if (d->maximum == d->minimum
d->maximum == d->minimumDescription
TRUEnever evaluated
FALSEnever evaluated
|| (
(ev->buttons() ^ ev->button())Description
TRUEnever evaluated
FALSEnever evaluated
ev->buttons() ^ ev->button())
(ev->buttons() ^ ev->button())Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
225 ev->ignore();-
226 return;
never executed: return;
0
227 }-
228-
229-
230-
231-
232 ev->accept();-
233 if ((
(ev->button() ...= ev->button()Description
TRUEnever evaluated
FALSEnever evaluated
ev->button() & style()->styleHint(QStyle::SH_Slider_AbsoluteSetButtons)) == ev->button()
(ev->button() ...= ev->button()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
234 QStyleOptionSlider opt;-
235 initStyleOption(&opt);-
236 const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);-
237 const QPoint center = sliderRect.center() - sliderRect.topLeft();-
238-
239-
240 setSliderPosition(d->pixelPosToRangeValue(d->pick(ev->pos() - center)));-
241 triggerAction(SliderMove);-
242 setRepeatAction(SliderNoAction);-
243 d->pressedControl = QStyle::SC_SliderHandle;-
244 update();-
245 }
never executed: end of block
else if ((
(ev->button() ...= ev->button()Description
TRUEnever evaluated
FALSEnever evaluated
ev->button() & style()->styleHint(QStyle::SH_Slider_PageSetButtons)) == ev->button()
(ev->button() ...= ev->button()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
246 QStyleOptionSlider opt;-
247 initStyleOption(&opt);-
248 d->pressedControl = style()->hitTestComplexControl(QStyle::CC_Slider,-
249 &opt, ev->pos(), this);-
250 SliderAction action = SliderNoAction;-
251 if (d->pressedControl == QStyle::SC_SliderGroove
d->pressedCont...C_SliderGrooveDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
252 const QRect sliderRect = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);-
253 int pressValue = d->pixelPosToRangeValue(d->pick(ev->pos() - sliderRect.center() + sliderRect.topLeft()));-
254 d->pressValue = pressValue;-
255 if (pressValue > d->value
pressValue > d->valueDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
256 action = SliderPageStepAdd;
never executed: action = SliderPageStepAdd;
0
257 else if (pressValue < d->value
pressValue < d->valueDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
258 action = SliderPageStepSub;
never executed: action = SliderPageStepSub;
0
259 if (action
actionDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
260 triggerAction(action);-
261 setRepeatAction(action);-
262 }
never executed: end of block
0
263 }
never executed: end of block
0
264 }
never executed: end of block
else {
0
265 ev->ignore();-
266 return;
never executed: return;
0
267 }-
268-
269 if (d->pressedControl == QStyle::SC_SliderHandle
d->pressedCont...C_SliderHandleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
270 QStyleOptionSlider opt;-
271 initStyleOption(&opt);-
272 setRepeatAction(SliderNoAction);-
273 QRect sr = style()->subControlRect(QStyle::CC_Slider, &opt, QStyle::SC_SliderHandle, this);-
274 d->clickOffset = d->pick(ev->pos() - sr.topLeft());-
275 update(sr);-
276 setSliderDown(true);-
277 }
never executed: end of block
0
278}
never executed: end of block
0
279-
280-
281-
282-
283void QSlider::mouseMoveEvent(QMouseEvent *ev)-
284{-
285 QSliderPrivate * const d = d_func();-
286 if (d->pressedControl != QStyle::SC_SliderHandle
d->pressedCont...C_SliderHandleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
287 ev->ignore();-
288 return;
never executed: return;
0
289 }-
290 ev->accept();-
291 int newPosition = d->pixelPosToRangeValue(d->pick(ev->pos()) - d->clickOffset);-
292 QStyleOptionSlider opt;-
293 initStyleOption(&opt);-
294 setSliderPosition(newPosition);-
295}
never executed: end of block
0
296-
297-
298-
299-
300-
301void QSlider::mouseReleaseEvent(QMouseEvent *ev)-
302{-
303 QSliderPrivate * const d = d_func();-
304 if (d->pressedControl == QStyle::SC_None
d->pressedCont...Style::SC_NoneDescription
TRUEnever evaluated
FALSEnever evaluated
|| ev->buttons()
ev->buttons()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
305 ev->ignore();-
306 return;
never executed: return;
0
307 }-
308 ev->accept();-
309 QStyle::SubControl oldPressed = QStyle::SubControl(d->pressedControl);-
310 d->pressedControl = QStyle::SC_None;-
311 setRepeatAction(SliderNoAction);-
312 if (oldPressed == QStyle::SC_SliderHandle
oldPressed == ...C_SliderHandleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
313 setSliderDown(false);
never executed: setSliderDown(false);
0
314 QStyleOptionSlider opt;-
315 initStyleOption(&opt);-
316 opt.subControls = oldPressed;-
317 update(style()->subControlRect(QStyle::CC_Slider, &opt, oldPressed, this));-
318}
never executed: end of block
0
319-
320-
321-
322-
323QSize QSlider::sizeHint() const-
324{-
325 const QSliderPrivate * const d = d_func();-
326 ensurePolished();-
327 const int SliderLength = 84, TickSpace = 5;-
328 QStyleOptionSlider opt;-
329 initStyleOption(&opt);-
330 int thick = style()->pixelMetric(QStyle::PM_SliderThickness, &opt, this);-
331 if (d->tickPosition & TicksAbove
d->tickPosition & TicksAboveDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
332 thick += TickSpace;
never executed: thick += TickSpace;
0
333 if (d->tickPosition & TicksBelow
d->tickPosition & TicksBelowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
334 thick += TickSpace;
never executed: thick += TickSpace;
0
335 int w = thick, h = SliderLength;-
336 if (d->orientation == Qt::Horizontal
d->orientation...Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
337 w = SliderLength;-
338 h = thick;-
339 }
never executed: end of block
0
340 return
never executed: return style()->sizeFromContents(QStyle::CT_Slider, &opt, QSize(w, h), this).expandedTo(QApplication::globalStrut());
style()->sizeFromContents(QStyle::CT_Slider, &opt, QSize(w, h), this).expandedTo(QApplication::globalStrut());
never executed: return style()->sizeFromContents(QStyle::CT_Slider, &opt, QSize(w, h), this).expandedTo(QApplication::globalStrut());
0
341}-
342-
343-
344-
345-
346QSize QSlider::minimumSizeHint() const-
347{-
348 const QSliderPrivate * const d = d_func();-
349 QSize s = sizeHint();-
350 QStyleOptionSlider opt;-
351 initStyleOption(&opt);-
352 int length = style()->pixelMetric(QStyle::PM_SliderLength, &opt, this);-
353 if (d->orientation == Qt::Horizontal
d->orientation...Qt::HorizontalDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
354 s.setWidth(length);
never executed: s.setWidth(length);
0
355 else-
356 s.setHeight(length);
never executed: s.setHeight(length);
0
357 return
never executed: return s;
s;
never executed: return s;
0
358}-
359void QSlider::setTickPosition(TickPosition position)-
360{-
361 QSliderPrivate * const d = d_func();-
362 d->tickPosition = position;-
363 d->resetLayoutItemMargins();-
364 update();-
365 updateGeometry();-
366}
never executed: end of block
0
367-
368QSlider::TickPosition QSlider::tickPosition() const-
369{-
370 return
never executed: return d_func()->tickPosition;
d_func()->tickPosition;
never executed: return d_func()->tickPosition;
0
371}-
372void QSlider::setTickInterval(int ts)-
373{-
374 d_func()->tickInterval = qMax(0, ts);-
375 update();-
376}
never executed: end of block
0
377-
378int QSlider::tickInterval() const-
379{-
380 return
never executed: return d_func()->tickInterval;
d_func()->tickInterval;
never executed: return d_func()->tickInterval;
0
381}-
382-
383__attribute__((visibility("default"))) QStyleOptionSlider qt_qsliderStyleOption(QSlider *slider)-
384{-
385 QStyleOptionSlider sliderOption;-
386 slider->initStyleOption(&sliderOption);-
387 return
never executed: return sliderOption;
sliderOption;
never executed: return sliderOption;
0
388}-
389-
390-
391-
392-
393-
Switch to Source codePreprocessed file

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