Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 2e9edc8

Browse files
Trigger a toggle on spacebar
1 parent 2590be4 commit 2e9edc8

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/TreeControl.cs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)