summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp7
-rw-r--r--src/widgets/widgets/qdatetimeedit_p.h6
-rw-r--r--src/widgets/widgets/qfocusframe.cpp2
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);