From 78a80b2b75358131576f70402b2a96cd53390621 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Wed, 8 Apr 2015 19:52:41 -0400 Subject: [PATCH] Moved Tab key handling to InputElement. --- Perspex.Controls/Presenters/TextPresenter.cs | 10 ---------- Perspex.Input/InputElement.cs | 14 +++++++++++++- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Perspex.Controls/Presenters/TextPresenter.cs b/Perspex.Controls/Presenters/TextPresenter.cs index 885724cac0..a638b5207a 100644 --- a/Perspex.Controls/Presenters/TextPresenter.cs +++ b/Perspex.Controls/Presenters/TextPresenter.cs @@ -287,16 +287,6 @@ namespace Perspex.Controls.Presenters { goto default; } - else if ((modifiers & ModifierKeys.Shift) == 0) - { - // TODO: Keyboard navigation should be moved to InputElement. This is just a - // hack to get TextBox tab navigation working. - KeyboardNavigation.MoveNext((IInputElement)this.TemplatedParent); - } - else - { - KeyboardNavigation.MovePrevious((IInputElement)this.TemplatedParent); - } break; diff --git a/Perspex.Input/InputElement.cs b/Perspex.Input/InputElement.cs index 9ebcf8224f..af76dece85 100644 --- a/Perspex.Input/InputElement.cs +++ b/Perspex.Input/InputElement.cs @@ -9,7 +9,6 @@ namespace Perspex.Input using System; using System.Linq; using Perspex.Interactivity; - using Perspex.Rendering; using Perspex.VisualTree; public class InputElement : Interactive, IInputElement @@ -200,6 +199,19 @@ namespace Perspex.Input protected virtual void OnKeyDown(KeyEventArgs e) { + if (e.Key == Key.Tab) + { + var modifiers = e.Device.Modifiers; + + if ((modifiers & ModifierKeys.Shift) == 0) + { + KeyboardNavigation.MoveNext(this); + } + else + { + KeyboardNavigation.MovePrevious(this); + } + } } protected virtual void OnPointerEnter(PointerEventArgs e)