From a46a426b43309c5585bcb8891dd77ac1ab92ff09 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 3 Aug 2022 16:24:05 +0200 Subject: [PATCH] Fix handling of invalid input to Q(Date|Time)Edit constructors Change to match how QDateTimeEdit()'s overloads taking a QDate or QTime work, substituting a default value in place of an invalid one. This fixes one surprising anomaly in a recently-extended test, so that it now only fails the way I expected. Task-number: QTBUG-105322 Change-Id: Ied4da6160b7efe70990f956798fb826b5b36d8bb Reviewed-by: Thiago Macieira --- src/widgets/widgets/qdatetimeedit.cpp | 4 ++-- .../auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index 5e61a87fd7..3c9d166dee 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -1597,7 +1597,7 @@ QTimeEdit::QTimeEdit(QWidget *parent) */ QTimeEdit::QTimeEdit(QTime time, QWidget *parent) - : QDateTimeEdit(time, QMetaType::QTime, parent) + : QDateTimeEdit(time.isValid() ? time : QDATETIMEEDIT_TIME_MIN, QMetaType::QTime, parent) { connect(this, &QTimeEdit::timeChanged, this, &QTimeEdit::userTimeChanged); } @@ -1667,7 +1667,7 @@ QDateEdit::QDateEdit(QWidget *parent) */ QDateEdit::QDateEdit(QDate date, QWidget *parent) - : QDateTimeEdit(date, QMetaType::QDate, parent) + : QDateTimeEdit(date.isValid() ? date : QDATETIMEEDIT_DATE_INITIAL, QMetaType::QDate, parent) { connect(this, &QDateEdit::dateChanged, this, &QDateEdit::userDateChanged); } diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index 48955bc8a0..1328e11f03 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -506,8 +506,7 @@ void tst_QDateTimeEdit::constructor_qdate() { QDateEdit dte(parameter); dte.show(); - QEXPECT_FAIL("normal", "QTBUG-105322: constructors use wrong spec", Continue); - QEXPECT_FAIL("invalid", "Constructor neglects default replacement of invalid", Continue); + QEXPECT_FAIL("", "QTBUG-105322: constructors use wrong spec", Continue); if (QByteArrayView(QTest::currentDataTag()) == "invalid") QCOMPARE(dte.date(), QDate(2000, 1, 1)); else