/// <summary> /// Fired after the node editor events /// </summary> public override void AfterEditorEvents() { CheckActivation(); if (!IsActivated) { return; } if (!Event.current.IsLeftClickEvent()) { return; } if (Event.current.modifiers != EventModifiers.None) { return; } Node clickedNode = NodeEditor.GetNodeUnderMouse(); Connector clickedConnector = NodeEditor.GetNodeConnectorUnderMouse(); if (clickedNode == null && clickedConnector == null) { NodeEditor.UnselectAll(); NodeEditor.RaiseSelectionChanged(); NodeEditor.FlagRepaint(); } }
/// <summary> /// Checks if the node is a valid context menu receiving node /// and displays its context menu /// </summary> /// <returns>True if context menu should be displayed, false if not</returns> protected override bool ShouldActivate() { if (!Event.current.IsRightClickEvent()) { return(false); } Connector connector = NodeEditor.GetNodeConnectorUnderMouse(); return(connector != null && connector.HasContextMenu); }
/// <summary> /// Shows the menu /// </summary> protected override void OnActivated() { Connector connectorUnderMouse = NodeEditor.GetNodeConnectorUnderMouse(); if (connectorUnderMouse.IsSelectable && !connectorUnderMouse.IsSelected()) { NodeEditor.UnselectAll(); connectorUnderMouse.Select(); } UpdateActiveMenu(connectorUnderMouse.ContextMenu, connectorUnderMouse); Event.current.Use(); }
public override void BeforeEditorEvents() { CheckActivation(); if (!IsActivated) { return; } if (!Event.current.IsLeftClickEvent()) { return; } bool multiSelectActive = Event.current.modifiers == EventModifiers.Control || Event.current.modifiers == EventModifiers.Shift; Connector clickedConnector = NodeEditor.GetNodeConnectorUnderMouse(); if (clickedConnector == null) { return; } if (!clickedConnector.IsSelectable) { return; } bool isSelected = clickedConnector.IsSelected(); if (!multiSelectActive) { if (!isSelected) { NodeEditor.UnselectAll(); clickedConnector.Select(); } } else { clickedConnector.ToggleSelected(); } NodeEditor.RaiseSelectionChanged(); NodeEditor.FlagRepaint(); Event.current.Use(); }