summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp7
-rw-r--r--src/widgets/widgets/qdatetimeedit_p.h6
2 files changed, 13 insertions, 0 deletions
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index d145985c1d..deb4dc36ba 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -1976,7 +1976,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 323246a87b..7df2b59710 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;
};