A game framework written with osu! in mind.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'fix-mouse-from-touch-broken-for-mouse-buttons' into fix-touch-input-handleable-by-more

+35 -2
+29 -2
osu.Framework.Tests/Visual/Input/TestSceneTouchInput.cs
··· 344 344 }); 345 345 AddAssert("no mouse event received", () => primaryReceptor.MouseEvents.Count == 0); 346 346 347 - AddStep("perform mouse move input", () => InputManager.MoveMouseTo(getTouchDownPos(TouchSource.Touch1))); 348 - AddAssert("mouse event received", () => primaryReceptor.MouseEvents.Single() is MouseMoveEvent); 347 + AddStep("perform input on mouse", () => 348 + { 349 + InputManager.MoveMouseTo(getTouchDownPos(TouchSource.Touch1)); 350 + InputManager.PressButton(MouseButton.Left); 351 + InputManager.MoveMouseTo(getTouchMovePos(TouchSource.Touch1)); 352 + InputManager.ReleaseButton(MouseButton.Left); 353 + }); 354 + AddAssert("all mouse events received", () => 355 + { 356 + // mouse moved. 357 + if (!(primaryReceptor.MouseEvents.TryDequeue(out var me1) && me1 is MouseMoveEvent)) 358 + return false; 359 + 360 + // left down. 361 + if (!(primaryReceptor.MouseEvents.TryDequeue(out var me2) && me2 is MouseDownEvent)) 362 + return false; 363 + 364 + // mouse dragged with left. 365 + if (!(primaryReceptor.MouseEvents.TryDequeue(out var me3) && me3 is MouseMoveEvent)) 366 + return false; 367 + if (!(primaryReceptor.MouseEvents.TryDequeue(out var me4) && me4 is DragEvent)) 368 + return false; 369 + 370 + // left up. 371 + if (!(primaryReceptor.MouseEvents.TryDequeue(out var me5) && me5 is MouseUpEvent)) 372 + return false; 373 + 374 + return primaryReceptor.MouseEvents.Count == 0; 375 + }); 349 376 } 350 377 351 378 [Test]
+6
osu.Framework/Input/StateChanges/MouseButtonInput.cs
··· 25 25 } 26 26 27 27 protected override ButtonStates<MouseButton> GetButtonStates(InputState state) => state.Mouse.Buttons; 28 + 29 + public override void Apply(InputState state, IInputStateChangeHandler handler) 30 + { 31 + state.Mouse.LastSource = this; 32 + base.Apply(state, handler); 33 + } 28 34 } 29 35 }