Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2011-10-26 19:17:44 +0400
committerMike Krüger <mkrueger@xamarin.com>2011-10-26 19:17:44 +0400
commitbb3f06e888d089559e08ecd3b05e0a2844fc267e (patch)
treec12919cc9843d5119db1832ffa8ac077376fd062 /main/src
parent21ad778ec4c166c9e06218ccc173a547c2c0f6ec (diff)
Fixed "Bug 1018 - System exception is occurred when user rename the
project name and then double click on .xib file.".
Diffstat (limited to 'main/src')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDomService.cs29
1 files changed, 28 insertions, 1 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDomService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDomService.cs
index 99a0907a9c..e92bf7171c 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDomService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Dom.Parser/ProjectDomService.cs
@@ -416,6 +416,7 @@ namespace MonoDevelop.Projects.Dom.Parser
string uri = "Project:" + project.FileName;
if (UnrefDom (uri)) {
+ project.Modified -= HandleModified;
if (project is DotNetProject) {
((DotNetProject)project).ReferenceAddedToProject -= OnProjectReferenceAdded;
((DotNetProject)project).ReferenceRemovedFromProject -= OnProjectReferenceRemoved;
@@ -442,7 +443,7 @@ namespace MonoDevelop.Projects.Dom.Parser
try {
ProjectDom db = ParserDatabase.LoadProjectDom (project);
RegisterDom (db, uri);
-
+ project.Modified += HandleModified;
if (project is DotNetProject) {
((DotNetProject)project).ReferenceAddedToProject += OnProjectReferenceAdded;
((DotNetProject)project).ReferenceRemovedFromProject += OnProjectReferenceRemoved;
@@ -453,6 +454,32 @@ namespace MonoDevelop.Projects.Dom.Parser
}
}
+ static void HandleModified (object sender, SolutionItemModifiedEventArgs e)
+ {
+ var fn = e.FirstOrDefault (x => x is SolutionItemModifiedEventInfo && ((SolutionItemModifiedEventInfo)x).Hint == "FileName");
+ if (fn == null)
+ return;
+ var project = fn.SolutionItem as Project;
+ if (project == null)
+ return;
+ lock (databases) {
+ try {
+ foreach (var pair in databases) {
+ if (pair.Value.Project == project) {
+ databases.Remove (pair.Key);
+ string uri = "Project:" + project.FileName;
+ pair.Value.Uri = uri;
+ databases[uri] = pair.Value;
+ return;
+ }
+ }
+ } catch (Exception ex) {
+ LoggingService.LogError ("Parser database error: can't rename file name of " + project.Name + " to " + project.FileName, ex);
+ }
+ }
+ }
+
+
public static void RegisterDom (ProjectDom dom, string uri)
{
dom.Uri = uri;