diff options
| author | Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com> | 2024-01-13 00:41:57 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-13 01:41:57 +0100 |
| commit | f037fcba9a5713e68cadbbf8a823913943ac2626 (patch) | |
| tree | bd9ea67a604b80a9801fa799a5e68f1af97c6c36 /src/Ryujinx.Ava/UI/Helpers | |
| parent | 59a0c7cfd86e618ea947e498448077ecc362e366 (diff) | |
Ava UI: Better Controller Applet (#5756)
* Start work on better Controller Applet
* Don’t require title
* UI improvements
* Border around TBD area
* Formatting
* Better SVGs
* Add missing margin
* Use Locale
* Rename function
* Make buttons ourselves
* Make the buttons do shit
* Formatting
* Adjust SVGs
* Fix Open Settings Window
* Make field readonly
* Final tweaks
* Update src/Ryujinx.Ava/UI/Applet/AvaHostUiHandler.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Apply suggestions from code review
Co-authored-by: Ac_K <Acoustik666@gmail.com>
* Update src/Ryujinx.Ava/UI/Applet/ControllerAppletDialog.axaml.cs
Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
* Move icons to Ava project
* Reorder arguments
* Try to focus Settings Window
* Fix icons
Project shenangians
* Add ContentDialogHelper.ShowWindowAsync method
* Fix closed SettingsWindow reference in MainWindow
* Fix SettingsWindow dialog
* Suggestion
---------
Co-authored-by: Ac_K <Acoustik666@gmail.com>
Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
Diffstat (limited to 'src/Ryujinx.Ava/UI/Helpers')
| -rw-r--r-- | src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs b/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs index 086de953..a57deb1a 100644 --- a/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs +++ b/src/Ryujinx.Ava/UI/Helpers/ContentDialogHelper.cs @@ -18,6 +18,7 @@ namespace Ryujinx.Ava.UI.Helpers public static class ContentDialogHelper { private static bool _isChoiceDialogOpen; + private static ContentDialogOverlayWindow _contentDialogOverlayWindow; private async static Task<UserResult> ShowContentDialog( string title, @@ -310,16 +311,20 @@ namespace Ryujinx.Ava.UI.Helpers public static async Task<ContentDialogResult> ShowAsync(ContentDialog contentDialog) { ContentDialogResult result; - - ContentDialogOverlayWindow contentDialogOverlayWindow = null; + bool isTopDialog = true; Window parent = GetMainWindow(); + if (_contentDialogOverlayWindow != null) + { + isTopDialog = false; + } + if (parent is MainWindow window) { parent.Activate(); - contentDialogOverlayWindow = new() + _contentDialogOverlayWindow = new ContentDialogOverlayWindow { Height = parent.Bounds.Height, Width = parent.Bounds.Width, @@ -331,14 +336,14 @@ namespace Ryujinx.Ava.UI.Helpers void OverlayOnPositionChanged(object sender, PixelPointEventArgs e) { - contentDialogOverlayWindow.Position = parent.PointToScreen(new Point()); + _contentDialogOverlayWindow.Position = parent.PointToScreen(new Point()); } - contentDialogOverlayWindow.ContentDialog = contentDialog; + _contentDialogOverlayWindow.ContentDialog = contentDialog; bool opened = false; - contentDialogOverlayWindow.Opened += OverlayOnActivated; + _contentDialogOverlayWindow.Opened += OverlayOnActivated; async void OverlayOnActivated(object sender, EventArgs e) { @@ -349,12 +354,12 @@ namespace Ryujinx.Ava.UI.Helpers opened = true; - contentDialogOverlayWindow.Position = parent.PointToScreen(new Point()); + _contentDialogOverlayWindow.Position = parent.PointToScreen(new Point()); result = await ShowDialog(); } - result = await contentDialogOverlayWindow.ShowDialog<ContentDialogResult>(parent); + result = await _contentDialogOverlayWindow.ShowDialog<ContentDialogResult>(parent); } else { @@ -363,11 +368,11 @@ namespace Ryujinx.Ava.UI.Helpers async Task<ContentDialogResult> ShowDialog() { - if (contentDialogOverlayWindow is not null) + if (_contentDialogOverlayWindow is not null) { - result = await contentDialog.ShowAsync(contentDialogOverlayWindow); + result = await contentDialog.ShowAsync(_contentDialogOverlayWindow); - contentDialogOverlayWindow!.Close(); + _contentDialogOverlayWindow!.Close(); } else { @@ -379,15 +384,22 @@ namespace Ryujinx.Ava.UI.Helpers return result; } - if (contentDialogOverlayWindow is not null) + if (isTopDialog && _contentDialogOverlayWindow is not null) { - contentDialogOverlayWindow.Content = null; - contentDialogOverlayWindow.Close(); + _contentDialogOverlayWindow.Content = null; + _contentDialogOverlayWindow.Close(); } return result; } + public static Task ShowWindowAsync(Window dialogWindow, Window mainWindow = null) + { + mainWindow ??= GetMainWindow(); + + return dialogWindow.ShowDialog(_contentDialogOverlayWindow ?? mainWindow); + } + private static Window GetMainWindow() { if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime al) |
