TreeView ContextClicked firing at the same time as ContextClickedItem

I’m building a custom TreeView and I have two event listeners for ContextClicked (OnContextClicked) and ContextClickedItem (OnContextClickedItem)
ContextClicked is only supposed to get called when clicking outside any items *(Unity - Scripting API: IMGUI.Controls.TreeView.ContextClicked), however, it is getting called at the same time as OnContextClickedItem when right-clicking a row.

Related event dispatcher code (in class which extends TreeView):

        public delegate void selectionDelegate(ScriptableObject[] selection);
        public selectionDelegate OnContextClickedItem;
        public Action OnContextClicked;

        private ScriptableObject[] GetSelectedObjects(IList<int> selectedIds) {
            return selectedIds.Select(id => m_dataModel.GetRowByID(id).targetObject as ScriptableObject).ToArray();
        }

        protected override void ContextClicked() {
            base.ContextClicked();
            if (OnContextClicked != null) {
                OnContextClicked();
            }
        }

        protected override void ContextClickedItem(int id) {
            base.ContextClickedItem(id);
            if (OnContextClickedItem != null) {
                OnContextClickedItem(GetSelectedObjects(GetSelection()));
            }
        }

Event listener

        void init() {
            m_ModelsListView.OnContextClickedItem += modelContextClickedItem;
            m_ModelsListView.OnContextClicked += modelContextClicked;
        }

        void modelContextClickedItem(ScriptableObject[] selection) {
            Debug.Log("contextItem");
        }

        void modelContextClicked() {
            Debug.Log("context");
        }

When clicking outside a row, I get “context” printed. When I click on a row, I get “contextItem” and “context” printed.

Hi,

If you use the context click you need to call: Event.current.Use();
This is not clear from the current docs but will get added.

2 Likes

Necro!

Here’s a reminder to update the docs. I just stumbled across this same issue, and needed to determine which context menu to show.

Same, I was stuck because of this for some time.

This needs to be added to the docs!