private void DispatchMouseEnterMouseLeave(VisualElement previousTopElementUnderMouse, VisualElement currentTopElementUnderMouse, IMouseEvent triggerEvent) { if (previousTopElementUnderMouse != currentTopElementUnderMouse) { int i = 0; VisualElement visualElement; for (visualElement = previousTopElementUnderMouse; visualElement != null; visualElement = visualElement.shadow.parent) { i++; } int j = 0; VisualElement visualElement2; for (visualElement2 = currentTopElementUnderMouse; visualElement2 != null; visualElement2 = visualElement2.shadow.parent) { j++; } visualElement = previousTopElementUnderMouse; visualElement2 = currentTopElementUnderMouse; while (i > j) { MouseLeaveEvent pooled = MouseEventBase <MouseLeaveEvent> .GetPooled(triggerEvent); pooled.target = visualElement; this.DispatchEvent(pooled, visualElement.panel); EventBase <MouseLeaveEvent> .ReleasePooled(pooled); i--; visualElement = visualElement.shadow.parent; } List <VisualElement> list = new List <VisualElement>(j); while (j > i) { list.Add(visualElement2); j--; visualElement2 = visualElement2.shadow.parent; } while (visualElement != visualElement2) { MouseLeaveEvent pooled2 = MouseEventBase <MouseLeaveEvent> .GetPooled(triggerEvent); pooled2.target = visualElement; this.DispatchEvent(pooled2, visualElement.panel); EventBase <MouseLeaveEvent> .ReleasePooled(pooled2); list.Add(visualElement2); visualElement = visualElement.shadow.parent; visualElement2 = visualElement2.shadow.parent; } for (int k = list.Count - 1; k >= 0; k--) { MouseEnterEvent pooled3 = MouseEventBase <MouseEnterEvent> .GetPooled(triggerEvent); pooled3.target = list[k]; this.DispatchEvent(pooled3, list[k].panel); EventBase <MouseEnterEvent> .ReleasePooled(pooled3); } } }
public new static WheelEvent GetPooled(Event systemEvent) { WheelEvent pooled = MouseEventBase <WheelEvent> .GetPooled(systemEvent); pooled.imguiEvent = systemEvent; if (systemEvent != null) { pooled.delta = systemEvent.delta; } return(pooled); }
internal static EventBase CreateEvent(Event systemEvent) { EventBase pooled; switch (systemEvent.type) { case EventType.MouseDown: pooled = MouseEventBase <MouseDownEvent> .GetPooled(systemEvent); break; case EventType.MouseUp: pooled = MouseEventBase <MouseUpEvent> .GetPooled(systemEvent); break; case EventType.MouseMove: pooled = MouseEventBase <MouseMoveEvent> .GetPooled(systemEvent); break; case EventType.MouseDrag: pooled = MouseEventBase <MouseMoveEvent> .GetPooled(systemEvent); break; case EventType.KeyDown: pooled = KeyboardEventBase <KeyDownEvent> .GetPooled(systemEvent); break; case EventType.KeyUp: pooled = KeyboardEventBase <KeyUpEvent> .GetPooled(systemEvent); break; case EventType.ScrollWheel: pooled = WheelEvent.GetPooled(systemEvent); break; default: pooled = IMGUIEvent.GetPooled(systemEvent); break; } return(pooled); }
private void DispatchMouseOverMouseOut(VisualElement previousTopElementUnderMouse, VisualElement currentTopElementUnderMouse, Event triggerEvent) { if (previousTopElementUnderMouse != currentTopElementUnderMouse) { if (previousTopElementUnderMouse != null) { using (MouseOutEvent pooled = MouseEventBase <MouseOutEvent> .GetPooled(triggerEvent)) { pooled.target = previousTopElementUnderMouse; this.DispatchEvent(pooled, previousTopElementUnderMouse.panel); } } if (currentTopElementUnderMouse != null) { using (MouseOverEvent pooled2 = MouseEventBase <MouseOverEvent> .GetPooled(triggerEvent)) { pooled2.target = currentTopElementUnderMouse; this.DispatchEvent(pooled2, currentTopElementUnderMouse.panel); } } } }
internal static EventBase CreateEvent(Event systemEvent) { EventType type = systemEvent.type; EventBase pooled; switch (type) { case EventType.MouseDown: pooled = MouseEventBase <MouseDownEvent> .GetPooled(systemEvent); break; case EventType.MouseUp: pooled = MouseEventBase <MouseUpEvent> .GetPooled(systemEvent); break; case EventType.MouseMove: pooled = MouseEventBase <MouseMoveEvent> .GetPooled(systemEvent); break; case EventType.MouseDrag: pooled = MouseEventBase <MouseMoveEvent> .GetPooled(systemEvent); break; case EventType.KeyDown: pooled = KeyboardEventBase <KeyDownEvent> .GetPooled(systemEvent); break; case EventType.KeyUp: pooled = KeyboardEventBase <KeyUpEvent> .GetPooled(systemEvent); break; case EventType.ScrollWheel: pooled = WheelEvent.GetPooled(systemEvent); break; default: if (type != EventType.MouseEnterWindow) { if (type != EventType.MouseLeaveWindow) { pooled = IMGUIEvent.GetPooled(systemEvent); } else { pooled = MouseEventBase <MouseLeaveWindowEvent> .GetPooled(systemEvent); } } else { pooled = MouseEventBase <MouseEnterWindowEvent> .GetPooled(systemEvent); } break; } return(pooled); }