From 51b89a80410bd72c6dafce59d5ffc0bcfe4fb96f Mon Sep 17 00:00:00 2001 From: Lluis Sanchez Date: Fri, 25 Oct 2013 12:31:02 +0200 Subject: [WPF] Widget allocation optimization Box: Only measure the child widget when it is first added to the box. --- Xwt.WPF/Xwt.WPFBackend/BoxBackend.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'Xwt.WPF') diff --git a/Xwt.WPF/Xwt.WPFBackend/BoxBackend.cs b/Xwt.WPF/Xwt.WPFBackend/BoxBackend.cs index 688a01d0..a31a3e1a 100644 --- a/Xwt.WPF/Xwt.WPFBackend/BoxBackend.cs +++ b/Xwt.WPF/Xwt.WPFBackend/BoxBackend.cs @@ -120,11 +120,15 @@ namespace Xwt.WPFBackend // because WPF widgets my cache some measurement information based on the // constraints provided in the last Measure call (which when calculating the // preferred size is normally set to infinite. - element.InvalidateMeasure (); - element.Measure (new SW.Size (rects[i].Width, rects[i].Height)); - - element.Arrange (rects[i].ToWpfRect ()); - element.UpdateLayout (); + var r = rects[i].WithPositiveSize (); + if (force) { + // Don't recalculate the size unless a relayout is being forced + element.InvalidateMeasure (); + element.Measure (new SW.Size (r.Width, r.Height)); + } + + element.Arrange (r.ToWpfRect ()); + // element.UpdateLayout (); } } } -- cgit v1.2.3 From 42a246b2954e11b0634897b5032d89101360ac94 Mon Sep 17 00:00:00 2001 From: Lluis Sanchez Date: Fri, 25 Oct 2013 12:31:34 +0200 Subject: [WPF] Better defaults for stepping increments in ScrollView --- Xwt.WPF/Xwt.WPFBackend/CustomScrollViewPort.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'Xwt.WPF') diff --git a/Xwt.WPF/Xwt.WPFBackend/CustomScrollViewPort.cs b/Xwt.WPF/Xwt.WPFBackend/CustomScrollViewPort.cs index e9e32d23..6cae5772 100644 --- a/Xwt.WPF/Xwt.WPFBackend/CustomScrollViewPort.cs +++ b/Xwt.WPF/Xwt.WPFBackend/CustomScrollViewPort.cs @@ -152,22 +152,22 @@ namespace Xwt.WPFBackend public void MouseWheelDown() { - SetVerticalOffset (VerticalOffset + VerticalStepIncrement * 4); + SetVerticalOffset (VerticalOffset + 12); } public void MouseWheelLeft() { - SetHorizontalOffset (HorizontalOffset - HorizontalStepIncrement * 4); + SetHorizontalOffset (HorizontalOffset - 12); } public void MouseWheelRight() { - SetHorizontalOffset (HorizontalOffset + HorizontalStepIncrement * 4); + SetHorizontalOffset (HorizontalOffset + 12); } public void MouseWheelUp() { - SetVerticalOffset (VerticalOffset - VerticalStepIncrement * 4); + SetVerticalOffset (VerticalOffset - 12); } public void PageDown() @@ -284,22 +284,22 @@ namespace Xwt.WPFBackend protected double VerticalPageIncrement { - get { return (this.verticalBackend != null) ? this.verticalBackend.PageIncrement : 10; } + get { return (this.verticalBackend != null) ? this.verticalBackend.PageIncrement : ViewportHeight; } } protected double HorizontalPageIncrement { - get { return (this.horizontalBackend != null) ? this.horizontalBackend.PageIncrement : 10; } + get { return (this.horizontalBackend != null) ? this.horizontalBackend.PageIncrement : ViewportWidth; } } protected double VerticalStepIncrement { - get { return (this.verticalBackend != null) ? this.verticalBackend.StepIncrement : 1; } + get { return (this.verticalBackend != null) ? this.verticalBackend.StepIncrement : VerticalPageIncrement / 10; } } protected double HorizontalStepIncrement { - get { return (this.horizontalBackend != null) ? this.horizontalBackend.StepIncrement : 1; } + get { return (this.horizontalBackend != null) ? this.horizontalBackend.StepIncrement : HorizontalPageIncrement / 10; } } protected override WSize MeasureOverride (WSize constraint) -- cgit v1.2.3