From a541eb0a6ce387ee206805af4df473cd1a88b0e0 Mon Sep 17 00:00:00 2001 From: Kang Yu Date: Sat, 21 Sep 2024 23:46:37 -0700 Subject: [PATCH] catch exception in resolving window handle collision --- .../Common/PersistentWindowProcessor.cs | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs index 5cdb992..4225617 100644 --- a/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs +++ b/Ninjacrab.PersistentWindows.Solution/Common/PersistentWindowProcessor.cs @@ -1168,6 +1168,20 @@ namespace PersistentWindows.Common } private void ResolveWindowHandleCollision(IntPtr hwnd) + { + if (resolveHwndConflict) + { + try + { + ResolveWindowHandleCollisionCore(hwnd); + } catch (Exception ex) + { + Log.Error(ex.ToString()); + } + } + } + + private void ResolveWindowHandleCollisionCore(IntPtr hwnd) { bool found_conflict = false; string process_name = ""; @@ -2924,22 +2938,16 @@ namespace PersistentWindows.Common IntPtr kid = FindMatchingKilledWindow(hwnd); if (kid == IntPtr.Zero) { - if (resolveHwndConflict) - { - try - { - ResolveWindowHandleCollision(hwnd); - } catch (Exception ex) - { - Log.Error(ex.ToString()); - } - } + ResolveWindowHandleCollision(hwnd); } else { InheritKilledWindow(hwnd, kid); if (hwnd != kid) + { Log.Error($"Inherit position data from killed window 0x{kid.ToString("X")} for {curDisplayMetrics.Title}"); + ResolveWindowHandleCollision(hwnd); + } else Log.Error($"Inherit position data from existing window 0x{kid.ToString("X")} for {curDisplayMetrics.Title}"); }