From 89b74a5231aafa36063d8ad7e27b85be4a9431b7 Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Tue, 20 Oct 2015 11:39:21 +0100 Subject: [PATCH] GUI: improve App::PropertyPath directory selector Editing direcotry in lineEdit was open to escaped character problems i.e. \t or \n which can be pert of notmal directory path were converted to tab or new line. Also leaving the lineEdit without hitting Enter was discarding changes. Signed-off-by: Przemo Firszt --- src/Gui/FileDialog.cpp | 11 +++++++++++ src/Gui/FileDialog.h | 1 + 2 files changed, 12 insertions(+) diff --git a/src/Gui/FileDialog.cpp b/src/Gui/FileDialog.cpp index 503a0d2b6..b0ad73a14 100644 --- a/src/Gui/FileDialog.cpp +++ b/src/Gui/FileDialog.cpp @@ -534,6 +534,8 @@ FileChooser::FileChooser ( QWidget * parent ) connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SIGNAL(fileNameChanged(const QString &))); + + connect(lineEdit, SIGNAL(editingFinished()), this, SLOT(editingFinished())); button = new QPushButton(QLatin1String("..."), this); button->setFixedWidth(2*button->fontMetrics().width(QLatin1String(" ... "))); @@ -561,6 +563,15 @@ QString FileChooser::fileName() const return lineEdit->text(); } +void FileChooser::editingFinished() +{ + QString le_converted = lineEdit->text(); + le_converted.replace(QString::fromStdString("\\"), QString::fromStdString("/")); + lineEdit->setText(le_converted); + FileDialog::setWorkingDirectory(le_converted); + fileNameSelected(le_converted); +} + /** * Sets the file name \a s. */ diff --git a/src/Gui/FileDialog.h b/src/Gui/FileDialog.h index e5c5948eb..4d2c119b7 100644 --- a/src/Gui/FileDialog.h +++ b/src/Gui/FileDialog.h @@ -176,6 +176,7 @@ Q_SIGNALS: private Q_SLOTS: void chooseFile(); + void editingFinished(); private: QLineEdit *lineEdit;