public virtual void SetDefaults(UIControl control, string subtype = "default") { }
public void ProcessInputEvents(InputState input, bool mouseOver) { if (UIManager.dragForm == null) { { var swap = mouseOverLastFrame; mouseOverLastFrame = mouseOverThisFrame; mouseOverThisFrame = swap; mouseOverThisFrame.Clear(); } if (mouseOver) frame.Dive((ctl) => ctl.ScreenRect.Contains(input.MousePosition), (ctl) => ctl.InterceptMouse(input.MousePosition - ctl.ScreenRect.Position), (ctl) => mouseOverThisFrame.Add(ctl)); foreach (UIControl ctl in mouseOverLastFrame) if (!mouseOverThisFrame.Contains(ctl)) ctl.OnMouseLeave(input); foreach (UIControl ctl in mouseOverThisFrame) if (!mouseOverLastFrame.Contains(ctl)) ctl.OnMouseEnter(input); for (int i = 0; i < 3; i++) { foreach (UIControl ctl in mouseOverThisFrame) { if (input.MouseReleased(i)) ctl.OnMouseUp(input, i); if (input.MousePressed(i)) { ctl.OnMouseDown(input, i); if (ctl.IsDraggable(i)) { UIManager.dragForm = this; dragControl = ctl; dragStart = dragLast = input.MousePosition; dragButton = i; // todo: maybe abort rest of non-drag phase? } } } } // set kb focus if (mouseOver && input.MousePressed(0)) { UIControl focus = mouseOverThisFrame.Count == 0 ? window : mouseOverThisFrame.Last(); while (focus != null) { if (focus.CanTakeKeyboardFocus(input)) break; focus = focus.Parent; } keyboardFocus = focus; } if (input.scrollWheel != 0) foreach (UIControl ctl in mouseOverThisFrame) { if (ctl.OnScroll(input.scrollWheel)) break; else if (ctl == mouseOverThisFrame.Last()) { UIControl ctc = ctl.Parent; while (ctc != null) { if (ctc.OnScroll(input.scrollWheel)) break; ctc = ctc.Parent; } } } } else if (UIManager.dragForm == this) { if (input.MouseReleased(dragButton)) { dragControl.OnMouseUp(input, dragButton); dragControl = null; // don't hold an old ref UIManager.dragForm = null; // and of course } else if (input.MousePosition != dragLast) { dragControl.OnDrag(input, dragButton, input.MousePosition - dragLast, input.MousePosition - dragStart); dragLast = input.MousePosition; } } if (Focused) { // keyboard if (keyboardFocus == null) keyboardFocus = window; UIControl focus = keyboardFocus; while (focus != null && input.pressedQueue.Count > 0) { focus.OnKeyDown(input); focus = focus.Parent; } } }
public static void SetDefaults(UIControl control, string subtype) { { var c = control as Button; if (c != null) { SetDefaults(c, subtype); return; } } }
public override void SetDefaults(UIControl control, string subtype) { ThemeManager.SetDefaults(control, subtype); }