From 89efdef96cbf2f3937c030555cf47e568c90866a Mon Sep 17 00:00:00 2001 From: "Aaron J. Seigo" Date: Fri, 4 Jun 2010 17:20:57 +0000 Subject: [PATCH] bounds checks BUG:240724 svn path=/trunk/KDE/kdelibs/; revision=1134602 --- widgets/slider.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/widgets/slider.cpp b/widgets/slider.cpp index e96d8b26d..1b40d1450 100644 --- a/widgets/slider.cpp +++ b/widgets/slider.cpp @@ -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)