From a43fadb8cf1c82552a849abd8e401dcc8ffe52bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 20 Nov 2022 12:39:15 +0100 Subject: [PATCH] Fixed flattening switch for ABCs --- .../com/jpexs/decompiler/flash/timeline/AS3Package.java | 9 ++++++--- src/com/jpexs/decompiler/flash/gui/MainPanel.java | 2 +- .../flash/gui/taglistview/TagListTreeModel.java | 4 ++-- .../decompiler/flash/gui/tagtree/AbstractTagTree.java | 2 +- .../flash/gui/tagtree/AbstractTagTreeModel.java | 3 ++- .../jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java | 7 ++++--- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS3Package.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS3Package.java index 2550186d9..c6a340d1c 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS3Package.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/AS3Package.java @@ -112,7 +112,7 @@ public class AS3Package extends AS3ClassTreeItem { public List getAllChildren() { List result = new ArrayList<>(getChildCount()); result.addAll(subPackages.values()); - result.addAll(scripts.values()); + result.addAll(getScriptPacks()); return result; } @@ -122,11 +122,14 @@ public class AS3Package extends AS3ClassTreeItem { } index -= subPackages.size(); - return getScriptPacks().get(index); + if (index < getScriptPacks().size()) { + return getScriptPacks().get(index); + } + return null; } public int getChildCount() { - return subPackages.size() + scripts.size(); + return subPackages.size() + getScriptPacks().size(); } public int getIndexOfChild(AS3ClassTreeItem child) { diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 2160c3ef6..b5b6c27cb 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -3737,7 +3737,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (this.openables.contains(treeItemSwf.openableList)) { setTagTreeSelectedNode(getCurrentTree(), treeItem); } - } else { + } else if (openable != null) { if (this.openables.contains(openable.getOpenableList())) { setTagTreeSelectedNode(getCurrentTree(), treeItem); } diff --git a/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java b/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java index 81ab66cb8..2835e5f9b 100644 --- a/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/taglistview/TagListTreeModel.java @@ -350,9 +350,9 @@ public class TagListTreeModel extends AbstractTagTreeModel { } @Override - public void updateSwf(SWF swf) { + public void updateOpenable(Openable openable) { swfHeaders.clear(); - TreePath changedPath = getTreePath(swf == null ? root : swf); + TreePath changedPath = getTreePath(openable == null ? root : openable); fireTreeStructureChanged(new TreeModelEvent(this, changedPath)); calculateCollisions(); } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java index 3d3f0e26e..95dde4289 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTree.java @@ -584,7 +584,7 @@ public abstract class AbstractTagTree extends JTree { AbstractTagTreeModel ttm = getModel(); if (ttm != null) { List> expandedNodes = View.getExpandedNodes(this); - ttm.updateSwf(null); // todo: honfika: update only the changed swfs, but there was an exception when i tried it + ttm.updateOpenable(null); // todo: honfika: update only the changed swfs, but there was an exception when i tried it View.expandTreeNodes(this, expandedNodes); } } diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java index 65cfac44e..8ff83518b 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/AbstractTagTreeModel.java @@ -22,6 +22,7 @@ import com.jpexs.decompiler.flash.tags.Tag; import com.jpexs.decompiler.flash.timeline.Frame; import com.jpexs.decompiler.flash.timeline.TagScript; import com.jpexs.decompiler.flash.timeline.Timelined; +import com.jpexs.decompiler.flash.treeitems.Openable; import com.jpexs.decompiler.flash.treeitems.TreeItem; import java.util.ArrayList; import java.util.HashMap; @@ -171,7 +172,7 @@ public abstract class AbstractTagTreeModel implements TreeModel { public void valueForPathChanged(TreePath path, Object newValue) { } - public abstract void updateSwf(SWF swf); + public abstract void updateOpenable(Openable openable); public TreeItem getParent(TreeItem obj) { return (TreeItem)getTreePath(obj).getParentPath().getLastPathComponent(); diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java index d064b5b47..7d2355945 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeModel.java @@ -155,10 +155,11 @@ public class TagTreeModel extends AbstractTagTreeModel { } @Override - public void updateSwf(SWF swf) { + public void updateOpenable(Openable openable) { swfInfos.clear(); - TreePath changedPath = getTreePath(swf == null ? root : swf); - fireTreeStructureChanged(new TreeModelEvent(this, changedPath)); + abcClassesTree.clear(); + TreePath changedPath = getTreePath(openable == null ? root : openable); + fireTreeStructureChanged(new TreeModelEvent(this, changedPath)); calculateCollisions(); }