diff options
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qdatetimeedit.cpp | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit_p.h | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qfocusframe.cpp | 2 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index f1db87f414..aa19270af5 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -2000,7 +2000,14 @@ QDateTime QDateTimeEditPrivate::validateAndInterpret(QString &input, int &positi return minimum.toDateTime(); } } + StateNode tmp = parse(input, position, value.toDateTime(), fixup); + // Impose this widget's spec: + tmp.value = tmp.value.toTimeSpec(spec); + // ... but that might turn a valid datetime into an invalid one: + if (!tmp.value.isValid() && tmp.state == Acceptable) + tmp.state = Intermediate; + input = tmp.input; position += tmp.padded; state = QValidator::State(int(tmp.state)); diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h index ac9bd4401a..dd0f6b251c 100644 --- a/src/widgets/widgets/qdatetimeedit_p.h +++ b/src/widgets/widgets/qdatetimeedit_p.h @@ -98,12 +98,16 @@ public: { if (keyboardTracking) return minimum.toDateTime(); + if (spec != Qt::LocalTime) + return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec)); return QDateTimeParser::getMinimum(); } QDateTime getMaximum() const override { if (keyboardTracking) return maximum.toDateTime(); + if (spec != Qt::LocalTime) + return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec)); return QDateTimeParser::getMaximum(); } QLocale locale() const override { return q_func()->locale(); } @@ -148,6 +152,8 @@ public: #ifdef QT_KEYPAD_NAVIGATION bool focusOnButton; #endif + + Qt::TimeSpec spec = Qt::LocalTime; }; diff --git a/src/widgets/widgets/qfocusframe.cpp b/src/widgets/widgets/qfocusframe.cpp index 4e793d7a29..aa9de7c35f 100644 --- a/src/widgets/widgets/qfocusframe.cpp +++ b/src/widgets/widgets/qfocusframe.cpp @@ -99,6 +99,8 @@ void QFocusFramePrivate::updateSize() return; q->setGeometry(geom); + + opt.rect = q->rect(); QStyleHintReturnMask mask; if (q->style()->styleHint(QStyle::SH_FocusFrame_Mask, &opt, q, &mask)) q->setMask(mask.region); |