internal bool UpdateContextMenu() { Opening.Execute(); var point = ToGraphSpace(MenuPosition); bool showone = false; if (ConversationReal()) { m_mouseController.ForClickedOn(point, a => { foreach (MenuAction <TNode> m in m_menuActions.Keys) { bool show = m.NodeAction(a, point) != null; bool visible = show; m_menuActions[m].Visible = visible; showone |= visible; } }, a => { foreach (MenuAction <TNode> m in m_menuActions.Keys) { bool show = m.TransitionAction != null; bool visible = show; m_menuActions[m].Visible = visible; showone |= visible; } }, (a, b) => { }, a => { foreach (MenuAction <TNode> m in m_menuActions.Keys) { bool show = m.GroupAction != null; bool visible = show; m_menuActions[m].Visible = visible; showone |= visible; } }, () => { foreach (MenuAction <TNode> m in m_menuActions.Keys) { bool show = m.EmptySpaceAction != null; bool visible = show; m_menuActions[m].Visible = visible; showone |= visible; } }); } else { foreach (MenuAction <TNode> m in m_menuActions.Keys) { m_menuActions[m].Visible = false; } } return(!showone); }