@@ -30,6 +30,8 @@ public abstract class Tree
3030 [ SerializeField ] private TreeNodeDictionary folders = new TreeNodeDictionary ( ) ;
3131
3232 [ NonSerialized ] private Stack < bool > indents = new Stack < bool > ( ) ;
33+ [ NonSerialized ] private Action < TreeNode > rightClickNextRender ;
34+ [ NonSerialized ] private TreeNode rightClickNextRenderNode ;
3335
3436 public bool IsInitialized { get { return nodes != null && nodes . Count > 0 && ! String . IsNullOrEmpty ( nodes [ 0 ] . Name ) ; } }
3537 public bool RequiresRepaint { get ; private set ; }
@@ -134,6 +136,16 @@ public void Load(IEnumerable<ITreeData> data, string title)
134136
135137 public Rect Render ( Rect rect , Vector2 scroll , Action < TreeNode > singleClick = null , Action < TreeNode > doubleClick = null , Action < TreeNode > rightClick = null )
136138 {
139+ if ( Event . current . type != EventType . Repaint )
140+ {
141+ if ( rightClickNextRender != null )
142+ {
143+ rightClickNextRender . Invoke ( rightClickNextRenderNode ) ;
144+ rightClickNextRender = null ;
145+ rightClickNextRenderNode = null ;
146+ }
147+ }
148+
137149 Profiler . BeginSample ( "TreeControl" ) ;
138150 bool visible = true ;
139151 var availableHeight = rect . y + rect . height ;
@@ -274,7 +286,8 @@ private bool HandleInput(Rect rect, TreeNode currentNode, int index, Action<Tree
274286 }
275287 if ( mouseButton == 1 && clickCount == 1 && rightClick != null )
276288 {
277- rightClick ( currentNode ) ;
289+ rightClickNextRender = rightClick ;
290+ rightClickNextRenderNode = currentNode ;
278291 }
279292 }
280293
0 commit comments