From 57c8d55040a9a2936174a0155abb95d360952a97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 21 Nov 2022 18:38:18 +0100 Subject: [PATCH] Fixed Close action from menu not available on bundles (zip, etc...) --- CHANGELOG.md | 1 + .../decompiler/flash/gui/MainFrameMenu.java | 27 +++++++++++++++---- .../flash/gui/tagtree/TagTreeContextMenu.java | 6 +++-- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffb9c97bd..ab9e73190 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Fixed - [#1880] JPEG Fixer +- Close action from menu not available on bundles (zip, etc...) ## [17.0.0] - 2022-11-20 ### Added diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index 5fe70c23d..69c8d42a3 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -240,10 +240,23 @@ public abstract class MainFrameMenu implements MenuBuilder { return; } - if (openable == null) { - return; + for (TreeItem item : mainFrame.getPanel().getCurrentTree().getSelected()) { + if (item instanceof SWF) { + SWF swf = (SWF) item; + if (swf.binaryData != null) { + // embedded swf + swf.binaryData.innerSwf = null; + swf.clearTagSwfs(); + } else { + Main.closeFile(swf.openableList); + } + } else if (item instanceof Openable) { + Main.closeFile(((Openable) item).getOpenableList()); + } else if (item instanceof OpenableList) { + Main.closeFile((OpenableList) item); + } } - Main.closeFile(openable.getOpenableList()); + mainFrame.getPanel().refreshTree(); openable = null; Timer timer = new Timer(); timer.schedule(new TimerTask() { @@ -804,12 +817,16 @@ public abstract class MainFrameMenu implements MenuBuilder { boolean allSameSwf = true; boolean allSameOpenable = true; + boolean openableOrListSelected = openable != null; if (mainPanel != null) { List items = mainPanel.getCurrentTree().getSelected(); SWF firstSwf = null; Openable firstOpenable = null; for (TreeItem item : items) { if (item instanceof OpenableList) { + if (items.size() == 1) { + openableOrListSelected = true; + } allSameSwf = false; break; } @@ -844,8 +861,8 @@ public abstract class MainFrameMenu implements MenuBuilder { setMenuEnabled("_/saveAs", openableSelected && !isWorking); setMenuEnabled("/file/saveAs", openableSelected && !isWorking); setMenuEnabled("/file/saveAsExe", swfSelected && !isWorking); - setMenuEnabled("_/close", openableSelected && !isWorking); - setMenuEnabled("/file/close", openableSelected && !isWorking); + setMenuEnabled("_/close", openableOrListSelected && !isWorking); + setMenuEnabled("/file/close", openableOrListSelected && !isWorking); setMenuEnabled("_/closeAll", swfLoaded && !isWorking); setMenuEnabled("/file/closeAll", swfLoaded && !isWorking); setMenuEnabled("/file/reload", openableSelected && !swfIsNew && !isWorking); diff --git a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java index 15311ea05..66a455d98 100644 --- a/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/tagtree/TagTreeContextMenu.java @@ -2551,14 +2551,16 @@ public class TagTreeContextMenu extends JPopupMenu { // embedded swf swf.binaryData.innerSwf = null; swf.clearTagSwfs(); - mainPanel.refreshTree(); } else { Main.closeFile(swf.openableList); } + } else if (item instanceof Openable) { + Main.closeFile(((Openable) item).getOpenableList()); } else if (item instanceof OpenableList) { Main.closeFile((OpenableList) item); } - } + } + mainPanel.refreshTree(); } private void cloneActionPerformed(ActionEvent e) {