@@ -8,103 +8,94 @@ internal partial class SelectionTree
88 {
99 #region KeyboardEvents
1010
11- protected void HandleKeyboardEvents ( )
11+ private void HandleKeyboardEvents ( )
1212 {
13- // KeyDown is always used somehow, so we use KeyUp here
1413 if ( Event . current . type != EventType . KeyDown )
1514 return ;
1615
17- switch ( Event . current . keyCode )
16+ bool eventUsed = Event . current . keyCode switch
1817 {
19- case KeyCode . RightArrow :
20- OnArrowRight ( ) ;
21- break ;
22- case KeyCode . LeftArrow :
23- OnArrowLeft ( ) ;
24- break ;
25- case KeyCode . KeypadEnter :
26- case KeyCode . Return :
27- OnEnter ( ) ;
28- break ;
29- case KeyCode . DownArrow :
30- if ( _noneElement is { IsSelected : true } )
31- {
32- OnArrowDownNone ( ) ;
33- }
34- else
35- {
36- OnArrowDown ( ) ;
37- }
38- break ;
39- case KeyCode . UpArrow :
40- OnArrowUp ( ) ;
41- break ;
42- }
18+ KeyCode . RightArrow => OnArrowRight ( ) ,
19+ KeyCode . LeftArrow => OnArrowLeft ( ) ,
20+ KeyCode . KeypadEnter => OnEnter ( ) ,
21+ KeyCode . Return => OnEnter ( ) ,
22+ KeyCode . DownArrow => _noneElement is { IsSelected : true } ? OnArrowDownNone ( ) : OnArrowDown ( ) ,
23+ KeyCode . UpArrow => OnArrowUp ( ) ,
24+ _ => false
25+ } ;
26+
27+ if ( eventUsed )
28+ Event . current . Use ( ) ;
4329 }
4430
45- private void OnArrowRight ( )
31+ private bool OnArrowRight ( )
4632 {
4733 if ( ! SelectedNode . IsFolder || SelectedNode . Expanded )
48- return ;
34+ return false ;
4935
5036 SelectedNode . Expanded = true ;
51- Event . current . Use ( ) ;
37+ return true ;
5238 }
5339
54- private void OnArrowLeft ( )
40+ private bool OnArrowLeft ( )
5541 {
5642 if ( ! SelectedNode . IsFolder || ! SelectedNode . Expanded )
57- return ;
43+ return false ;
5844
5945 SelectedNode . Expanded = false ;
60- Event . current . Use ( ) ;
46+ return true ;
6147 }
6248
63- private void OnEnter ( )
49+ private bool OnEnter ( )
6450 {
6551 if ( SelectedNode . IsFolder )
6652 {
6753 SelectedNode . Expanded = ! SelectedNode . Expanded ;
68- RequestRepaint ( ) ;
6954 }
7055 else
7156 {
7257 FinalizeSelection ( ) ;
7358 }
59+
60+ return true ;
7461 }
7562
76- private void OnArrowDown ( )
63+ private bool OnArrowDown ( )
7764 {
7865 if ( SelectedNode . IsFolder && SelectedNode . Expanded )
7966 {
8067 SelectedNode = SelectedNode . ChildNodes [ 0 ] ;
68+ return true ;
8169 }
82- else
83- {
84- if ( SelectedNode . IsRoot )
85- return ;
8670
87- SelectedNode = SelectedNode . ParentNode . GetNextChild ( SelectedNode ) ;
71+ if ( SelectedNode . IsRoot )
72+ return false ;
8873
89- if ( ! _visibleRect . Contains ( SelectedNode . Rect ) )
90- {
91- _scrollbar . RequestScrollToNode ( SelectedNode , Scrollbar . NodePosition . Bottom ) ;
92- }
74+ SelectedNode = SelectedNode . ParentNode . GetNextChild ( SelectedNode ) ;
75+
76+ if ( ! _visibleRect . Contains ( SelectedNode . Rect ) )
77+ {
78+ _scrollbar . RequestScrollToNode ( SelectedNode , Scrollbar . NodePosition . Bottom ) ;
9379 }
80+
81+ return true ;
9482 }
9583
96- private void OnArrowDownNone ( )
84+ private bool OnArrowDownNone ( )
9785 {
9886 var firstItem = _root . ChildNodes . FirstOrDefault ( ) ;
9987
100- if ( firstItem != null )
101- SelectedNode = firstItem ;
88+ if ( firstItem == null )
89+ return false ;
90+
91+ SelectedNode = firstItem ;
92+ return true ;
10293 }
10394
104- private void OnArrowUp ( )
95+ private bool OnArrowUp ( )
10596 {
10697 if ( SelectedNode . IsRoot )
107- return ;
98+ return false ;
10899
109100 if ( SelectedNode . ParentNode . IsRoot )
110101 {
@@ -113,7 +104,7 @@ private void OnArrowUp()
113104 if ( isFirst && _noneElement != null )
114105 {
115106 SelectedNode = _noneElement ;
116- return ;
107+ return true ;
117108 }
118109 }
119110
@@ -131,6 +122,8 @@ private void OnArrowUp()
131122 {
132123 _scrollbar . RequestScrollToNode ( SelectedNode , Scrollbar . NodePosition . Top ) ;
133124 }
125+
126+ return true ;
134127 }
135128
136129 private bool IsExpandedFolder ( SelectionNode previousNode )
0 commit comments