diff options
Diffstat (limited to 'src/controls/Private/qquickrangeddate.cpp')
-rw-r--r-- | src/controls/Private/qquickrangeddate.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/controls/Private/qquickrangeddate.cpp b/src/controls/Private/qquickrangeddate.cpp index df7958ac..67b80e35 100644 --- a/src/controls/Private/qquickrangeddate.cpp +++ b/src/controls/Private/qquickrangeddate.cpp @@ -42,8 +42,8 @@ QT_BEGIN_NAMESPACE // JavaScript Date > QDate conversion is not correct for large negative dates. -Q_GLOBAL_STATIC_WITH_ARGS(const QDateTime, jsMinimumDate, (QDateTime(QDate(1, 1, 1), QTime()))) -Q_GLOBAL_STATIC_WITH_ARGS(const QDateTime, jsMaximumDate, (QDateTime(QDate(275759, 10, 25), QTime()))) +Q_GLOBAL_STATIC_WITH_ARGS(const QDate, jsMinimumDate, (1, 1, 1)) +Q_GLOBAL_STATIC_WITH_ARGS(const QDate, jsMaximumDate, (275759, 10, 25)) QQuickRangedDate1::QQuickRangedDate1() : QObject(0), @@ -61,10 +61,11 @@ void QQuickRangedDate1::setDate(const QDateTime &date) if (date == mDate) return; - if (date < mMinimumDate) { - mDate = mMinimumDate; - } else if (date > mMaximumDate) { - mDate = mMaximumDate; + const QDate tmpDate = date.date(); + if (tmpDate < mMinimumDate) { + mDate = minimumDate(); + } else if (tmpDate > mMaximumDate) { + mDate = maximumDate(); } else { mDate = date; } @@ -75,17 +76,18 @@ void QQuickRangedDate1::setDate(const QDateTime &date) /*! \internal \qmlproperty date QQuickRangedDate::minimumDate */ -void QQuickRangedDate1::setMinimumDate(const QDateTime &minimumDate) +void QQuickRangedDate1::setMinimumDate(const QDateTime &minDate) { - if (minimumDate == mMinimumDate) + const QDate tmpDate = minDate.date(); + if (tmpDate == mMinimumDate) return; - mMinimumDate = qMax(minimumDate, *jsMinimumDate); + mMinimumDate = qMax(tmpDate, *jsMinimumDate); emit minimumDateChanged(); // If the new minimumDate makes date invalid, clamp date to it. - if (mDate < mMinimumDate) { - mDate = mMinimumDate; + if (mDate < minimumDate()) { + mDate = minimumDate(); emit dateChanged(); } } @@ -93,19 +95,20 @@ void QQuickRangedDate1::setMinimumDate(const QDateTime &minimumDate) /*! \internal \qmlproperty date QQuickRangedDate::maximumDate */ -void QQuickRangedDate1::setMaximumDate(const QDateTime &maximumDate) +void QQuickRangedDate1::setMaximumDate(const QDateTime &maxDate) { - if (maximumDate == mMaximumDate) + const QDate tmpDate = maxDate.date(); + if (tmpDate == mMaximumDate) return; // If the new maximumDate is smaller than minimumDate, clamp maximumDate to it. // If the new maximumDate is larger than jsMaximumDate, also clamp it. - mMaximumDate = maximumDate < mMinimumDate ? mMinimumDate : qMin(maximumDate, *jsMaximumDate); + mMaximumDate = tmpDate < mMinimumDate ? mMinimumDate : qMin(tmpDate, *jsMaximumDate); emit maximumDateChanged(); // If the new maximumDate makes the date invalid, clamp it. - if (mDate > mMaximumDate) { - mDate = mMaximumDate; + if (mDate > maximumDate()) { + mDate = maximumDate(); emit dateChanged(); } } |