diff mainwindow.cpp @ 195:ff0d76dcb3b8

* Don't close proc input on finished() -- causes crash on program failure on Windows * Use merge binary from settings, even if empty -- sometimes user may wish to set an empty string to avoid having an external merge program * Revert labels to line edits in settings dialog, for a similar reason (permit setting empty value) * Avoid showing hard hyphens on Windows, they don't look right * Use preformatted text for merge outcome dialog (but format3 would be better)
author Chris Cannam
date Fri, 24 Dec 2010 13:14:45 +0000
parents 5ca49523892f
children dbc8d97caaf4
line wrap: on
line diff
--- a/mainwindow.cpp	Mon Dec 20 22:39:45 2010 +0000
+++ b/mainwindow.cpp	Fri Dec 24 13:14:45 2010 +0000
@@ -441,23 +441,25 @@
 {
     QSettings settings;
     settings.beginGroup("Locations");
-    QString merge = settings.value("mergebinary", "").toString();
-    if (merge == "") {
-        QStringList bases;
-        bases << "fmdiff3" << "meld" << "diffuse" << "kdiff3";
-        bool found = false;
-        foreach (QString base, bases) {
-            merge = findInPath(base, m_myDirPath, true);
-            if (merge != base) {
-                found = true;
-                break;
-            }
+    QVariant v = settings.value("mergebinary");
+    if (v != QVariant()) {
+        return v.toString(); // even if empty: user may have specified no external tool
+    }
+    QString merge;
+    QStringList bases;
+    bases << "fmdiff3" << "meld" << "diffuse" << "kdiff3";
+    bool found = false;
+    foreach (QString base, bases) {
+        merge = findInPath(base, m_myDirPath, true);
+        if (merge != base && merge != base + ".exe") {
+            found = true;
+            break;
         }
-        if (found) {
-            settings.setValue("mergebinary", merge);
-        } else {
-            merge = "";
-        }
+    }
+    if (found) {
+        settings.setValue("mergebinary", merge);
+    } else {
+        merge = "";
     }
     return merge;
 }