From 5df40bdd49b7e1e0f3868c03c485d0431ae2dd22 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Mon, 29 Aug 2011 13:05:57 +0200 Subject: [PATCH] WPF Designer: use transaction when moving items in outline pad. (fixes http://community.sharpdevelop.net/forums/t/13248.aspx) --- .../Project/OutlineView/OutlineNode.cs | 31 ++++++++++--------- .../Document/DocumentChangeEventArgs.cs | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs index c696bb6164..d865a1f6e2 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/OutlineView/OutlineNode.cs @@ -156,25 +156,26 @@ namespace ICSharpCode.WpfDesign.Designer.OutlineView public void Insert(IEnumerable nodes, OutlineNode after, bool copy) { - if (copy) { - nodes = nodes.Select(n => OutlineNode.Create(n.DesignItem.Clone())); - } - else { - foreach (var node in nodes) { - node.DesignItem.Remove(); + using (var moveTransaction = DesignItem.Context.OpenGroup("Item moved in outline view", nodes.Select(n => n.DesignItem).ToList())) { + if (copy) { + nodes = nodes.Select(n => OutlineNode.Create(n.DesignItem.Clone())).ToList(); + } else { + foreach (var node in nodes) { + node.DesignItem.Remove(); + } } - } - var index = after == null ? 0 : Children.IndexOf(after) + 1; + var index = after == null ? 0 : Children.IndexOf(after) + 1; - var content = DesignItem.ContentProperty; - if (content.IsCollection) { - foreach (var node in nodes) { - content.CollectionElements.Insert(index++, node.DesignItem); + var content = DesignItem.ContentProperty; + if (content.IsCollection) { + foreach (var node in nodes) { + content.CollectionElements.Insert(index++, node.DesignItem); + } + } else { + content.SetValue(nodes.First().DesignItem); } - } - else { - content.SetValue(nodes.First().DesignItem); + moveTransaction.Commit(); } } diff --git a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/DocumentChangeEventArgs.cs b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/DocumentChangeEventArgs.cs index acf1831a61..2286694896 100644 --- a/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/DocumentChangeEventArgs.cs +++ b/src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Document/DocumentChangeEventArgs.cs @@ -19,7 +19,7 @@ namespace ICSharpCode.AvalonEdit.Document public int Offset { get; private set; } /// - /// The text that was inserted. + /// The text that was removed. /// public string RemovedText { get; private set; }