@@ -391,13 +391,13 @@ private void ToggleNodeVisibility(int idx, TreeNode node)
391
391
392
392
private bool HandleInput ( Rect rect , TreeNode currentNode , int index , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null , Action < TreeNode > rightClick = null )
393
393
{
394
- bool selectionChanged = false ;
394
+ var requiresRepaint = false ;
395
395
var clickRect = new Rect ( 0f , rect . y , rect . width , rect . height ) ;
396
396
if ( Event . current . type == EventType . MouseDown && clickRect . Contains ( Event . current . mousePosition ) )
397
397
{
398
398
Event . current . Use ( ) ;
399
399
SelectedNode = currentNode ;
400
- selectionChanged = true ;
400
+ requiresRepaint = true ;
401
401
var clickCount = Event . current . clickCount ;
402
402
var mouseButton = Event . current . button ;
403
403
@@ -423,41 +423,50 @@ private bool HandleInput(Rect rect, TreeNode currentNode, int index, Action<Tree
423
423
int directionX = Event . current . keyCode == KeyCode . LeftArrow ? - 1 : Event . current . keyCode == KeyCode . RightArrow ? 1 : 0 ;
424
424
if ( directionY != 0 || directionX != 0 )
425
425
{
426
+ Event . current . Use ( ) ;
427
+
426
428
if ( directionY > 0 )
427
429
{
428
- selectionChanged = SelectNext ( index , false ) != index ;
430
+ requiresRepaint = SelectNext ( index , false ) != index ;
429
431
}
430
432
else if ( directionY < 0 )
431
433
{
432
- selectionChanged = SelectPrevious ( index , false ) != index ;
434
+ requiresRepaint = SelectPrevious ( index , false ) != index ;
433
435
}
434
436
else if ( directionX > 0 )
435
437
{
436
438
if ( currentNode . IsFolder && currentNode . IsCollapsed )
437
439
{
438
440
ToggleNodeVisibility ( index , currentNode ) ;
439
- Event . current . Use ( ) ;
440
441
}
441
442
else
442
443
{
443
- selectionChanged = SelectNext ( index , true ) != index ;
444
+ requiresRepaint = SelectNext ( index , true ) != index ;
444
445
}
445
446
}
446
447
else if ( directionX < 0 )
447
448
{
448
449
if ( currentNode . IsFolder && ! currentNode . IsCollapsed )
449
450
{
450
451
ToggleNodeVisibility ( index , currentNode ) ;
451
- Event . current . Use ( ) ;
452
452
}
453
453
else
454
454
{
455
- selectionChanged = SelectPrevious ( index , true ) != index ;
455
+ requiresRepaint = SelectPrevious ( index , true ) != index ;
456
456
}
457
457
}
458
458
}
459
+
460
+ if ( IsCheckable && Event . current . keyCode == KeyCode . Space )
461
+ {
462
+ Event . current . Use ( ) ;
463
+
464
+ ToggleNodeChecked ( index , currentNode ) ;
465
+ requiresRepaint = true ;
466
+ }
459
467
}
460
- return selectionChanged ;
468
+
469
+ return requiresRepaint ;
461
470
}
462
471
463
472
private int SelectNext ( int index , bool foldersOnly )
0 commit comments