aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2023-09-19 17:04:20 +0200
committerEirik Aavitsland <eirik.aavitsland@qt.io>2023-09-21 15:16:18 +0200
commit62126f6581a8bfcac35f92d52312044219752f33 (patch)
treea4619a183ae9b283194dec22802e7a2be49bead6 /src/quickdialogs/quickdialogsquickimpl/qquickfiledialogimpl.cpp
parent9184766ea929de23099da73366d99652c01a724f (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.cpp27
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();
}