From eb079bd435ee3fb8a5af0a9a62a0278a96029430 Mon Sep 17 00:00:00 2001 From: Skylot <118523+skylot@users.noreply.github.com> Date: Mon, 23 Feb 2026 21:04:41 +0000 Subject: [PATCH] fix(gui): use UI thread for scroll in code (#2798) --- jadx-gui/src/main/java/jadx/gui/jobs/SilentTask.java | 4 ++-- jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/SilentTask.java b/jadx-gui/src/main/java/jadx/gui/jobs/SilentTask.java index 14d15b3d1..9a4110513 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/SilentTask.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/SilentTask.java @@ -9,8 +9,8 @@ import jadx.core.utils.tasks.TaskExecutor; public class SilentTask extends CancelableBackgroundTask { private final Runnable task; - public SilentTask(Runnable task) { - this.task = task; + public SilentTask(Runnable backgroundTask) { + this.task = backgroundTask; } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java b/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java index 6dff674b2..b9988f92f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/tab/TabbedPane.java @@ -221,6 +221,7 @@ public class TabbedPane extends JTabbedPane implements ITabStatesListener { } private @Nullable ContentPanel showCode(JumpPosition jumpPos) { + UiUtils.uiThreadGuard(); JNode jumpNode = jumpPos.getNode(); ContentPanel contentPanel = getTabByNode(jumpNode); if (contentPanel == null) { @@ -442,7 +443,9 @@ public class TabbedPane extends JTabbedPane implements ITabStatesListener { @Override public void onTabCodeJump(TabBlueprint blueprint, @Nullable JumpPosition prevPos, JumpPosition position) { // queue task to wait completion of loading tasks - mainWindow.getBackgroundExecutor().execute(new SilentTask(() -> showCode(position))); + mainWindow.getBackgroundExecutor().execute(new SilentTask(() -> { + UiUtils.uiRun(() -> showCode(position)); + })); } @Override