diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs index 1914d4ba39..8dde4ce53a 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/IconBarMargin.cs @@ -68,17 +68,19 @@ namespace ICSharpCode.TextEditor public override void HandleMouseDown(Point mousePos, MouseButtons mouseButtons) { + int clickedVisibleLine = (mousePos.Y + textArea.VirtualTop.Y) / textArea.TextView.FontHeight; + int lineNumber = textArea.Document.GetFirstLogicalLine(clickedVisibleLine); + + if ((mouseButtons & MouseButtons.Right) == MouseButtons.Right) { + if (textArea.Caret.Line != lineNumber) { + textArea.Caret.Line = lineNumber; + } + } + List marks = textArea.Document.BookmarkManager.Marks; int oldCount = marks.Count; foreach (Bookmark mark in marks) { - int lineNumber = textArea.Document.GetVisibleLine(mark.LineNumber); - int fontHeight = textArea.TextView.FontHeight; - int yPos = lineNumber * fontHeight - textArea.VirtualTop.Y; - if (mousePos.Y >= yPos && mousePos.Y < yPos + fontHeight) { - if (lineNumber == textArea.Document.GetVisibleLine(mark.LineNumber - 1)) { - // marker is inside folded region, it cannot be clicked - continue; - } + if (mark.LineNumber == lineNumber) { mark.Click(textArea, new MouseEventArgs(mouseButtons, 1, mousePos.X, mousePos.Y, 0)); if (oldCount != marks.Count) { textArea.UpdateLine(lineNumber); @@ -239,7 +241,7 @@ namespace ICSharpCode.TextEditor } else if(regionTop > top && regionTop < bottom) { // Region's top edge inside line. return true; - } + } return false; } } diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs index 27d0ec204b..e526dea318 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs @@ -231,7 +231,8 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates string newProjectName = StringParser.Parse(name, new string[,] { {"ProjectName", projectCreateInformation.ProjectName} }); - string projectLocation = FileUtility.Combine(projectCreateInformation.ProjectBasePath, newProjectName + LanguageBindingService.GetProjectFileExtension(language)); + string projectLocation = Path.GetFullPath(Path.Combine(projectCreateInformation.ProjectBasePath, + newProjectName + LanguageBindingService.GetProjectFileExtension(language))); StringBuilder standardNamespace = new StringBuilder(); diff --git a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs index 514a395c39..7784e4bb2c 100644 --- a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs +++ b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs @@ -42,7 +42,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter if (descriptor == null || descriptor.Binding == null) throw new InvalidOperationException("Cannot get Language Binding for " + TargetLanguageName); - info.OutputProjectFileName = Path.Combine(targetProjectDirectory, info.ProjectName + descriptor.ProjectFileExtension); + info.OutputProjectFileName = Path.GetFullPath(Path.Combine(targetProjectDirectory, info.ProjectName + descriptor.ProjectFileExtension)); return descriptor.Binding.CreateProject(info); } diff --git a/src/Main/Base/Project/Src/Project/Solution/Solution.cs b/src/Main/Base/Project/Src/Project/Solution/Solution.cs index 4fa2475f9e..a2b13a31ac 100644 --- a/src/Main/Base/Project/Src/Project/Solution/Solution.cs +++ b/src/Main/Base/Project/Src/Project/Solution/Solution.cs @@ -477,7 +477,7 @@ namespace ICSharpCode.SharpDevelop.Project string guid = match.Result("${Guid}"); if (!FileUtility.IsUrl(location)) { - location = Path.Combine(solutionDirectory, location); + location = Path.GetFullPath(Path.Combine(solutionDirectory, location)); } if (projectGuid == FolderGuid) { diff --git a/src/Main/Base/Project/Src/Services/File/FileService.cs b/src/Main/Base/Project/Src/Services/File/FileService.cs index 881876613c..95acc4d786 100644 --- a/src/Main/Base/Project/Src/Services/File/FileService.cs +++ b/src/Main/Base/Project/Src/Services/File/FileService.cs @@ -108,6 +108,12 @@ namespace ICSharpCode.SharpDevelop return GetOpenFile(fileName); } + /// + /// Opens a new unsaved file. + /// + /// The (unsaved) name of the to open + /// Name of the language used to choose the display binding. + /// Content of the file to create public static IWorkbenchWindow NewFile(string defaultName, string language, string content) { IDisplayBinding binding = DisplayBindingService.GetBindingPerLanguageName(language);