From 32e98696526e00065c2090f79db1f383a1a13941 Mon Sep 17 00:00:00 2001 From: jkuehner Date: Sat, 24 Aug 2013 00:46:58 +0200 Subject: [PATCH] RenderTransformOriginProperty -> Only one Undo Step when moving the Origin, not for each MouseMove! --- .../Extensions/RenderTransformOriginExtension.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs index 3449810b53..d6060553ec 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/RenderTransformOriginExtension.cs @@ -47,16 +47,24 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions adornerPanel.Children.Add(renderTransformOriginThumb); renderTransformOriginThumb.DragDelta += new DragDeltaEventHandler(renderTransformOriginThumb_DragDelta); + renderTransformOriginThumb.DragCompleted += new DragCompletedEventHandler(renderTransformOriginThumb_DragCompleted); } + void renderTransformOriginThumb_DragCompleted(object sender, DragCompletedEventArgs e) + { + this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(renderTransformOrigin.X, 4), Math.Round(renderTransformOrigin.Y, 4))); + } + void renderTransformOriginThumb_DragDelta(object sender, DragDeltaEventArgs e) { var p = AdornerPanel.GetPlacement(renderTransformOriginThumb) as RelativePlacement; var pointAbs = adornerPanel.RelativeToAbsolute(new Vector(p.XRelativeToContentWidth, p.YRelativeToContentHeight)); var pointAbsNew = pointAbs + new Vector(e.HorizontalChange, e.VerticalChange); var pRel = adornerPanel.AbsoluteToRelative(pointAbsNew); + renderTransformOrigin = new Point(pRel.X, pRel.Y); - this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(pRel.X, 4), Math.Round(pRel.Y, 4))); + this.ExtendedItem.View.SetValue(FrameworkElement.RenderTransformOriginProperty, renderTransformOrigin); + //this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(Math.Round(pRel.X, 4), Math.Round(pRel.Y, 4))); } Point renderTransformOrigin = new Point(0.5, 0.5);