private static int GetActiveForm(EFD.Point p) { for (int i = 0; i < Forms.Count; i++) { if (p.X >= Forms[i].Bounds.Left && p.X < Forms[i].Bounds.Right && p.Y >= Forms[i].Bounds.Top && p.Y < Forms[i].Bounds.Bottom && Forms[i].Visible && Forms[i].Enabled) { return(i); } } return(-1); }
private void Update(bool hasFocus, GameTime gt) { // We should only process things that require input if the game is focused, the form is visible, and the form is enabled. if (Enabled && Visible && hasFocus) { if (MouseStateManager.MouseStateNow.X >= Bounds.Left && MouseStateManager.MouseStateNow.X < Bounds.Right && MouseStateManager.MouseStateNow.Y >= Bounds.Top && MouseStateManager.MouseStateNow.Y < Bounds.Bottom) { if (MouseStateManager.MouseStateNow.LeftButton == ButtonState.Pressed || MouseStateManager.MouseStateNow.RightButton == ButtonState.Pressed) { Select(); } if (MouseStateManager.WentUp(MouseButtons.Left)) { if (DateTime.UtcNow - _clickStart <= _clickTrigger) { OnClick(new EventArgs()); } _inDrag = false; OnMouseUp(new MouseEventArgs(MouseButtons.Left, 0, MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y, MouseStateManager.MouseStateNow.ScrollWheelValue - MouseStateManager.MouseStatePrevious.ScrollWheelValue)); } else if (MouseStateManager.WentDown(MouseButtons.Left)) { _clickStart = DateTime.UtcNow; if (ShowTitleBar) { if (MouseStateManager.MouseStateNow.X >= Bounds.Left && MouseStateManager.MouseStateNow.X < Bounds.Right && MouseStateManager.MouseStateNow.Y >= Location.Y && MouseStateManager.MouseStateNow.Y < Location.Y + TitleBarHeight) { _dragMouseStart = new EFD.Point(MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y); _dragPosStart = Location; _inDrag = true; } } OnMouseDown(new MouseEventArgs(MouseButtons.Left, 0, MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y, MouseStateManager.MouseStateNow.ScrollWheelValue - MouseStateManager.MouseStatePrevious.ScrollWheelValue)); } } if (MouseStateManager.MouseStateNow.LeftButton == ButtonState.Pressed) { if (AllowDrag && _inDrag && ShowTitleBar) { Location = _dragPosStart + new EFD.Size(MouseStateManager.MouseStateNow.X - _dragMouseStart.X, MouseStateManager.MouseStateNow.Y - _dragMouseStart.Y); } } foreach (var c in Controls) { var updateableControl = c as IUpdateableControl; updateableControl?.Update(c == ActiveControl, gt); } } else if (Enabled && Visible) { // Down here we can do any updating that doesn't require input. The form must be both Enabled and Visible for us to do anything. } }
private void Update(bool hasFocus, GameTime gt) { // We should only process things that require input if the game is focused, the form is visible, and the form is enabled. if (Enabled && Visible && hasFocus) { if (MouseStateManager.MouseStateNow.X >= Bounds.Left && MouseStateManager.MouseStateNow.X < Bounds.Right && MouseStateManager.MouseStateNow.Y >= Bounds.Top && MouseStateManager.MouseStateNow.Y < Bounds.Bottom) { if (MouseStateManager.MouseStateNow.LeftButton == ButtonState.Pressed || MouseStateManager.MouseStateNow.RightButton == ButtonState.Pressed) { Select(); SelectControl(this, MouseStateManager.MouseStateNow); } if (MouseStateManager.WentUp(MouseButtons.Left)) { if (DateTime.UtcNow - _clickStart <= _clickTrigger) { OnClick(new MouseEventArgs(MouseStateManager.ButtonsDown(), 1, MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y, 0)); } _inDrag = false; OnMouseUp(new MouseEventArgs(MouseButtons.Left, 0, MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y, MouseStateManager.MouseStateNow.ScrollWheelValue - MouseStateManager.MouseStatePrevious.ScrollWheelValue)); } else if (MouseStateManager.WentDown(MouseButtons.Left)) { _clickStart = DateTime.UtcNow; if (ShowTitleBar) { if (MouseStateManager.MouseStateNow.X >= Bounds.Left && MouseStateManager.MouseStateNow.X < Bounds.Right && MouseStateManager.MouseStateNow.Y >= Location.Y && MouseStateManager.MouseStateNow.Y < Location.Y + TitleBarHeight) { _dragMouseStart = new EFD.Point(MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y); _dragPosStart = Location; _inDrag = true; } } OnMouseDown(new MouseEventArgs(MouseButtons.Left, 0, MouseStateManager.MouseStateNow.X, MouseStateManager.MouseStateNow.Y, MouseStateManager.MouseStateNow.ScrollWheelValue - MouseStateManager.MouseStatePrevious.ScrollWheelValue)); } } if (MouseStateManager.MouseStateNow.LeftButton == ButtonState.Pressed) { if (AllowDrag && _inDrag && ShowTitleBar) { Location = _dragPosStart + new EFD.Size(MouseStateManager.MouseStateNow.X - _dragMouseStart.X, MouseStateManager.MouseStateNow.Y - _dragMouseStart.Y); } } foreach (var c in Controls) { var updateableControl = c as IUpdateableControl; updateableControl?.Update(c == ActiveControl, gt); } } else if (Enabled && Visible) { // Down here we can do any updating that doesn't require input. The form must be both Enabled and Visible for us to do anything. } }