bounds checks

BUG:240724

svn path=/trunk/KDE/kdelibs/; revision=1134602
This commit is contained in:
Aaron J. Seigo 2010-06-04 17:20:57 +00:00
parent 2729b466df
commit 89efdef96c

View File

@ -145,8 +145,7 @@ void Slider::paint(QPainter *painter,
style->drawComplexControl(QStyle::CC_Slider, &sliderOpt, painter, slider);
}
QRect handleRect =
style->subControlRect(QStyle::CC_Slider, &sliderOpt, QStyle::SC_SliderHandle, slider);
QRect handleRect = style->subControlRect(QStyle::CC_Slider, &sliderOpt, QStyle::SC_SliderHandle, slider);
QString handle;
if (sliderOpt.orientation == Qt::Horizontal) {
@ -157,6 +156,22 @@ void Slider::paint(QPainter *painter,
QRect elementRect = d->background->elementRect(handle).toRect();
elementRect.moveCenter(handleRect.center());
if (elementRect.right() > rect().right()) {
elementRect.moveRight(rect().right());
}
if (elementRect.left() < rect().left()) {
elementRect.moveLeft(rect().left());
}
if (elementRect.top() < rect().top()) {
elementRect.moveTop(rect().top());
}
if (elementRect.bottom() > rect().bottom()) {
elementRect.moveBottom(rect().bottom());
}
if (orientation() == Qt::Vertical) {
d->focusIndicator->setCustomPrefix("vertical-slider");
} else {
@ -164,7 +179,6 @@ void Slider::paint(QPainter *painter,
}
d->focusIndicator->setCustomGeometry(elementRect);
d->background->paint(painter, elementRect, handle);
}
void Slider::wheelEvent(QGraphicsSceneWheelEvent *event)