Skip to content

Commit 940952f

Browse files
author
Unity Technologies
committedApr 16, 2025·
Unity 6000.2.0a9 C# reference source code
1 parent c4aff6a commit 940952f

File tree

207 files changed

+2805
-931
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

207 files changed

+2805
-931
lines changed
 

‎Editor/Mono/Animation/AnimationWindow/AnimationWindowHierarchy.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ internal class AnimationWindowHierarchy
4444
// Animation window shared state
4545
private AnimationWindowState m_State;
4646
private TreeViewController m_TreeView;
47+
private AnimationWindowHierarchyGUI m_HierarchyGUI;
4748

4849
public Vector2 GetContentSize()
4950
{
@@ -65,6 +66,7 @@ public void OnGUI(Rect position)
6566
{
6667
m_TreeView.OnEvent();
6768
m_TreeView.OnGUI(position, GUIUtility.GetControlID(FocusType.Keyboard));
69+
m_HierarchyGUI.ReclaimPendingFieldFocus();
6870
}
6971

7072
public void Init(EditorWindow owner, Rect rect)
@@ -74,9 +76,10 @@ public void Init(EditorWindow owner, Rect rect)
7476

7577
m_TreeView = new TreeViewController(owner, m_State.hierarchyState);
7678
m_State.hierarchyData = new AnimationWindowHierarchyDataSource(m_TreeView, m_State);
79+
m_HierarchyGUI = new AnimationWindowHierarchyGUI(m_TreeView, m_State);
7780
m_TreeView.Init(rect,
7881
m_State.hierarchyData,
79-
new AnimationWindowHierarchyGUI(m_TreeView, m_State),
82+
m_HierarchyGUI,
8083
null
8184
);
8285

‎Editor/Mono/Animation/AnimationWindow/AnimationWindowHierarchyGUI.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ internal class AnimationWindowHierarchyGUI : TreeViewGUI
3030
private int[] m_HierarchyItemValueControlIDs;
3131
private int[] m_HierarchyItemButtonControlIDs;
3232

33+
private bool m_NeedsToReclaimFieldFocus;
34+
private int m_FieldToReclaimFocus;
35+
3336
private const float k_RowRightOffset = 10;
3437
private const float k_ValueFieldDragWidth = 15;
3538
private const float k_ValueFieldWidth = 80;
@@ -352,11 +355,12 @@ private void DoValueField(Rect rect, AnimationWindowHierarchyNode node, int row)
352355
&& Event.current.type == EventType.KeyDown
353356
&& (Event.current.character == '\n' || (int)Event.current.character == 3));
354357

355-
// Force back keyboard focus to float field editor when editing it.
356-
// TreeView forces keyboard focus on itself at mouse down and we lose focus here.
358+
// Force back keyboard focus to float field editor when editing it since the TreeView forces keyboard focus on itself at mouse down.
359+
// The focus will be reclaimed after the TreeViewController.OnGUI call.
357360
if (EditorGUI.s_RecycledEditor.controlID == id && Event.current.type == EventType.MouseDown && valueFieldRect.Contains(Event.current.mousePosition))
358361
{
359-
GUIUtility.keyboardControl = id;
362+
m_NeedsToReclaimFieldFocus = true;
363+
m_FieldToReclaimFocus = id;
360364
}
361365

362366
if (curve.isDiscreteCurve)
@@ -421,6 +425,15 @@ private void DoValueField(Rect rect, AnimationWindowHierarchyNode node, int row)
421425
}
422426
}
423427

428+
internal void ReclaimPendingFieldFocus()
429+
{
430+
if (m_NeedsToReclaimFieldFocus)
431+
{
432+
GUIUtility.keyboardControl = m_FieldToReclaimFocus;
433+
m_NeedsToReclaimFieldFocus = false;
434+
}
435+
}
436+
424437
private bool DoTreeViewButton(int id, Rect position, GUIContent content, GUIStyle style)
425438
{
426439
Event evt = Event.current;

0 commit comments

Comments
 (0)