diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dfdec3ac..c09b38ba8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file. - #1260, #1438 AS1/2 direct editing on(xxx), onClipEvent(xxx) handlers - #1366, #1409, #1429, #1573, #1598 AS1/2/3 Add script/class (context menu on scripts folder) - Removing BUTTONCONDACTION, CLIPACTIONRECORD -- Removing whole AS1/2 script folders (frame, DefineSprite) +- Removing whole AS1/2 script folders (frame, DefineSprite, packages) - Removing AS3 scripts and whole packages - Japanese translation diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java index f4881309c..479374756 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java @@ -288,6 +288,11 @@ public class TagTreeContextMenu extends JPopupMenu { continue; } + if (item instanceof AS2Package) { + allDoNotHaveDependencies = false; + continue; + } + if (item instanceof CLIPACTIONRECORD) { continue; } @@ -306,6 +311,7 @@ public class TagTreeContextMenu extends JPopupMenu { continue; } + canRemove = false; break; } else { @@ -1290,6 +1296,13 @@ public class TagTreeContextMenu extends JPopupMenu { } } + private void getAllAS2PackageScriptPacks(AS2Package pkg, List out) { + out.addAll(pkg.scripts.values()); + for (AS2Package sub : pkg.subPackages.values()) { + getAllAS2PackageScriptPacks(sub, out); + } + } + private void removeItemActionPerformed(ActionEvent evt, boolean removeDependencies) { TreePath[] tpsArr = tagTree.getSelectionModel().getSelectionPaths(); @@ -1329,8 +1342,11 @@ public class TagTreeContextMenu extends JPopupMenu { itemsToRemove.add(item); itemsToRemoveParents.add(new Object()); itemsToRemoveSprites.add(new Object()); - } - if (item instanceof Tag) { + } else if (item instanceof AS2Package) { + itemsToRemove.add(item); + itemsToRemoveParents.add(new Object()); + itemsToRemoveSprites.add(new Object()); + } else if (item instanceof Tag) { tagsToRemove.add((Tag) item); } else if ((item instanceof TagScript) && (((TagScript) item).getTag() instanceof ASMSource)) { tagsToRemove.add(((TagScript) item).getTag()); @@ -1398,6 +1414,15 @@ public class TagTreeContextMenu extends JPopupMenu { } } } + if (item instanceof AS2Package) { + List subAsmSources = new ArrayList<>(); + getAllAS2PackageScriptPacks((AS2Package) item, subAsmSources); + for (ASMSource asmSource : subAsmSources) { + if (!itemsToRemove.contains(asmSource)) { + tagsToRemove.add((Tag) asmSource); + } + } + } } List abcsToPack = new ArrayList<>();