mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Profile editor - Fix closing brush/effect config dialogs
This commit is contained in:
parent
eac08050bc
commit
3e1fc76bfe
1
src/.idea/.idea.Artemis/.idea/avalonia.xml
generated
1
src/.idea/.idea.Artemis/.idea/avalonia.xml
generated
@ -24,6 +24,7 @@
|
|||||||
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Tree/ContentDialogs/SidebarCategoryEditView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Tree/ContentDialogs/SidebarCategoryEditView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
||||||
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Tree/TreeGroupView.axaml" value="Artemis.UI.Windows/Artemis.UI.Windows.csproj" />
|
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Tree/TreeGroupView.axaml" value="Artemis.UI.Windows/Artemis.UI.Windows.csproj" />
|
||||||
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Tree/TreePropertyView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Tree/TreePropertyView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
||||||
|
<entry key="Artemis.UI/Screens/ProfileEditor/Panels/Properties/Windows/EffectConfigurationWindowView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
||||||
<entry key="Artemis.UI/Screens/Settings/Tabs/GeneralTabView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
<entry key="Artemis.UI/Screens/Settings/Tabs/GeneralTabView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
||||||
<entry key="Artemis.UI/Screens/Sidebar/ContentDialogs/SidebarCategoryEditView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
<entry key="Artemis.UI/Screens/Sidebar/ContentDialogs/SidebarCategoryEditView.axaml" value="Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
||||||
<entry key="Avalonia/Artemis.UI/Screens/Debugger/Tabs/Render/RenderDebugView.axaml" value="Avalonia/Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
<entry key="Avalonia/Artemis.UI/Screens/Debugger/Tabs/Render/RenderDebugView.axaml" value="Avalonia/Artemis.UI.Linux/Artemis.UI.Linux.csproj" />
|
||||||
|
|||||||
@ -4,7 +4,7 @@ using Avalonia.Markup.Xaml;
|
|||||||
|
|
||||||
namespace Artemis.UI.Screens.ProfileEditor.Properties.Windows;
|
namespace Artemis.UI.Screens.ProfileEditor.Properties.Windows;
|
||||||
|
|
||||||
public class BrushConfigurationWindowView : ReactiveCoreWindow<EffectConfigurationWindowViewModel>
|
public class BrushConfigurationWindowView : ReactiveCoreWindow<BrushConfigurationWindowViewModel>
|
||||||
{
|
{
|
||||||
public BrushConfigurationWindowView()
|
public BrushConfigurationWindowView()
|
||||||
{
|
{
|
||||||
@ -20,8 +20,11 @@ public class BrushConfigurationWindowView : ReactiveCoreWindow<EffectConfigurati
|
|||||||
Closing += OnClosing;
|
Closing += OnClosing;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnClosing(object? sender, CancelEventArgs e)
|
private async void OnClosing(object? sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
e.Cancel = ViewModel?.CanClose() ?? true;
|
if (ViewModel == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
e.Cancel = !await ViewModel.CanClose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Artemis.UI.Shared;
|
using Artemis.UI.Shared;
|
||||||
using Artemis.UI.Shared.LayerBrushes;
|
using Artemis.UI.Shared.LayerBrushes;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
@ -18,14 +19,15 @@ public class BrushConfigurationWindowViewModel : DialogViewModelBase<object?>
|
|||||||
public BrushConfigurationViewModel ConfigurationViewModel { get; }
|
public BrushConfigurationViewModel ConfigurationViewModel { get; }
|
||||||
public LayerBrushConfigurationDialog Configuration { get; }
|
public LayerBrushConfigurationDialog Configuration { get; }
|
||||||
|
|
||||||
public bool CanClose()
|
public async Task<bool> CanClose()
|
||||||
{
|
{
|
||||||
return ConfigurationViewModel.CanClose() && Dispatcher.UIThread.InvokeAsync(async () => await ConfigurationViewModel.CanCloseAsync()).GetAwaiter().GetResult();
|
// ReSharper disable once MethodHasAsyncOverload - Checking both in case the plugin developer only implemented CanClose
|
||||||
|
return ConfigurationViewModel.CanClose() && await ConfigurationViewModel.CanCloseAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConfigurationViewModelOnCloseRequested(object? sender, EventArgs e)
|
private async void ConfigurationViewModelOnCloseRequested(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (CanClose())
|
if (await CanClose())
|
||||||
Close(null);
|
Close(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -20,8 +20,11 @@ public class EffectConfigurationWindowView : ReactiveCoreWindow<EffectConfigurat
|
|||||||
Closing += OnClosing;
|
Closing += OnClosing;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnClosing(object? sender, CancelEventArgs e)
|
private async void OnClosing(object? sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
e.Cancel = ViewModel?.CanClose() ?? true;
|
if (ViewModel == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
e.Cancel = !await ViewModel.CanClose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using Artemis.UI.Shared;
|
using Artemis.UI.Shared;
|
||||||
using Artemis.UI.Shared.LayerEffects;
|
using Artemis.UI.Shared.LayerEffects;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
@ -18,14 +19,15 @@ public class EffectConfigurationWindowViewModel : DialogViewModelBase<object?>
|
|||||||
public EffectConfigurationViewModel ConfigurationViewModel { get; }
|
public EffectConfigurationViewModel ConfigurationViewModel { get; }
|
||||||
public LayerEffectConfigurationDialog Configuration { get; }
|
public LayerEffectConfigurationDialog Configuration { get; }
|
||||||
|
|
||||||
public bool CanClose()
|
public async Task<bool> CanClose()
|
||||||
{
|
{
|
||||||
return ConfigurationViewModel.CanClose() && Dispatcher.UIThread.InvokeAsync(async () => await ConfigurationViewModel.CanCloseAsync()).GetAwaiter().GetResult();
|
// ReSharper disable once MethodHasAsyncOverload - Checking both in case the plugin developer only implemented CanClose
|
||||||
|
return ConfigurationViewModel.CanClose() && await ConfigurationViewModel.CanCloseAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ConfigurationViewModelOnCloseRequested(object? sender, EventArgs e)
|
private async void ConfigurationViewModelOnCloseRequested(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (CanClose())
|
if (await CanClose())
|
||||||
Close(null);
|
Close(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user