diff options
| author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2023-09-19 17:04:20 +0200 |
|---|---|---|
| committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2023-09-21 15:16:18 +0200 |
| commit | 62126f6581a8bfcac35f92d52312044219752f33 (patch) | |
| tree | a4619a183ae9b283194dec22802e7a2be49bead6 /src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp | |
| parent | 9184766ea929de23099da73366d99652c01a724f (diff) | |
Fix accept button enabled state in non-native file dialog
When editing save file name in the line edit, and changing it from
empty to non-empty or the other way around, the accept (Save) button
would not be enabled/disabled accordingly.
Can be tested with the qml file from the linked task.
Task-number: QTBUG-101552
Task-number: QTBUG-108455
Pick-to: 6.6
Change-Id: Icc0ea5f68cfe06e95f54839cf4bd930bd8d57daf
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Diffstat (limited to 'src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp')
| -rw-r--r-- | src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp index 0df2ad6d2c..bcde63e7ff 100644 --- a/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp +++ b/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp @@ -575,7 +575,17 @@ void QQuickFileDialogImplAttachedPrivate::fileDialogListViewCurrentIndexChanged( } } -void QQuickFileDialogImplAttachedPrivate::fileNameChangedByUser() +void QQuickFileDialogImplAttachedPrivate::fileNameEditedByUser() +{ + if (!buttonBox) + return; + auto openButton = buttonBox->standardButton(QPlatformDialogHelper::Open); + if (!openButton || !fileNameTextField) + return; + openButton->setEnabled(!fileNameTextField->text().isEmpty()); +} + +void QQuickFileDialogImplAttachedPrivate::fileNameEditingByUserFinished() { auto fileDialogImpl = qobject_cast<QQuickFileDialogImpl *>(parent); if (!fileDialogImpl) @@ -742,16 +752,21 @@ void QQuickFileDialogImplAttached::setFileNameTextField(QQuickTextField *fileNam if (fileNameTextField == d->fileNameTextField) return; - if (d->fileNameTextField) + if (d->fileNameTextField) { QObjectPrivate::disconnect(d->fileNameTextField, &QQuickTextField::editingFinished, - d, &QQuickFileDialogImplAttachedPrivate::fileNameChangedByUser); + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditingByUserFinished); + QObjectPrivate::disconnect(d->fileNameTextField, &QQuickTextField::textEdited, + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditedByUser); + } d->fileNameTextField = fileNameTextField; - if (d->fileNameTextField) + if (d->fileNameTextField) { QObjectPrivate::connect(d->fileNameTextField, &QQuickTextField::editingFinished, - d, &QQuickFileDialogImplAttachedPrivate::fileNameChangedByUser); - + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditingByUserFinished); + QObjectPrivate::connect(d->fileNameTextField, &QQuickTextField::textEdited, + d, &QQuickFileDialogImplAttachedPrivate::fileNameEditedByUser); + } emit fileNameTextFieldChanged(); } |
