From c14844d12c199894ba3ad75ff48802ad09f2b498 Mon Sep 17 00:00:00 2001 From: Ac_K Date: Sun, 22 Jan 2023 01:42:55 +0100 Subject: [PATCH] Ava UI: Various Fixes (#4326) * Ava UI: Various Fixes * use WriteAllBytes --- Ryujinx.Ava/AppHost.cs | 4 +- Ryujinx.Ava/UI/Renderer/EmbeddedWindow.cs | 113 ++++++++++-------- .../UI/ViewModels/TitleUpdateViewModel.cs | 26 +++- .../UI/Windows/TitleUpdateWindow.axaml.cs | 19 +-- 4 files changed, 88 insertions(+), 74 deletions(-) diff --git a/Ryujinx.Ava/AppHost.cs b/Ryujinx.Ava/AppHost.cs index fdeee2cc84..ad33d08c8d 100644 --- a/Ryujinx.Ava/AppHost.cs +++ b/Ryujinx.Ava/AppHost.cs @@ -231,7 +231,7 @@ namespace Ryujinx.Ava } } - private unsafe void Renderer_ScreenCaptured(object sender, ScreenCaptureImageInfo e) + private void Renderer_ScreenCaptured(object sender, ScreenCaptureImageInfo e) { if (e.Data.Length > 0 && e.Height > 0 && e.Width > 0) { @@ -240,7 +240,7 @@ namespace Ryujinx.Ava lock (_lockObject) { DateTime currentTime = DateTime.Now; - string filename = $"ryujinx_capture_{currentTime}-{currentTime:D2}-{currentTime:D2}_{currentTime:D2}-{currentTime:D2}-{currentTime:D2}.png"; + string filename = $"ryujinx_capture_{currentTime.Year}-{currentTime.Month:D2}-{currentTime.Day:D2}_{currentTime.Hour:D2}-{currentTime.Minute:D2}-{currentTime.Second:D2}.png"; string directory = AppDataManager.Mode switch { diff --git a/Ryujinx.Ava/UI/Renderer/EmbeddedWindow.cs b/Ryujinx.Ava/UI/Renderer/EmbeddedWindow.cs index 6cacfef49a..532f4dc271 100644 --- a/Ryujinx.Ava/UI/Renderer/EmbeddedWindow.cs +++ b/Ryujinx.Ava/UI/Renderer/EmbeddedWindow.cs @@ -140,68 +140,75 @@ namespace Ryujinx.Ava.UI.Renderer { if (VisualRoot != null) { - Point rootVisualPosition = this.TranslatePoint(new Point((long)lParam & 0xFFFF, (long)lParam >> 16 & 0xFFFF), VisualRoot).Value; - Pointer pointer = new(0, PointerType.Mouse, true); - - switch (msg) + if (msg == WindowsMessages.LBUTTONDOWN || + msg == WindowsMessages.RBUTTONDOWN || + msg == WindowsMessages.LBUTTONUP || + msg == WindowsMessages.RBUTTONUP || + msg == WindowsMessages.MOUSEMOVE) { - case WindowsMessages.LBUTTONDOWN: - case WindowsMessages.RBUTTONDOWN: - { - bool isLeft = msg == WindowsMessages.LBUTTONDOWN; - RawInputModifiers pointerPointModifier = isLeft ? RawInputModifiers.LeftMouseButton : RawInputModifiers.RightMouseButton; - PointerPointProperties properties = new(pointerPointModifier, isLeft ? PointerUpdateKind.LeftButtonPressed : PointerUpdateKind.RightButtonPressed); + Point rootVisualPosition = this.TranslatePoint(new Point((long)lParam & 0xFFFF, (long)lParam >> 16 & 0xFFFF), VisualRoot).Value; + Pointer pointer = new(0, PointerType.Mouse, true); - var evnt = new PointerPressedEventArgs( - this, - pointer, - VisualRoot, - rootVisualPosition, - (ulong)Environment.TickCount64, - properties, - KeyModifiers.None); + switch (msg) + { + case WindowsMessages.LBUTTONDOWN: + case WindowsMessages.RBUTTONDOWN: + { + bool isLeft = msg == WindowsMessages.LBUTTONDOWN; + RawInputModifiers pointerPointModifier = isLeft ? RawInputModifiers.LeftMouseButton : RawInputModifiers.RightMouseButton; + PointerPointProperties properties = new(pointerPointModifier, isLeft ? PointerUpdateKind.LeftButtonPressed : PointerUpdateKind.RightButtonPressed); - RaiseEvent(evnt); + var evnt = new PointerPressedEventArgs( + this, + pointer, + VisualRoot, + rootVisualPosition, + (ulong)Environment.TickCount64, + properties, + KeyModifiers.None); - break; - } - case WindowsMessages.LBUTTONUP: - case WindowsMessages.RBUTTONUP: - { - bool isLeft = msg == WindowsMessages.LBUTTONUP; - RawInputModifiers pointerPointModifier = isLeft ? RawInputModifiers.LeftMouseButton : RawInputModifiers.RightMouseButton; - PointerPointProperties properties = new(pointerPointModifier, isLeft ? PointerUpdateKind.LeftButtonReleased : PointerUpdateKind.RightButtonReleased); + RaiseEvent(evnt); - var evnt = new PointerReleasedEventArgs( - this, - pointer, - VisualRoot, - rootVisualPosition, - (ulong)Environment.TickCount64, - properties, - KeyModifiers.None, - isLeft ? MouseButton.Left : MouseButton.Right); + break; + } + case WindowsMessages.LBUTTONUP: + case WindowsMessages.RBUTTONUP: + { + bool isLeft = msg == WindowsMessages.LBUTTONUP; + RawInputModifiers pointerPointModifier = isLeft ? RawInputModifiers.LeftMouseButton : RawInputModifiers.RightMouseButton; + PointerPointProperties properties = new(pointerPointModifier, isLeft ? PointerUpdateKind.LeftButtonReleased : PointerUpdateKind.RightButtonReleased); - RaiseEvent(evnt); + var evnt = new PointerReleasedEventArgs( + this, + pointer, + VisualRoot, + rootVisualPosition, + (ulong)Environment.TickCount64, + properties, + KeyModifiers.None, + isLeft ? MouseButton.Left : MouseButton.Right); - break; - } - case WindowsMessages.MOUSEMOVE: - { - var evnt = new PointerEventArgs( - PointerMovedEvent, - this, - pointer, - VisualRoot, - rootVisualPosition, - (ulong)Environment.TickCount64, - new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.Other), - KeyModifiers.None); + RaiseEvent(evnt); - RaiseEvent(evnt); + break; + } + case WindowsMessages.MOUSEMOVE: + { + var evnt = new PointerEventArgs( + PointerMovedEvent, + this, + pointer, + VisualRoot, + rootVisualPosition, + (ulong)Environment.TickCount64, + new PointerPointProperties(RawInputModifiers.None, PointerUpdateKind.Other), + KeyModifiers.None); - break; - } + RaiseEvent(evnt); + + break; + } + } } } diff --git a/Ryujinx.Ava/UI/ViewModels/TitleUpdateViewModel.cs b/Ryujinx.Ava/UI/ViewModels/TitleUpdateViewModel.cs index 1bac942457..3d0b20f7e3 100644 --- a/Ryujinx.Ava/UI/ViewModels/TitleUpdateViewModel.cs +++ b/Ryujinx.Ava/UI/ViewModels/TitleUpdateViewModel.cs @@ -21,8 +21,9 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; -using SpanHelpers = LibHac.Common.SpanHelpers; +using System.Text; using Path = System.IO.Path; +using SpanHelpers = LibHac.Common.SpanHelpers; namespace Ryujinx.Ava.UI.ViewModels; @@ -90,6 +91,8 @@ public class TitleUpdateViewModel : BaseModel Selected = "", Paths = new List() }; + + Save(); } LoadUpdates(); @@ -102,6 +105,9 @@ public class TitleUpdateViewModel : BaseModel AddUpdate(path); } + // NOTE: Save the list again to remove leftovers. + Save(); + TitleUpdateModel selected = TitleUpdates.FirstOrDefault(x => x.Path == _titleUpdateWindowData.Selected, null); SelectedUpdate = selected; @@ -223,4 +229,22 @@ public class TitleUpdateViewModel : BaseModel SortUpdates(); } + + public void Save() + { + _titleUpdateWindowData.Paths.Clear(); + _titleUpdateWindowData.Selected = ""; + + foreach (TitleUpdateModel update in TitleUpdates) + { + _titleUpdateWindowData.Paths.Add(update.Path); + + if (update == SelectedUpdate) + { + _titleUpdateWindowData.Selected = update.Path; + } + } + + File.WriteAllBytes(_titleUpdateJsonPath, Encoding.UTF8.GetBytes(JsonHelper.Serialize(_titleUpdateWindowData, true))); + } } \ No newline at end of file diff --git a/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml.cs b/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml.cs index 41370e6693..1b50c46f38 100644 --- a/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml.cs +++ b/Ryujinx.Ava/UI/Windows/TitleUpdateWindow.axaml.cs @@ -60,24 +60,7 @@ namespace Ryujinx.Ava.UI.Windows public void Save(object sender, RoutedEventArgs e) { - ViewModel._titleUpdateWindowData.Paths.Clear(); - - ViewModel._titleUpdateWindowData.Selected = ""; - - foreach (TitleUpdateModel update in ViewModel.TitleUpdates) - { - ViewModel._titleUpdateWindowData.Paths.Add(update.Path); - - if (update == ViewModel.SelectedUpdate) - { - ViewModel._titleUpdateWindowData.Selected = update.Path; - } - } - - using (FileStream titleUpdateJsonStream = File.Create(ViewModel._titleUpdateJsonPath, 4096, FileOptions.WriteThrough)) - { - titleUpdateJsonStream.Write(Encoding.UTF8.GetBytes(JsonHelper.Serialize(ViewModel._titleUpdateWindowData, true))); - } + ViewModel.Save(); if (VisualRoot is MainWindow window) {