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 <thiago.macieira@intel.com>
bb10
Edward Welbourne 2022-08-03 16:24:05 +02:00
parent d1d43b231f
commit a46a426b43
2 changed files with 3 additions and 4 deletions

View File

@ -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);
}

View File

@ -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