[FZE] Fix crash when double clicking edit layout (#12609)

This commit is contained in:
Jaime Bernardo
2021-08-04 15:23:28 +01:00
committed by GitHub
parent 7751fed39e
commit 37e130a1a8

View File

@@ -26,6 +26,7 @@ namespace FancyZonesEditor
private LayoutModel _backup; private LayoutModel _backup;
private ContentDialog _openedDialog; private ContentDialog _openedDialog;
private bool _openingDialog = false; // Is the dialog being opened.
public int WrapPanelItemSize { get; set; } = DefaultWrapPanelItemSize; public int WrapPanelItemSize { get; set; } = DefaultWrapPanelItemSize;
@@ -247,19 +248,32 @@ namespace FancyZonesEditor
private async void EditLayout_Click(object sender, RoutedEventArgs e) private async void EditLayout_Click(object sender, RoutedEventArgs e)
{ {
var dataContext = ((FrameworkElement)sender).DataContext; // Avoid trying to open the same dialog twice.
Select((LayoutModel)dataContext); if (!_openingDialog)
if (_settings.SelectedModel is GridLayoutModel grid)
{ {
_backup = new GridLayoutModel(grid); _openingDialog = true;
} try
else if (_settings.SelectedModel is CanvasLayoutModel canvas) {
{ var dataContext = ((FrameworkElement)sender).DataContext;
_backup = new CanvasLayoutModel(canvas); Select((LayoutModel)dataContext);
}
await EditLayoutDialog.ShowAsync(); if (_settings.SelectedModel is GridLayoutModel grid)
{
_backup = new GridLayoutModel(grid);
}
else if (_settings.SelectedModel is CanvasLayoutModel canvas)
{
_backup = new CanvasLayoutModel(canvas);
}
await EditLayoutDialog.ShowAsync();
}
catch
{
_openingDialog = false;
throw;
}
}
} }
private void EditZones_Click(object sender, RoutedEventArgs e) private void EditZones_Click(object sender, RoutedEventArgs e)
@@ -411,6 +425,7 @@ namespace FancyZonesEditor
private void Dialog_Closed(ContentDialog sender, ContentDialogClosedEventArgs args) private void Dialog_Closed(ContentDialog sender, ContentDialogClosedEventArgs args)
{ {
_openingDialog = false;
_openedDialog = null; _openedDialog = null;
} }