From: Jean-Philippe Bruyère Date: Mon, 11 Oct 2021 08:09:02 +0000 (+0000) Subject: wip, save commit before node editing X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=719663ac08fd8ef62b722729b56993700a7cb8d4;p=jp%2Fcrowedit.git wip, save commit before node editing --- diff --git a/CrowEditBase/src/CrowEditBase.cs b/CrowEditBase/src/CrowEditBase.cs index f89d437..8c13f2b 100644 --- a/CrowEditBase/src/CrowEditBase.cs +++ b/CrowEditBase/src/CrowEditBase.cs @@ -95,7 +95,7 @@ namespace CrowEditBase //TODO:flattened project public IEnumerable FlattenProjects { get { - foreach (var node in Projects.SelectMany (child => child.FlattenSubProjetcs)) + foreach (var node in Projects.SelectMany (child => child.FlattenProjetcs)) yield return node; } } diff --git a/CrowEditBase/src/Project.cs b/CrowEditBase/src/Project.cs index 0b7c049..a4c3926 100644 --- a/CrowEditBase/src/Project.cs +++ b/CrowEditBase/src/Project.cs @@ -14,9 +14,10 @@ namespace CrowEditBase protected Project parent; public abstract bool ContainsFile (string fullPath); public IEnumerable SubProjetcs => Childs.OfType (); - public IEnumerable FlattenSubProjetcs { + public virtual IEnumerable FlattenProjetcs { get { - foreach (var node in SubProjetcs.SelectMany (sp => sp.FlattenSubProjetcs)) + yield return this; + foreach (var node in SubProjetcs.SelectMany (sp => sp.FlattenProjetcs)) yield return node; } } diff --git a/CrowEditBase/src/SourceEditor.cs b/CrowEditBase/src/SourceEditor.cs index 41d5b7d..81bfd55 100644 --- a/CrowEditBase/src/SourceEditor.cs +++ b/CrowEditBase/src/SourceEditor.cs @@ -135,8 +135,12 @@ namespace Crow if (currentLoc == value) return; currentLoc = value; - if (currentLoc.HasValue) - getFoldContainingLine (currentLoc.Value.Line)?.UnfoldToTheTop(); + if (currentLoc.HasValue) { + SyntaxNode fold = getFoldContainingLine (currentLoc.Value.Line); + while (fold != null && fold.StartLine == currentLoc.Value.Line) + fold = fold.Parent; + fold?.UnfoldToTheTop(); + } NotifyValueChanged ("CurrentLine", CurrentLine); NotifyValueChanged ("CurrentColumn", CurrentColumn); CMDCopy.CanExecute = CMDCut.CanExecute = !SelectionIsEmpty; diff --git a/CrowEditBase/src/TreeNode.cs b/CrowEditBase/src/TreeNode.cs index 195216f..a980465 100644 --- a/CrowEditBase/src/TreeNode.cs +++ b/CrowEditBase/src/TreeNode.cs @@ -40,6 +40,7 @@ namespace CrowEditBase public abstract NodeType NodeType { get; } public abstract string Icon { get; } public virtual string IconSub => null; + public virtual string StatusIcon => null; public T GetFirstAncestorOfType () where T : TreeNode { TreeNode n = this; while (n.Parent != null && !(n is T)) diff --git a/CrowEditBase/ui/CrowEdit.style b/CrowEditBase/ui/CrowEdit.style index 147c1ec..89d08c6 100644 --- a/CrowEditBase/ui/CrowEdit.style +++ b/CrowEditBase/ui/CrowEdit.style @@ -29,6 +29,7 @@ Editor { MouseWheelSpeed = "20"; BubbleEvents ="None"; ClipToClientRect = "true"; + MouseCursor = "ibeam"; } icon { diff --git a/CrowEditBase/ui/TreeExpandable.template b/CrowEditBase/ui/TreeExpandable.template index ea45ddb..0a46eca 100644 --- a/CrowEditBase/ui/TreeExpandable.template +++ b/CrowEditBase/ui/TreeExpandable.template @@ -27,6 +27,7 @@