diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp
index 1b434d7adcfb9b3c5f3fa0b24aaddc43449c2653..9305680ad584ef49a2196c96eaa173cf71e28cf7 100644
--- a/src/libs/utils/pathchooser.cpp
+++ b/src/libs/utils/pathchooser.cpp
@@ -357,11 +357,21 @@ void PathChooser::slotBrowse()
     emit beforeBrowsing();
 
     QString predefined = path();
-    if ((predefined.isEmpty() || !QFileInfo(predefined).isDir())
+    QFileInfo fi(predefined);
+
+    if (!predefined.isEmpty() && !fi.isDir()) {
+        predefined = fi.path();
+        fi.setFile(predefined);
+    }
+
+    if ((predefined.isEmpty() || !fi.isDir())
             && !d->m_initialBrowsePathOverride.isNull()) {
         predefined = d->m_initialBrowsePathOverride;
-        if (!QFileInfo(predefined).isDir())
+        fi.setFile(predefined);
+        if (!fi.isDir()) {
             predefined.clear();
+            fi.setFile(QString());
+        }
     }
 
     // Prompt for a file/dir
@@ -392,7 +402,6 @@ void PathChooser::slotBrowse()
         QFileDialog dialog(this);
         dialog.setFileMode(QFileDialog::AnyFile);
         dialog.setWindowTitle(makeDialogTitle(tr("Choose File")));
-        QFileInfo fi(predefined);
         if (fi.exists())
             dialog.setDirectory(fi.absolutePath());
         // FIXME: fix QFileDialog so that it filters properly: lib*.a