public override void OnMouseDoubleClick(MouseButtons mb) { base.OnMouseDoubleClick(mb); ChildrenCopy.HandleMouseDoubleClick(mb); }
public override void OnTouchDown() { base.OnTouchDown(); ChildrenCopy.HandleTouchDown(); }
public override void OnMouseMoved() { base.OnMouseMoved(); ChildrenCopy.HandleMouseMovement(); }
public override void OnMouseUp(MouseButtons mb) { base.OnMouseUp(mb); ChildrenCopy.HandleMouseUp(mb); }
private void InputOnTouchUp() { ChildrenCopy.ProcessTouchUp(); }
public void UpdateLayout() { var newBounds = BoundsFetcher(); if (InternalBounds != newBounds) { InvalidateLayout(); } InternalBounds = newBounds; if (InternalBounds.IsEmpty) { return; } if (!_layoutDirty) { return; } foreach (var i in ChildrenCopy) { if (i.Visible) { i.Layout(InternalBounds); } } // Rest processing MenuBar = null; var active = true; for (var i = ChildrenCopy.Count - 1; i >= 0; --i) { var w = ChildrenCopy[i]; if (!w.Visible) { continue; } w.ProcessWidgets(widget => { widget.Active = active; if (MenuBar == null && widget is HorizontalMenu) { // Found MenuBar MenuBar = (HorizontalMenu)widget; } if (FocusedMouseWheelWidget == null && widget is ScrollViewer && widget.AcceptsMouseWheelFocus && active) { // If focused mouse wheel widget unset, then set first that accepts such focus FocusedMouseWheelWidget = widget; } // Continue return(true); }); // Everything after first modal widget is not active if (w.IsModal) { active = false; } } UpdateRecursiveLayout(ChildrenCopy); // Fire Mouse Movement without actual mouse movement in order to update Widget.IsMouseInside _previousMousePosition = _mousePosition; ChildrenCopy.ProcessMouseMovement(); _layoutDirty = false; }
public void HandleButton(bool isDown, bool wasDown, MouseButtons buttons) { if (isDown && !wasDown) { IsTouchDown = true; var ev = MouseDown; if (ev != null) { ev(this, new GenericEventArgs <MouseButtons>(buttons)); } InputOnMouseDown(); ChildrenCopy.HandleMouseDown(buttons); var td = TouchDown; if (td != null) { td(this, EventArgs.Empty); } ChildrenCopy.HandleTouchDown(); if ((DateTime.Now - _lastTouch).TotalMilliseconds < DoubleClickIntervalInMs) { // Double click var ev2 = MouseDoubleClick; if (ev2 != null) { ev2(this, new GenericEventArgs <MouseButtons>(buttons)); } ChildrenCopy.HandleMouseDoubleClick(buttons); _lastTouch = DateTime.MinValue; } else { _lastTouch = DateTime.Now; } } else if (!isDown && wasDown) { IsTouchDown = false; var ev = MouseUp; if (ev != null) { ev(this, new GenericEventArgs <MouseButtons>(buttons)); } ChildrenCopy.HandleMouseUp(buttons); var tu = TouchUp; if (tu != null) { tu(this, EventArgs.Empty); } ChildrenCopy.HandleTouchUp(); } }
public void UpdateInput() { if (MouseInfoGetter != null) { var mouseInfo = MouseInfoGetter(); MousePosition = mouseInfo.Position; if (SpriteBatchBeginParams.TransformMatrix != null) { // Apply transform var t = Vector2.Transform( new Vector2(MousePosition.X, MousePosition.Y), SpriteBatchBeginParams.InverseTransform); MousePosition = new Point((int)t.X, (int)t.Y); } if (MousePosition.X != LastMousePosition.X || MousePosition.Y != LastMousePosition.Y) { var ev = MouseMoved; if (ev != null) { ev(this, EventArgs.Empty); } ChildrenCopy.HandleMouseMovement(); } HandleButton(mouseInfo.IsLeftButtonDown, _lastMouseInfo.IsLeftButtonDown, MouseButtons.Left); HandleButton(mouseInfo.IsMiddleButtonDown, _lastMouseInfo.IsMiddleButtonDown, MouseButtons.Middle); HandleButton(mouseInfo.IsRightButtonDown, _lastMouseInfo.IsRightButtonDown, MouseButtons.Right); #if XENKO var handleWheel = mouseInfo.Wheel != 0; #else var handleWheel = mouseInfo.Wheel != _lastMouseInfo.Wheel; #endif if (handleWheel) { var delta = mouseInfo.Wheel; #if !XENKO delta -= _lastMouseInfo.Wheel; #endif var ev = MouseWheelChanged; if (ev != null) { ev(null, new GenericEventArgs <float>(delta)); } if (_focusedWidget != null) { _focusedWidget.IterateFocusable(w => w.OnMouseWheel(delta)); } } _lastMouseInfo = mouseInfo; } if (DownKeysGetter != null) { var pressedKeys = DownKeysGetter(); if (pressedKeys != null) { MyraEnvironment.ShowUnderscores = (MenuBar != null && MenuBar.OpenMenuItem != null) || pressedKeys.Contains(Keys.LeftAlt) || pressedKeys.Contains(Keys.RightAlt); if (_lastDownKeys != null) { foreach (var key in pressedKeys) { if (!_lastDownKeys.Contains(key)) { var ev = KeyDown; if (ev != null) { ev(this, new GenericEventArgs <Keys>(key)); } if (MenuBar != null && MyraEnvironment.ShowUnderscores) { MenuBar.OnKeyDown(key); } else { if (_focusedWidget != null) { _focusedWidget.IterateFocusable(w => w.OnKeyDown(key)); #if XENKO var ch = key.ToChar(pressedKeys.Contains(Keys.LeftShift) || pressedKeys.Contains(Keys.RightShift)); if (ch != null) { _focusedWidget.IterateFocusable(w => w.OnChar(ch.Value)); } #endif } } if (key == Keys.Escape && ContextMenu != null) { HideContextMenu(); } } } foreach (var key in _lastDownKeys) { if (!pressedKeys.Contains(key)) { // Key had been released var ev = KeyUp; if (ev != null) { ev(this, new GenericEventArgs <Keys>(key)); } if (_focusedWidget != null) { _focusedWidget.IterateFocusable(w => w.OnKeyUp(key)); } } } } } _lastDownKeys = pressedKeys.ToArray(); } }
public override void OnMouseEntered() { base.OnMouseEntered(); ChildrenCopy.ProcessMouseMovement(); }
public override void OnTouchDoubleClick() { base.OnTouchDoubleClick(); ChildrenCopy.ProcessTouchDoubleClick(); }
public override void OnTouchUp() { base.OnTouchUp(); ChildrenCopy.ProcessTouchUp(); }
public override void OnTouchMoved() { base.OnTouchMoved(); ChildrenCopy.ProcessTouchMovement(); }
public static void UpdateLayout() { ///TODO ///widget var newBounds = BoundsFetcher(); if (InternalBounds != newBounds) { _layoutDirty = true; } InternalBounds = newBounds; if (InternalBounds.IsEmpty) { return; } if (!_layoutDirty) { return; } ChildrenCopy.ForEach( i => { if (i.Visible) { i.Layout(InternalBounds); } }); // Rest processing MenuBar = null; var active = true; for (var i = ChildrenCopy.Count - 1; i >= 0; --i) { var w = ChildrenCopy[i]; if (!w.Visible) { continue; } UIUtils.ProcessWidgets(w, widget => { widget.Active = active; if (MenuBar == null && widget is HorizontalMenu) { // Found MenuBar MenuBar = (HorizontalMenu)widget; } if (FocusedMouseWheelWidget == null && widget is ScrollViewer && widget.AcceptsMouseWheelFocus && active) { // If focused mouse wheel widget unset, then set first that accepts such focus FocusedMouseWheelWidget = widget; } // Continue return(true); }); // Everything after first modal widget is not active if (w.IsModal) { active = false; } } UpdateRecursiveLayout(ChildrenCopy); _layoutDirty = false; }