@@ -391,13 +391,13 @@ private void ToggleNodeVisibility(int idx, TreeNode node)
391391
392392 private bool HandleInput ( Rect rect , TreeNode currentNode , int index , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null , Action < TreeNode > rightClick = null )
393393 {
394- bool selectionChanged = false ;
394+ var requiresRepaint = false ;
395395 var clickRect = new Rect ( 0f , rect . y , rect . width , rect . height ) ;
396396 if ( Event . current . type == EventType . MouseDown && clickRect . Contains ( Event . current . mousePosition ) )
397397 {
398398 Event . current . Use ( ) ;
399399 SelectedNode = currentNode ;
400- selectionChanged = true ;
400+ requiresRepaint = true ;
401401 var clickCount = Event . current . clickCount ;
402402 var mouseButton = Event . current . button ;
403403
@@ -423,41 +423,50 @@ private bool HandleInput(Rect rect, TreeNode currentNode, int index, Action<Tree
423423 int directionX = Event . current . keyCode == KeyCode . LeftArrow ? - 1 : Event . current . keyCode == KeyCode . RightArrow ? 1 : 0 ;
424424 if ( directionY != 0 || directionX != 0 )
425425 {
426+ Event . current . Use ( ) ;
427+
426428 if ( directionY > 0 )
427429 {
428- selectionChanged = SelectNext ( index , false ) != index ;
430+ requiresRepaint = SelectNext ( index , false ) != index ;
429431 }
430432 else if ( directionY < 0 )
431433 {
432- selectionChanged = SelectPrevious ( index , false ) != index ;
434+ requiresRepaint = SelectPrevious ( index , false ) != index ;
433435 }
434436 else if ( directionX > 0 )
435437 {
436438 if ( currentNode . IsFolder && currentNode . IsCollapsed )
437439 {
438440 ToggleNodeVisibility ( index , currentNode ) ;
439- Event . current . Use ( ) ;
440441 }
441442 else
442443 {
443- selectionChanged = SelectNext ( index , true ) != index ;
444+ requiresRepaint = SelectNext ( index , true ) != index ;
444445 }
445446 }
446447 else if ( directionX < 0 )
447448 {
448449 if ( currentNode . IsFolder && ! currentNode . IsCollapsed )
449450 {
450451 ToggleNodeVisibility ( index , currentNode ) ;
451- Event . current . Use ( ) ;
452452 }
453453 else
454454 {
455- selectionChanged = SelectPrevious ( index , true ) != index ;
455+ requiresRepaint = SelectPrevious ( index , true ) != index ;
456456 }
457457 }
458458 }
459+
460+ if ( IsCheckable && Event . current . keyCode == KeyCode . Space )
461+ {
462+ Event . current . Use ( ) ;
463+
464+ ToggleNodeChecked ( index , currentNode ) ;
465+ requiresRepaint = true ;
466+ }
459467 }
460- return selectionChanged ;
468+
469+ return requiresRepaint ;
461470 }
462471
463472 private int SelectNext ( int index , bool foldersOnly )
0 commit comments