summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@nokia.com>2010-11-25 15:46:46 (GMT)
committerPierre Rossi <pierre.rossi@nokia.com>2010-11-25 15:48:15 (GMT)
commit4ab5e3c6e2a7188d0b1f9ce57c461bb8f6d22cc9 (patch)
tree7b63749aa593b8978a6d522b2f932a61c3687e8d /src/gui
parent985832eaf110d3decb32e7f984429e09e6bd6271 (diff)
downloadQt-4ab5e3c6e2a7188d0b1f9ce57c461bb8f6d22cc9.zip
Qt-4ab5e3c6e2a7188d0b1f9ce57c461bb8f6d22cc9.tar.gz
Qt-4ab5e3c6e2a7188d0b1f9ce57c461bb8f6d22cc9.tar.bz2
Allow QDial to wrap value when wrapping property is set.
QDial's wrapping property allows for 360 degree revolutions when using the mouse. However whenever using the keyboard Up/Down/PageUp/PageDown keys the QDial's value will stop at the minimum and maximum values. This has been fixed to allow the bounds checker to account for the wrapping property. Merge-request: 2437 Reviewed-by: Pierre Rossi <pierre.rossi@nokia.com>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/widgets/qabstractslider_p.h2
-rw-r--r--src/gui/widgets/qdial.cpp15
2 files changed, 16 insertions, 1 deletions
diff --git a/src/gui/widgets/qabstractslider_p.h b/src/gui/widgets/qabstractslider_p.h
index 19d1fca..d044131 100644
--- a/src/gui/widgets/qabstractslider_p.h
+++ b/src/gui/widgets/qabstractslider_p.h
@@ -117,7 +117,7 @@ public:
;
}
- inline int bound(int val) const { return qMax(minimum, qMin(maximum, val)); }
+ virtual int bound(int val) const { return qMax(minimum, qMin(maximum, val)); }
inline int overflowSafeAdd(int add) const
{
int newValue = value + add;
diff --git a/src/gui/widgets/qdial.cpp b/src/gui/widgets/qdial.cpp
index a8d739f..bca5019 100644
--- a/src/gui/widgets/qdial.cpp
+++ b/src/gui/widgets/qdial.cpp
@@ -83,6 +83,7 @@ public:
int valueFromPoint(const QPoint &) const;
double angle(const QPoint &, const QPoint &) const;
void init();
+ virtual int bound(int val) const;
};
void QDialPrivate::init()
@@ -97,6 +98,20 @@ void QDialPrivate::init()
#endif
}
+int QDialPrivate::bound(int val) const
+{
+ if (wrapping) {
+ if ((val >= minimum) && (val <= maximum))
+ return val;
+ val = minimum + ((val - minimum) % (maximum - minimum));
+ if (val < minimum)
+ val += maximum - minimum;
+ return val;
+ } else {
+ return QAbstractSliderPrivate::bound(val);
+ }
+}
+
/*!
Initialize \a option with the values from this QDial. This method
is useful for subclasses when they need a QStyleOptionSlider, but don't want