diff --git a/CHANGELOG.md b/CHANGELOG.md index 25eb6eba1..a8ad111a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ All notable changes to this project will be documented in this file. - [#2203] GFX - DefineSubImage with TGA bitmapFormat - [#2207] AS - Index -2 out of bounds for some of the switches - [#2190] AS1/2 - for..in inside switch before break +- Raw edit of fonts - shape table was not visible ### Changed - [#2185] MochiCrypt no longer offered for auto decrypt, user needs to choose variant from "Use unpacker" menu diff --git a/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java b/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java index 80ad5b6d1..0b33de88e 100644 --- a/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java +++ b/src/com/jpexs/decompiler/flash/gui/GenericTagTreePanel.java @@ -1186,7 +1186,7 @@ public class GenericTagTreePanel extends GenericTagPanel { private Object getChild(Object parent, int index, boolean limited) { if (parent == mtroot) { - return new FieldNode(null, this, mtroot, mtroot, filterFields(this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).get(index), -1); + return new FieldNode(null, this, mtroot, mtroot, filterFields(mtroot.getSwf(), this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).get(index), -1); } FieldNode fnode = (FieldNode) parent; Field field = fnode.fieldSet.get(FIELD_INDEX); @@ -1194,7 +1194,7 @@ public class GenericTagTreePanel extends GenericTagPanel { return new FieldNode(parent, this, mtroot, fnode.obj, fnode.fieldSet, index); } parent = fnode.getValue(FIELD_INDEX); - return new FieldNode(parent, this, mtroot, parent, filterFields(this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).get(index), -1); + return new FieldNode(parent, this, mtroot, parent, filterFields(mtroot.getSwf(), this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).get(index), -1); } @Override @@ -1209,7 +1209,7 @@ public class GenericTagTreePanel extends GenericTagPanel { private int getChildCount(Object parent, boolean limited) { if (parent == mtroot) { - return filterFields(this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).size(); + return filterFields(mtroot.getSwf(), this, mtroot.getClass().getSimpleName(), mtroot.getClass(), limited, mtroot.getId()).size(); } FieldNode fnode = (FieldNode) parent; @@ -1236,7 +1236,7 @@ public class GenericTagTreePanel extends GenericTagPanel { } parent = fnode.getValue(FIELD_INDEX); - return filterFields(this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).size(); + return filterFields(mtroot.getSwf(), this, getNodePathName(fnode), parent.getClass(), limited, mtroot.getId()).size(); } @Override @@ -1435,7 +1435,7 @@ public class GenericTagTreePanel extends GenericTagPanel { } } - private static List
filterFields(MyTreeModel mod, String parentPath, Class cls, boolean limited, int parentTagId) { + private static List
filterFields(SWF swf, MyTreeModel mod, String parentPath, Class cls, boolean limited, int parentTagId) { List
ret = new ArrayList<>(); List fields = getAvailableFields(cls); Map> tables = new HashMap<>(); @@ -1465,7 +1465,12 @@ public class GenericTagTreePanel extends GenericTagPanel { fieldMap.put(sf, found); } } else { - fieldMap.put(sf, true); + //Hack - the field is internal in fonts and thus cannot be accessed via getNodeByPath + if ("strippedShapes".equals(sf)) { + fieldMap.put(sf, swf.hasStrippedShapesFromFonts()); + } else { + fieldMap.put(sf, true); + } } } if (!ev.eval(fieldMap, parentTagId)) {