From a4c8a562ff80140bc17ee1a34837e988d3ebe7da 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 503a0d2b63..b0ad73a140 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 e5c5948eb6..4d2c119b7c 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;