diff --git a/Perspex.Controls/Presenters/ScrollContentPresenter.cs b/Perspex.Controls/Presenters/ScrollContentPresenter.cs index 4ec114cacc..4e4cb776bb 100644 --- a/Perspex.Controls/Presenters/ScrollContentPresenter.cs +++ b/Perspex.Controls/Presenters/ScrollContentPresenter.cs @@ -124,21 +124,25 @@ namespace Perspex.Controls.Presenters if (rect.Bottom > offset.Y + this.Viewport.Height) { offset = offset.WithY(rect.Bottom - this.Viewport.Height); + e.Handled = true; } if (rect.Y < offset.Y) { offset = offset.WithY(rect.Y); + e.Handled = true; } if (rect.Right > offset.X + this.Viewport.Width) { offset = offset.WithX(rect.Right - this.Viewport.Width); + e.Handled = true; } if (rect.X < offset.X) { offset = offset.WithX(rect.X); + e.Handled = true; } this.Offset = offset; diff --git a/Perspex.Controls/Presenters/TextPresenter.cs b/Perspex.Controls/Presenters/TextPresenter.cs index da81f29dec..464013b770 100644 --- a/Perspex.Controls/Presenters/TextPresenter.cs +++ b/Perspex.Controls/Presenters/TextPresenter.cs @@ -92,11 +92,6 @@ namespace Perspex.Controls set { this.SetValue(SelectionEndProperty, value); } } - public new FormattedText FormattedText - { - get { return base.FormattedText; } - } - public int GetCaretIndex(Point point) { var hit = this.FormattedText.HitTestPoint(point); diff --git a/Perspex.Controls/TextBlock.cs b/Perspex.Controls/TextBlock.cs index 32a8bfaee3..5143320d87 100644 --- a/Perspex.Controls/TextBlock.cs +++ b/Perspex.Controls/TextBlock.cs @@ -35,6 +35,8 @@ namespace Perspex.Controls private FormattedText formattedText; + private Size constraint; + public TextBlock() { Observable.Merge( @@ -104,17 +106,20 @@ namespace Perspex.Controls protected virtual FormattedText CreateFormattedText() { - return new FormattedText( + var result = new FormattedText( this.Text, this.FontFamily, this.FontSize, this.FontStyle); + result.Constraint = constraint; + return result; } protected void InvalidateFormattedText() { if (this.formattedText != null) { + this.constraint = this.formattedText.Constraint; this.formattedText.Dispose(); this.formattedText = null; }