diff options
| author | TSRBerry <20988865+TSRBerry@users.noreply.github.com> | 2023-05-14 16:34:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-14 16:34:31 +0200 |
| commit | 22202be3946b5cb65511059e717af449168812f3 (patch) | |
| tree | 2a522674dec0f12dc10e851c56f3969f91b6e943 /src/Ryujinx.Ava | |
| parent | 17ba217940aa287821bd8f1e5d93e22b58998617 (diff) | |
[GUI] Fix always hide cursor mode not hiding the cursor until it was moved (#4927)
* gtk: Add missing isMouseInClient check for hide-cursor
* ava: Add missing events and default isCursorInRenderer to true
This is necessary because we don't receive a initial PointerEnter event for some reason.
Diffstat (limited to 'src/Ryujinx.Ava')
| -rw-r--r-- | src/Ryujinx.Ava/AppHost.cs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/Ryujinx.Ava/AppHost.cs b/src/Ryujinx.Ava/AppHost.cs index 795c3f7a..f3e90ef1 100644 --- a/src/Ryujinx.Ava/AppHost.cs +++ b/src/Ryujinx.Ava/AppHost.cs @@ -86,7 +86,7 @@ namespace Ryujinx.Ava private KeyboardHotkeyState _prevHotkeyState; private long _lastCursorMoveTime; - private bool _isCursorInRenderer; + private bool _isCursorInRenderer = true; private bool _isStopped; private bool _isActive; @@ -160,7 +160,9 @@ namespace Ryujinx.Ava ConfigurationState.Instance.HideCursor.Event += HideCursorState_Changed; - _topLevel.PointerMoved += TopLevel_PointerMoved; + _topLevel.PointerMoved += TopLevel_PointerEnterOrMoved; + _topLevel.PointerEnter += TopLevel_PointerEnterOrMoved; + _topLevel.PointerLeave += TopLevel_PointerLeave; if (OperatingSystem.IsWindows()) { @@ -183,7 +185,7 @@ namespace Ryujinx.Ava _gpuCancellationTokenSource = new CancellationTokenSource(); } - private void TopLevel_PointerMoved(object sender, PointerEventArgs e) + private void TopLevel_PointerEnterOrMoved(object sender, PointerEventArgs e) { if (sender is MainWindow window) { @@ -201,6 +203,12 @@ namespace Ryujinx.Ava } } } + + private void TopLevel_PointerLeave(object sender, PointerEventArgs e) + { + _isCursorInRenderer = false; + } + private void UpdateScalingFilterLevel(object sender, ReactiveEventArgs<int> e) { _renderer.Window?.SetScalingFilter((Graphics.GAL.ScalingFilter)ConfigurationState.Instance.Graphics.ScalingFilter.Value); @@ -446,7 +454,9 @@ namespace Ryujinx.Ava ConfigurationState.Instance.Graphics.ScalingFilterLevel.Event -= UpdateScalingFilterLevel; ConfigurationState.Instance.Graphics.AntiAliasing.Event -= UpdateAntiAliasing; - _topLevel.PointerMoved -= TopLevel_PointerMoved; + _topLevel.PointerMoved -= TopLevel_PointerEnterOrMoved; + _topLevel.PointerEnter -= TopLevel_PointerEnterOrMoved; + _topLevel.PointerLeave -= TopLevel_PointerLeave; _gpuCancellationTokenSource.Cancel(); _gpuCancellationTokenSource.Dispose(); |
