Fixed #1897 Close menu button without selecting specific item

This commit is contained in:
Jindra Petřík
2022-12-02 19:21:45 +01:00
parent f3256a9db8
commit f706a2a593
2 changed files with 24 additions and 13 deletions

View File

@@ -237,6 +237,21 @@ public abstract class MainFrameMenu implements MenuBuilder {
}
}
private void enumerateListsToClose(Set<OpenableList> listsToClose, Openable openable) {
if (openable instanceof SWF) {
SWF swf = (SWF) openable;
if (swf.binaryData != null) {
// embedded swf
swf.binaryData.innerSwf = null;
swf.clearTagSwfs();
} else {
listsToClose.add(swf.openableList);
}
} else if (openable != null) {
listsToClose.add(openable.getOpenableList());
}
}
protected void closeActionPerformed(ActionEvent evt) {
if (Main.isWorking()) {
return;
@@ -247,20 +262,12 @@ public abstract class MainFrameMenu implements MenuBuilder {
listsToClose.add((OpenableList) item);
} else {
Openable itemOpenable = item.getOpenable();
if (itemOpenable instanceof SWF) {
SWF swf = (SWF) itemOpenable;
if (swf.binaryData != null) {
// embedded swf
swf.binaryData.innerSwf = null;
swf.clearTagSwfs();
} else {
listsToClose.add(swf.openableList);
}
} else if (itemOpenable != null) {
listsToClose.add(itemOpenable.getOpenableList());
}
enumerateListsToClose(listsToClose, itemOpenable);
}
}
if (openable != null) {
enumerateListsToClose(listsToClose, openable);
}
for (OpenableList list : listsToClose) {
Main.closeFile(list);
}