mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 04:50:46 +00:00
Fixed: Proper freeing memory after SWF close 2
This commit is contained in:
@@ -19,6 +19,7 @@ package com.jpexs.decompiler.flash.gui;
|
||||
import com.jpexs.decompiler.flash.configuration.Configuration;
|
||||
import com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTree;
|
||||
import com.jpexs.decompiler.flash.tags.Tag;
|
||||
import com.jpexs.decompiler.flash.treeitems.Openable;
|
||||
import com.jpexs.decompiler.flash.treeitems.TreeItem;
|
||||
import com.jpexs.helpers.SerializableImage;
|
||||
import java.awt.Color;
|
||||
@@ -174,12 +175,13 @@ public class FolderListPanel extends JPanel {
|
||||
selectedItems.clear();
|
||||
selectedIndex = -1;
|
||||
((JScrollPane) getParent().getParent()).getVerticalScrollBar().setValue(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
items = new ArrayList<>();
|
||||
selectedItems.clear();
|
||||
selectedIndex = -1;
|
||||
parentPath = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -171,7 +171,7 @@ public class FolderPreviewPanel extends JPanel {
|
||||
repaint();
|
||||
((JScrollPane) getParent().getParent()).getVerticalScrollBar().setValue(0);
|
||||
}
|
||||
|
||||
|
||||
public void clear() {
|
||||
items = new ArrayList<>();
|
||||
executor.shutdownNow();
|
||||
|
||||
@@ -103,6 +103,7 @@ import javax.swing.plaf.basic.BasicTreeUI;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.DefaultTreeCellRenderer;
|
||||
import javax.swing.tree.DefaultTreeModel;
|
||||
import javax.swing.tree.DefaultTreeSelectionModel;
|
||||
import javax.swing.tree.TreeCellEditor;
|
||||
import javax.swing.tree.TreeModel;
|
||||
import javax.swing.tree.TreePath;
|
||||
@@ -761,6 +762,7 @@ public class GenericTagTreePanel extends GenericTagPanel {
|
||||
tag = null;
|
||||
editedTag = null;
|
||||
tree.setModel(new DefaultTreeModel(new DefaultMutableTreeNode("root")));
|
||||
tree.setSelectionModel(new DefaultTreeSelectionModel());
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
@@ -1727,7 +1727,11 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
|
||||
gcClipboard();
|
||||
mainMenu.updateComponents(null);
|
||||
previewPanel.clear();
|
||||
folderPreviewPanel.clear();
|
||||
folderListPanel.clear();
|
||||
previewPanel.clear();
|
||||
tagInfoPanel.clear();
|
||||
dumpPreviewPanel.clear();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1849,8 +1853,24 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
} else {
|
||||
mainMenu.updateComponents();
|
||||
}
|
||||
previewPanel.clear();
|
||||
|
||||
folderPreviewPanel.clear();
|
||||
folderListPanel.clear();
|
||||
previewPanel.clear();
|
||||
tagInfoPanel.clear();
|
||||
dumpPreviewPanel.clear();
|
||||
|
||||
List<List<String>> nodes;
|
||||
|
||||
//To properly clear cached TreePaths
|
||||
nodes = View.getExpandedNodes(tagTree);
|
||||
tagTree.setModel(tagTree.getFullModel());
|
||||
View.expandTreeNodes(tagTree, nodes);
|
||||
|
||||
nodes = View.getExpandedNodes(tagListTree);
|
||||
tagListTree.setModel(tagListTree.getFullModel());
|
||||
View.expandTreeNodes(tagListTree, nodes);
|
||||
|
||||
doFilter();
|
||||
return true;
|
||||
}
|
||||
@@ -6135,7 +6155,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
|
||||
folderPreviewPanel.clear();
|
||||
folderListPanel.clear();
|
||||
previewPanel.clear();
|
||||
previewPanel.clear();
|
||||
tagInfoPanel.clear();
|
||||
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, false, false);
|
||||
|
||||
|
||||
@@ -1810,6 +1810,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
|
||||
|
||||
binaryPanel.setBinaryData(null);
|
||||
genericTagPanel.clear();
|
||||
displayEditGenericPanel.clear();
|
||||
fontPanel.clear();
|
||||
}
|
||||
|
||||
|
||||
@@ -109,6 +109,11 @@ public class TagInfoPanel extends JPanel {
|
||||
buildHtmlContent();
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
this.tagInfo = new TagInfo(null);
|
||||
buildHtmlContent();
|
||||
}
|
||||
|
||||
private void updateHtmlContent(boolean expand, boolean showDetails) {
|
||||
String categoryName = "general";
|
||||
StringBuilder result = new StringBuilder();
|
||||
@@ -117,6 +122,10 @@ public class TagInfoPanel extends JPanel {
|
||||
|
||||
List<TagInfo.TagInfoItem> items = tagInfo.getInfos().get(categoryName);
|
||||
|
||||
if (items == null) {
|
||||
items = new ArrayList<>();
|
||||
}
|
||||
|
||||
if (View.isOceanic()) {
|
||||
result.append("<tr bgcolor='#FDFDFD'>");
|
||||
} else {
|
||||
|
||||
@@ -107,6 +107,7 @@ import com.jpexs.decompiler.flash.types.CLIPACTIONRECORD;
|
||||
import java.awt.Color;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
@@ -221,6 +222,40 @@ public abstract class AbstractTagTree extends JTree {
|
||||
setHashColor(Color.gray);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MouseListener createMouseListener() {
|
||||
MouseListener handler = super.createMouseListener();
|
||||
return new MouseListener() {
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
handler.mouseClicked(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
handler.mousePressed(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseReleased(MouseEvent e) {
|
||||
handler.mouseReleased(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseEntered(MouseEvent e) {
|
||||
handler.mouseEntered(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(MouseEvent e) {
|
||||
handler.mouseReleased(e); //crucial to properly free nodes
|
||||
handler.mouseExited(e);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
});
|
||||
ToolTipManager.sharedInstance().registerComponent(this);
|
||||
addMouseListener(new MouseAdapter() {
|
||||
|
||||
Reference in New Issue
Block a user