ide/ProjectSettings: Fixed crash on reloading Modified Project while Project Settings...
authorJerome St-Louis <jerome@ecere.com>
Sun, 10 Mar 2013 11:38:11 +0000 (07:38 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sun, 10 Mar 2013 11:38:11 +0000 (07:38 -0400)
ide/src/project/Project.ec
ide/src/project/ProjectView.ec

index a4e9e22..2a85193 100644 (file)
@@ -871,26 +871,41 @@ private:
             ProjectView projectView = ide.projectView;
             DataRow prev = topNode.row ? topNode.row.previous : null;
             FileMonitor fm = fileMonitor;
-
-            if(projectView) projectView.DeleteNode(topNode);
-
-            *this = *project;
-            delete fileMonitor;
-            fileMonitor = fm;
-            topNode.project = this;
+            bool confirmation = true;
 
             if(projectView)
             {
-               CompilerConfig compiler = ideSettings.GetCompilerConfig(projectView.workspace.compiler);
-               projectView.AddNode(topNode, null);
-               topNode.row.Move(prev);
+               if(projectView.projectSettingsDialog)
+               {
+                  confirmation = projectView.projectSettingsDialog.CloseConfirmation(true);
+                  if(confirmation)
+                     projectView.projectSettingsDialog.Destroy(0);
+               }
+               if(confirmation)
+                  projectView.DeleteNode(topNode);
+            }
+            if(confirmation)
+            {
+               *this = *project;
+               delete fileMonitor;
+               fileMonitor = fm;
+               topNode.project = this;
 
-               projectView.ShowOutputBuildLog(true);
-               projectView.DisplayCompiler(compiler, false);
-               projectView.ProjectUpdateMakefileForAllConfigs(this);
-               delete compiler;
+               if(projectView)
+               {
+                  CompilerConfig compiler = ideSettings.GetCompilerConfig(projectView.workspace.compiler);
+                  projectView.AddNode(topNode, null);
+                  topNode.row.Move(prev);
+
+                  projectView.ShowOutputBuildLog(true);
+                  projectView.DisplayCompiler(compiler, false);
+                  projectView.ProjectUpdateMakefileForAllConfigs(this);
+                  delete compiler;
+               }
+               eSystem_Delete(project);
             }
-            eSystem_Delete(project);
+            else
+               delete project;
          }
          return true;
       }
index 71c7012..addf9d8 100644 (file)
@@ -1280,7 +1280,9 @@ class ProjectView : Window
       ProjectNode node = GetSelectedNode(true);
       Project prj = node ? node.project : project;
       projectSettingsDialog = ProjectSettings { master = parent, project = prj, projectNode = node };
+      incref projectSettingsDialog;
       projectSettingsDialog.Modal();
+      delete projectSettingsDialog;
       ide.UpdateToolBarActiveConfigs(false);
       Update(null);
       ide.AdjustMenus();