protected virtual void HandleMovement() { CursorMovementArgs cursorMovementArgs = new CursorMovementArgs(focusedControl, cursorPosition, cursorSize); // Tarkistetaan eka focus silti kontrollilta jolla se on viimeksi ollut. // Jos kontrolli menettää focuksen, etsitään seuraava. if (focusedControl != null && focusedControl.ContainsFocus) { focusedControl.HandleCursorMovement(cursorMovementArgs); if (focusedControl.ContainsFocus) { return; } } IEnumerable <Control> focusableControls = GetFocusableControls() .OrderByDescending(c => c.DrawOrder) .ToList(); foreach (Control control in focusableControls) { control.HandleCursorMovement(cursorMovementArgs); if (control.ContainsFocus) { focusedControl = control; break; } } if (focusableControls.Count(c => c.ContainsFocus) > 1) { throw new InvalidGuiOperationException("Only one control can contain focus."); } }
public GuiCursorMovementEventArgs(CursorMovementArgs cursorMovementArgs) : base() { CursorMovementArgs = cursorMovementArgs; }