From 8ef75e82b07f119b3c621c346f53c37999e5855b Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Wed, 18 Jan 2017 07:51:26 +0100 Subject: [PATCH] dub proj editor, dont loose selection --- src/ce_dubprojeditor.pas | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/ce_dubprojeditor.pas b/src/ce_dubprojeditor.pas index d584bc6a..7c9a0332 100644 --- a/src/ce_dubprojeditor.pas +++ b/src/ce_dubprojeditor.pas @@ -400,6 +400,7 @@ end; procedure TCEDubProjectEditorWidget.btnDelPropClick(Sender: TObject); var prt: TJSONData; + sel: TTreeNode; begin if fSelectedNode.isNil then exit; if fSelectedNode.Level = 0 then exit; @@ -413,6 +414,13 @@ begin TJSONObject(prt).Delete(fSelectedNode.Index) else if prt.JSONType = jtArray then TJSONArray(prt).Delete(fSelectedNode.Index); + sel := fSelectedNode.GetPrevSibling; + if sel.isNil then + sel := fSelectedNode.GetNextSibling; + if sel.isNil then + sel := fSelectedNode.Parent; + if sel.isNotNil then + sel.Selected:=true; fProj.endModification; updateValueEditor; @@ -581,8 +589,14 @@ procedure TCEDubProjectEditorWidget.updateEditor; end; end; end; - +var + str: string = ''; + rcl: TTreeNode; begin + + if propTree.Selected.isNotNil then + str := propTree.Selected.GetTextPath; + propTree.Items.Clear; edProp.Clear; if fProj.isNil or fProj.json.isNil then @@ -590,6 +604,15 @@ begin propTree.BeginUpdate; addPropsFrom(propTree.Items.Add(nil, 'project'), fProj.json); + if str.isNotEmpty then + begin + rcl := propTree.Items.FindNodeWithTextPath(str); + if rcl.isNotNil then + begin + rcl.Selected := true; + rcl.MakeVisible; + end; + end; propTree.EndUpdate; end; {$ENDREGION}