From a0ddc9e72a91c75b1f23fba717420e4959c365a0 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Fri, 8 Jun 2012 15:07:24 +0200 Subject: [PATCH] Avoid showing the 'solution altered externally' message twice. --- .../Project/Src/Project/ProjectChangeWatcher.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs b/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs index 849ec019eb..3088756b39 100644 --- a/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs +++ b/src/Main/Base/Project/Src/Project/ProjectChangeWatcher.cs @@ -117,17 +117,30 @@ namespace ICSharpCode.SharpDevelop.Project } } + static bool showingMessageBox; + static void MainFormActivated(object sender, EventArgs e) { - if (wasChangedExternally) { - wasChangedExternally = false; + if (wasChangedExternally && !showingMessageBox) { if (ProjectService.OpenSolution != null) { + // Set wasChangedExternally=false only after the dialog is closed, + // so that additional changes to the project while the dialog is open + // don't cause it to appear twice. + + // The MainFormActivated event occurs when the dialog is closed before + // we get a change to set wasChangedExternally=false, so we use 'showingMessageBox' + // to prevent the dialog from appearing infititely. + showingMessageBox = true; int result = MessageService.ShowCustomDialog(MessageService.DefaultMessageBoxTitle, "${res:ICSharpCode.SharpDevelop.Project.SolutionAlteredExternallyMessage}", 0, 1, "${res:ICSharpCode.SharpDevelop.Project.ReloadSolution}", "${res:ICSharpCode.SharpDevelop.Project.KeepOldSolution}", "${res:ICSharpCode.SharpDevelop.Project.CloseSolution}"); + showingMessageBox = false; + wasChangedExternally = false; if (result == 0) ProjectService.LoadSolution(ProjectService.OpenSolution.FileName); else if (result == 2) new CloseSolution().Run(); + } else { + wasChangedExternally = false; } } }