From 7f3ca5233577b7d55f51c2064b9b7d8fb6db5c07 Mon Sep 17 00:00:00 2001
From: "Tim E. Real" <termtech@rogers.com>
Date: Mon, 12 Apr 2010 06:09:23 +0000
Subject: See ChangeLog

---
 muse/ChangeLog                   |  1 +
 muse/muse/mixer/rack.cpp         |  3 +++
 muse/muse/widgets/filedialog.cpp | 57 +++++++++++++++++++++-------------------
 3 files changed, 34 insertions(+), 27 deletions(-)

diff --git a/muse/ChangeLog b/muse/ChangeLog
index 07cccbd8..16fbf539 100644
--- a/muse/ChangeLog
+++ b/muse/ChangeLog
@@ -1,5 +1,6 @@
 12.04.2010
       * Fixed: LADSPA rack effects: Do not display LADSPA output controls (such as latency). (T356)
+      * Fixed: Bug when cancelling 'save as' operation, says 'file exists'. Caused by my earlier compressed save fixes. (T356)
 11.04.2010
       * Fixed: DSSI requested midi mapped controls were not correct. (T356)
       * Changed: Working on controllers, and saving their state. Synths like Organ should remember their state now. (T356)
diff --git a/muse/muse/mixer/rack.cpp b/muse/muse/mixer/rack.cpp
index 57fc4b78..e94acb97 100644
--- a/muse/muse/mixer/rack.cpp
+++ b/muse/muse/mixer/rack.cpp
@@ -273,6 +273,9 @@ void EffectRack::savePreset(int idx)
       QString name = getSaveFileName(QString(""), preset_file_save_pattern, this,
          tr("MusE: Save Preset"));
       
+      if(name.isEmpty())
+        return;
+        
       //FILE* presetFp = fopen(name.ascii(),"w+");
       bool popenFlag;
       FILE* presetFp = fileOpen(this, name, QString(".pre"), "w", popenFlag, false, true);
diff --git a/muse/muse/widgets/filedialog.cpp b/muse/muse/widgets/filedialog.cpp
index 90120654..22f256e0 100644
--- a/muse/muse/widgets/filedialog.cpp
+++ b/muse/muse/widgets/filedialog.cpp
@@ -330,37 +330,15 @@ QString getSaveFileName(const QString &startWith,
       dlg->setCaption(name);
       dlg->setMode(QFileDialog::AnyFile);
       QString result;
-      if (dlg->exec() == QDialog::Accepted) {
-            result = dlg->selectedFile();
-            }
+      if (dlg->exec() == QDialog::Accepted) 
+        result = dlg->selectedFile();
+            
       
       // Added by T356.
-      QString filt = dlg->selectedFilter();
-      filt = getFilterExtension(filt);
-      // Do we have a valid extension?
-      if(!filt.isEmpty())
-      {
-        // If the rightmost characters of the filename do not already contain
-        //  the extension, add the extension to the filename.
-        //if(result.right(filt.length()) != filt)
-        if(!result.endsWith(filt))
-          result += filt;
-      }
-      else
+      if(!result.isEmpty())
       {
-        // No valid extension, or just * was given. Although it would be nice to allow no extension
-        //  or any desired extension by commenting this section out, it's probably not a good idea to do so.
-        //
-        // NOTE: Most calls to this routine getSaveFileName() are followed by fileOpen(),
-        //  which can tack on its own extension, but only if the *complete* extension is blank. 
-        // So there is some overlap going on. Enabling this actually stops that action, 
-        //  but only if there are no errors in the list of filters. fileOpen() will act as a 'catchall'.
-        //
-        // Force the filter list to the first one (the preferred one), and then get the filter.
-        dlg->setSelectedFilter(0);
-        filt = dlg->selectedFilter();
+        QString filt = dlg->selectedFilter();
         filt = getFilterExtension(filt);
-            
         // Do we have a valid extension?
         if(!filt.isEmpty())
         {
@@ -370,6 +348,31 @@ QString getSaveFileName(const QString &startWith,
           if(!result.endsWith(filt))
             result += filt;
         }
+        else
+        {
+          // No valid extension, or just * was given. Although it would be nice to allow no extension
+          //  or any desired extension by commenting this section out, it's probably not a good idea to do so.
+          //
+          // NOTE: Most calls to this routine getSaveFileName() are followed by fileOpen(),
+          //  which can tack on its own extension, but only if the *complete* extension is blank. 
+          // So there is some overlap going on. Enabling this actually stops that action, 
+          //  but only if there are no errors in the list of filters. fileOpen() will act as a 'catchall'.
+          //
+          // Force the filter list to the first one (the preferred one), and then get the filter.
+          dlg->setSelectedFilter(0);
+          filt = dlg->selectedFilter();
+          filt = getFilterExtension(filt);
+              
+          // Do we have a valid extension?
+          if(!filt.isEmpty())
+          {
+            // If the rightmost characters of the filename do not already contain
+            //  the extension, add the extension to the filename.
+            //if(result.right(filt.length()) != filt)
+            if(!result.endsWith(filt))
+              result += filt;
+          }
+        }
       }
       
       delete dlg;
-- 
cgit v1.2.3