[ImageResizer] Workaround for exception in wpf ui. (#30225)

* [ImageResizer] Workaround for exception in wpf ui.

* Adding try catch to the other 3 places the SystemThemeWatcher is used.
Rearranging code in Image Resizer, which might solve the issue.
This commit is contained in:
Laszlo Nemeth 2023-12-07 10:57:30 +01:00 коммит произвёл GitHub
Родитель e10733efe0
Коммит 197a8ae120
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 45 добавлений и 6 удалений

Просмотреть файл

@ -49,7 +49,17 @@ public partial class OCROverlay : Window
Top = screenRectangle.Top >= 0 ? screenRectangle.Top : screenRectangle.Top + (screenRectangle.Height / 2);
InitializeComponent();
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this, Wpf.Ui.Controls.WindowBackdropType.None);
// workaround for #30177
try
{
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this, Wpf.Ui.Controls.WindowBackdropType.None);
}
catch (Exception ex)
{
Logger.LogError($"Exception in SystemThemeWatcher.Watch, issue 30177. {ex.Message}");
}
PopulateLanguageMenu();
}

Просмотреть файл

@ -7,6 +7,7 @@ using System.Collections.Generic;
using System.Linq;
using Common.UI;
using ImageResizer.ViewModels;
using ManagedCommon;
using Microsoft.Win32;
using Wpf.Ui.Controls;
using AppResources = ImageResizer.Properties.Resources;
@ -18,7 +19,8 @@ namespace ImageResizer.Views
public MainWindow(MainViewModel viewModel)
{
DataContext = viewModel;
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this);
InitializeComponent();
if (OSVersionHelper.IsWindows11())
{
@ -29,7 +31,15 @@ namespace ImageResizer.Views
WindowBackdropType = WindowBackdropType.None;
}
InitializeComponent();
// workaround for #30177
try
{
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this, WindowBackdropType);
}
catch (Exception ex)
{
Logger.LogError($"Exception in SystemThemeWatcher.Watch, issue 30177. {ex.Message}");
}
}
public IEnumerable<string> OpenPictureFiles()

Просмотреть файл

@ -56,8 +56,6 @@ namespace PowerLauncher
_settings = settings;
InitializeComponent();
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this);
if (OSVersionHelper.IsWindows11())
{
WindowBackdropType = Wpf.Ui.Controls.WindowBackdropType.Acrylic;
@ -67,6 +65,16 @@ namespace PowerLauncher
WindowBackdropType = Wpf.Ui.Controls.WindowBackdropType.None;
}
// workaround for #30217
try
{
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this, WindowBackdropType);
}
catch (Exception ex)
{
Log.Exception("Exception in SystemThemeWatcher.Watch, issue 30217.", ex, GetType());
}
_firstDeleteTimer.Elapsed += CheckForFirstDelete;
_firstDeleteTimer.Interval = 1000;
NativeEventWaiter.WaitForEventLoop(

Просмотреть файл

@ -5,6 +5,7 @@
using System;
using System.ComponentModel;
using System.Windows;
using ManagedCommon;
using Wpf.Ui.Controls;
using Point = PowerAccent.Core.Point;
using Size = PowerAccent.Core.Size;
@ -38,7 +39,17 @@ public partial class Selector : FluentWindow, IDisposable, INotifyPropertyChange
public Selector()
{
InitializeComponent();
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this);
// workaround for #30177
try
{
Wpf.Ui.Appearance.SystemThemeWatcher.Watch(this);
}
catch (Exception ex)
{
Logger.LogError($"Exception in SystemThemeWatcher.Watch, issue 30177. {ex.Message}");
}
Application.Current.MainWindow.ShowActivated = false;
Application.Current.MainWindow.Topmost = true;
}