From 7bd1b147282a26a9f60d2a6036e190d3c8312f9b Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:40:47 +0000 Subject: [PATCH] fix(gui): skip window pos saving if not changed --- .../main/java/jadx/gui/settings/JadxSettings.java | 6 ++++-- .../java/jadx/gui/settings/WindowLocation.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java index e52ceb985..414bd0d4d 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -261,8 +261,10 @@ public class JadxSettings extends JadxCLIArgs { public void saveWindowPos(Window window) { WindowLocation pos = new WindowLocation(window.getClass().getSimpleName(), window.getBounds()); - windowPos.put(pos.getWindowId(), pos); - partialSync(settings -> settings.windowPos = windowPos); + WindowLocation prevPos = windowPos.put(pos.getWindowId(), pos); + if (prevPos == null || !prevPos.equals(pos)) { + partialSync(settings -> settings.windowPos = windowPos); + } } public boolean loadWindowPos(Window window) { diff --git a/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java b/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java index a7f955367..4c9adcee1 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/WindowLocation.java @@ -31,6 +31,21 @@ public class WindowLocation { this.bounds = bounds; } + @Override + public int hashCode() { + return windowId.hashCode(); + } + + @Override + public final boolean equals(Object o) { + if (o instanceof WindowLocation) { + WindowLocation that = (WindowLocation) o; + return windowId.equals(that.windowId) && bounds.equals(that.bounds); + } + return false; + + } + @Override public String toString() { return "WindowLocation{"