public override void SetCursorPosition() { if (FocusedWidget != null) { FocusedWidget.SetCursorPosition(); } }
// *** Heartbeat Service *** void Heartbeat() { bool invalidateFlag = false; invalidateFlag = FocusedWidget != null && FocusedWidget.OnHeartBeat(); foreach (Widget w in HeartbeatSubscriptions) { if (w.Visible && w != FocusedWidget) { invalidateFlag |= w.OnHeartBeat(); } } if (invalidateFlag) { Invalidate(1); } if (!TooltipDelayAction.Enabled) { if (m_Tooltip.Text != null) { TooltipDelayAction.Start(); } } }
public override void OnKeyUp(KeyboardKeyEventArgs e) { if (FocusedWidget != null) { FocusedWidget.OnKeyUp(e); } }
public override bool OnKeyPress(KeyPressEventArgs e) { if (FocusedWidget != null && FocusedWidget.OnKeyPress(e)) { return(true); } return(base.OnKeyPress(e)); }
//---------------------------------------------------------------------- public void Focus(Widget _widget) { Debug.Assert(_widget.Screen == this); mbHasActivatedFocusedWidget = false; if (FocusedWidget != null && FocusedWidget != _widget) { FocusedWidget.OnBlur(); } if (FocusedWidget != _widget) { FocusedWidget = _widget; FocusedWidget.OnFocus(); } }
//---------------------------------------------------------------------- public void Draw() { Game.SpriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, Game.SpriteMatrix); Root.Draw(); if (FocusedWidget != null && IsActive) { FocusedWidget.DrawFocused(); } if (HoveredWidget != null && IsActive) { HoveredWidget.DrawHovered(); } Game.SpriteBatch.End(); Debug.Assert(mlScissorRects.Count == 0, "Unbalanced calls to PushScissorRectangles"); }
public override bool ProcessKey(int key) { base.ProcessKey(key); switch (key) { case 259: // up Invalid = true; return(Previous()); case 258: // down Invalid = true; return(Next()); } if (FocusedWidget != null) { return(FocusedWidget.ProcessKey(key)); } return(false); }
//---------------------------------------------------------------------- public void HandleInput() { //------------------------------------------------------------------ // Make sure we don't hold references to orphaned widgets if (FocusedWidget != null && FocusedWidget.IsOrphan) { FocusedWidget = null; mbHasActivatedFocusedWidget = false; } if (HoveredWidget != null && HoveredWidget.IsOrphan) { Game.SetCursor(MouseCursor.Default); HoveredWidget = null; } if (mClickedWidget != null && mClickedWidget.IsOrphan) { mClickedWidget = null; } //------------------------------------------------------------------ Point mouseHitPoint = new Point( (int)(Game.InputMgr.MouseState.X / Resolution.ScaleFactor), (int)((Game.InputMgr.MouseState.Y - Game.GraphicsDevice.Viewport.Y) / Resolution.ScaleFactor) ); if (!IsActive) { if (HoveredWidget != null) { HoveredWidget.OnMouseOut(mouseHitPoint); HoveredWidget = null; } if (mClickedWidget != null) { mClickedWidget.OnMouseUp(mouseHitPoint, miClickedWidgetMouseButton); mClickedWidget = null; } return; } //------------------------------------------------------------------ // Mouse buttons bool bHasMouseEvent = false; if (miIgnoreClickFrames == 0) { for (int iButton = 0; iButton < 3; iButton++) { if (Game.InputMgr.WasMouseButtonJustPressed(iButton)) { bHasMouseEvent = true; if (mClickedWidget == null) { miClickedWidgetMouseButton = iButton; Widget hitWidget = null; if (FocusedWidget != null) { hitWidget = FocusedWidget.HitTest(mouseHitPoint); } if (hitWidget == null) { hitWidget = Root.HitTest(mouseHitPoint); } while (hitWidget != null && !hitWidget.OnMouseDown(mouseHitPoint, iButton)) { hitWidget = hitWidget.Parent; } mClickedWidget = hitWidget; } } } if (Game.InputMgr.WasMouseJustDoubleClicked()) { bHasMouseEvent = true; Widget widget = FocusedWidget == null ? null : FocusedWidget.HitTest(mouseHitPoint); if (widget != null) { bool bPressed; switch (Game.InputMgr.PrimaryMouseButton) { case 0: bPressed = Game.InputMgr.MouseState.LeftButton == ButtonState.Pressed; break; case 2: bPressed = Game.InputMgr.MouseState.RightButton == ButtonState.Pressed; break; default: throw new NotSupportedException(); } if (bPressed) { mClickedWidget = widget; miClickedWidgetMouseButton = Game.InputMgr.PrimaryMouseButton; } if (widget.OnMouseDoubleClick(mouseHitPoint)) { miIgnoreClickFrames = 3; } } } } else { miIgnoreClickFrames--; } for (int iButton = 0; iButton < 3; iButton++) { if (Game.InputMgr.WasMouseButtonJustReleased(iButton)) { bHasMouseEvent = true; if (mClickedWidget != null && iButton == miClickedWidgetMouseButton) { mClickedWidget.OnMouseUp(mouseHitPoint, iButton); mClickedWidget = null; } } } if (!bHasMouseEvent) { Widget hoveredWidget = (FocusedWidget == null ? null : FocusedWidget.HitTest(mouseHitPoint)) ?? Root.HitTest(mouseHitPoint); if (mouseHitPoint != mPreviousMouseHitPoint) { if (mClickedWidget == null) { if (hoveredWidget != null && hoveredWidget == HoveredWidget) { HoveredWidget.OnMouseMove(mouseHitPoint); } else { if (HoveredWidget != null) { HoveredWidget.OnMouseOut(mouseHitPoint); } HoveredWidget = hoveredWidget; if (HoveredWidget != null) { HoveredWidget.OnMouseEnter(mouseHitPoint); } } } else { mClickedWidget.OnMouseMove(mouseHitPoint); } } } // Mouse wheel int iWheelDelta = Game.InputMgr.GetMouseWheelDelta(); if (iWheelDelta != 0) { Widget hoveredWidget = (FocusedWidget == null ? null : FocusedWidget.HitTest(mouseHitPoint)) ?? Root.HitTest(mouseHitPoint); if (hoveredWidget != null) { hoveredWidget.OnMouseWheel(mouseHitPoint, iWheelDelta); } } mPreviousMouseHitPoint = mouseHitPoint; //------------------------------------------------------------------ // Keyboard if (FocusedWidget != null) { foreach (char character in Game.InputMgr.EnteredText) { FocusedWidget.OnTextEntered(character); } if (Game.InputMgr.JustPressedOSKeys.Contains(OSKey.Enter) || Game.InputMgr.JustPressedOSKeys.Contains(OSKey.Return) || Game.InputMgr.JustPressedOSKeys.Contains(OSKey.Space)) { if (FocusedWidget.OnActivateDown()) { mbHasActivatedFocusedWidget = true; } } else if (Game.InputMgr.JustReleasedOSKeys.Contains(OSKey.Enter) || Game.InputMgr.JustReleasedOSKeys.Contains(OSKey.Return) || Game.InputMgr.JustReleasedOSKeys.Contains(OSKey.Space)) { if (mbHasActivatedFocusedWidget) { FocusedWidget.OnActivateUp(); mbHasActivatedFocusedWidget = false; } } if (Game.InputMgr.WasKeyJustPressed(Keys.Left)) { FocusedWidget.OnPadMove(UI.Direction.Left); } if (Game.InputMgr.WasKeyJustPressed(Keys.Right)) { FocusedWidget.OnPadMove(UI.Direction.Right); } if (Game.InputMgr.WasKeyJustPressed(Keys.Up)) { FocusedWidget.OnPadMove(UI.Direction.Up); } if (Game.InputMgr.WasKeyJustPressed(Keys.Down)) { FocusedWidget.OnPadMove(UI.Direction.Down); } foreach (Keys key in Game.InputMgr.JustPressedKeys) { FocusedWidget.OnKeyPress(key); } foreach (var key in Game.InputMgr.JustPressedOSKeys) { FocusedWidget.OnOSKeyPress(key); } } }
public override bool OnKeyDown(KeyboardKeyEventArgs e) { //Console.WriteLine (e.Key); if (SelectedMenu != null) { if (e.Key == Key.Escape) { SelectedMenu = null; } else { if (ModifierKeys.AltPressed && SelectedMenu.OnKeyDown(e)) { Invalidate(); return(true); } } } /*** * else if (e.Key == Key.F10) { * Widget wmenu = MainMenuWidget; * if (wmenu != null) { * wmenu.Select (); * } * if (base.OnKeyDown (e)) { * Invalidate (); * return true; * } * } ***/ Widget formerlyFocusedWidget = FocusedWidget; try { if (FocusedWidget != null && FocusedWidget != this && FocusedWidget.OnKeyDown(e)) { return(true); } if (e.Key == OpenTK.Input.Key.Tab) { if (e.Shift) { SelectPrevWidget(); } else { SelectNextWidget(); } //this.LogVerbose ("Widget focused: {0}", FocusedWidget != null ? FocusedWidget.Name : "null"); return(true); } // bubble up from focused if (FocusedWidget != null) { Widget parent = FocusedWidget.Parent; while (parent != null && parent != this) { if (parent.OnKeyDown(e)) { return(true); } parent = parent.Parent; } } return(base.OnKeyDown(e)); } catch (Exception ex) { ex.LogError(); } finally { if ((FocusedWidget == null || FocusedWidget == this) && formerlyFocusedWidget != null && !formerlyFocusedWidget.IsDisposed) { formerlyFocusedWidget.Focus(); } } return(false); }