summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/dialogs/DefaultFileDialog.qml10
-rw-r--r--src/dialogs/qquickfiledialog.cpp17
2 files changed, 16 insertions, 11 deletions
diff --git a/src/dialogs/DefaultFileDialog.qml b/src/dialogs/DefaultFileDialog.qml
index 99623d626..7cd87bc99 100644
--- a/src/dialogs/DefaultFileDialog.qml
+++ b/src/dialogs/DefaultFileDialog.qml
@@ -316,13 +316,14 @@ AbstractFileDialog {
sortReversed: view.sortIndicatorOrder === Qt.DescendingOrder
}
- onActivated: {
- if (view.model.isFolder(row)) {
+ onActivated: if (view.focus) {
+ if (view.selection.count > 0 && view.model.isFolder(row)) {
dirDown(view.model.get(row, "filePath"))
} else {
root.acceptSelection()
}
}
+ onClicked: currentPathField.text = view.model.get(row, "filePath")
TableViewColumn {
@@ -398,13 +399,14 @@ AbstractFileDialog {
TextField {
id: currentPathField
Layout.fillWidth: true
- onAccepted: {
+ function doAccept() {
root.clearSelection()
if (root.addSelection(root.pathToUrl(text)))
root.accept()
else
root.folder = root.pathFolder(text)
}
+ onAccepted: doAccept()
}
}
}
@@ -454,6 +456,8 @@ AbstractFileDialog {
onClicked: {
if (view.model.isFolder(view.currentIndex) && !selectFolder)
dirDown(view.model.get(view.currentIndex, "filePath"))
+ else if (!(root.selectExisting))
+ currentPathField.doAccept()
else
root.acceptSelection()
}
diff --git a/src/dialogs/qquickfiledialog.cpp b/src/dialogs/qquickfiledialog.cpp
index 576778e10..8a7c3e5fb 100644
--- a/src/dialogs/qquickfiledialog.cpp
+++ b/src/dialogs/qquickfiledialog.cpp
@@ -176,14 +176,15 @@ void QQuickFileDialog::clearSelection()
bool QQuickFileDialog::addSelection(const QUrl &path)
{
QFileInfo info(path.toLocalFile());
- if (info.exists() && ((info.isDir() && m_selectFolder) || !info.isDir())) {
- if (m_selectFolder)
- m_selections.append(pathFolder(path.toLocalFile()));
- else
- m_selections.append(path);
- return true;
- }
- return false;
+ if (selectExisting() && !info.exists())
+ return false;
+ if (selectFolder() != info.isDir())
+ return false;
+ if (selectFolder())
+ m_selections.append(pathFolder(path.toLocalFile()));
+ else
+ m_selections.append(path);
+ return true;
}
/*!