diff --git a/CHANGELOG.md b/CHANGELOG.md
index 903279484..d40ee4296 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -69,6 +69,7 @@ All notable changes to this project will be documented in this file.
- [#1194] FLA Export - stream sound export
- [#2136] FLA Export - optimized Shape fixer speed, repeated shape on timeline not exported twice
- [#2139] FLA Export - labels layer not counted as layer index causing masked layer parentindex wrong
+- [#2138] Nested clipping (masks) display
### Changed
- [#2120] Exported assets no longer take names from assigned classes if there is more than 1 assigned class
@@ -3344,6 +3345,7 @@ Major version of SWF to XML export changed to 2.
[#1194]: https://www.free-decompiler.com/flash/issues/1194
[#2136]: https://www.free-decompiler.com/flash/issues/2136
[#2139]: https://www.free-decompiler.com/flash/issues/2139
+[#2138]: https://www.free-decompiler.com/flash/issues/2138
[#2120]: https://www.free-decompiler.com/flash/issues/2120
[#1130]: https://www.free-decompiler.com/flash/issues/1130
[#1220]: https://www.free-decompiler.com/flash/issues/1220
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java
index 4d73db66f..e4d0ed345 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/timeline/Timeline.java
@@ -1095,8 +1095,11 @@ public class Timeline {
}
if (clipChanged) {
- if (clips.size() > 0) {
+ if (clips.size() > 0) {
Area clip = null;
+ if (prevClip != null) {
+ clip = new Area(prevClip);
+ }
for (Clip clip1 : clips) {
Shape shape = clip1.shape;
if (clip == null) {
@@ -1114,7 +1117,7 @@ public class Timeline {
//g.setStroke(new BasicStroke(2));
//g.draw(clip);
} else {
- g.setClip(null);
+ g.setClip(prevClip);
}
clipCount = clips.size();
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java
index f10f4952b..ceb519f32 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/xfl/XFLConverter.java
@@ -235,7 +235,7 @@ public class XFLConverter {
private final Random random = new Random(123); // predictable random
/**
- * Adds "(depht xxx)" to layer name
+ * Adds "(depth xxx)" to layer name
*/
private final boolean DEBUG_EXPORT_LAYER_DEPTHS = false;
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2.html b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2.html
new file mode 100644
index 000000000..7f3ce808a
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2.html
@@ -0,0 +1,49 @@
+
+
+
+ nested_masks2
+
+
+
+
+
+
+
+
+
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2.swf b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2.swf
new file mode 100644
index 000000000..ca25bacb5
Binary files /dev/null and b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2.swf differ
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/DOMDocument.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/DOMDocument.xml
new file mode 100644
index 000000000..3b24d5e68
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/DOMDocument.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Masked1.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Masked1.xml
new file mode 100644
index 000000000..8b28b6519
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Masked1.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Masked2.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Masked2.xml
new file mode 100644
index 000000000..c8fff64d2
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Masked2.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Rect.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Rect.xml
new file mode 100644
index 000000000..bda8e5653
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/LIBRARY/Rect.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/META-INF/metadata.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/META-INF/metadata.xml
new file mode 100644
index 000000000..e599d1610
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/META-INF/metadata.xml
@@ -0,0 +1,61 @@
+
+
+
+
+ Adobe Flash Professional CS6 - build 481
+ 2023-12-04T09:48:17-08:00
+ 2023-12-04T09:53:41-08:00
+ 2023-12-04T09:53:41-08:00
+
+
+ application/vnd.adobe.fla
+
+
+ xmp.iid:FB0A2AA52D76EE119313910734F6A093
+ xmp.did:FA0A2AA52D76EE119313910734F6A093
+ xmp.did:FA0A2AA52D76EE119313910734F6A093
+
+
+
+ created
+ xmp.iid:FA0A2AA52D76EE119313910734F6A093
+ 2023-12-04T09:48:17-08:00
+ Adobe Flash Professional CS6 - build 481
+
+
+ created
+ xmp.iid:FB0A2AA52D76EE119313910734F6A093
+ 2023-12-04T09:48:17-08:00
+ Adobe Flash Professional CS6 - build 481
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/MobileSettings.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/MobileSettings.xml
new file mode 100644
index 000000000..e69de29bb
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/PublishSettings.xml b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/PublishSettings.xml
new file mode 100644
index 000000000..a42cee2aa
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/PublishSettings.xml
@@ -0,0 +1,206 @@
+
+
+
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ nested_masks2.swf
+ nested_masks2.exe
+ nested_masks2.app
+ nested_masks2.html
+ nested_masks2.gif
+ nested_masks2.jpg
+ nested_masks2.png
+ nested_masks2.mov
+ nested_masks2.smil
+ nested_masks2.swc
+
+
+ 0
+ 12,0,0,0;11,2,0,0;11,1,0,0;10,3,0,0;10,2,153,0;10,1,52,0;9,0,124,0;8,0,24,0;7,0,14,0;6,0,79,0;5,0,58,0;4,0,32,0;3,0,8,0;2,0,1,12;1,0,0,1;
+ 1
+ 1
+ nested_masks2.xfl_content.html
+ nested_masks2.xfl_alternate.html
+ 0
+
+ 550
+ 400
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 4
+ 0
+ 0
+ 1
+ 0
+ C:\Users\MyUser\AppData\Local\Adobe\Flash CS6\en_US\Configuration\HTML\Default.html
+ 1
+
+
+
+
+ 0
+ 0
+ 0
+ 80
+ 0
+ 0
+ 7
+ 0
+ 7
+ 0
+ 15
+ FlashPlayer11.2
+ 2
+ 1
+
+ .
+ CONFIG::FLASH_AUTHORING="true";
+ 0
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+
+ 2
+ 4
+ 4096
+ AS3
+ 1
+ 1
+ 0
+ 15
+ 1
+ 0
+ 4102
+ rsl
+ wrap
+ $(AppConfig)/ActionScript 3.0/rsls/loader_animation.swf
+
+
+ $(AppConfig)/ActionScript 3.0/libs
+ merge
+
+
+ $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc
+ rsl
+ http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz
+ http://fpdownload.adobe.com/pub/swz/crossdomain.xml
+ textLayout_2.0.0.232.swz
+
+
+
+
+ $(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc
+
+ http://fpdownload.adobe.com/pub/swz/tlf/2.0.0.232/textLayout_2.0.0.232.swz
+ http://fpdownload.adobe.com/pub/swz/crossdomain.xml
+ textLayout_2.0.0.232.swz
+
+
+
+
+ 550
+ 400
+ 0
+ 4718592
+ 0
+ 80
+ 1
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 100000
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+
+
+ 550
+ 400
+ 0
+ 1
+ 1
+
+ 1
+ 0
+ 1
+ 0
+ 0
+
+ 128
+
+
+ 255
+
+
+
+ 550
+ 400
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+
+
+
+ 24-bit with Alpha
+ 255
+
+
+
+ 550
+ 400
+ 1
+ 0
+
+
+ 00000000
+ 0
+ 0
+ 0
+ 0
+ 1
+
+
+
\ No newline at end of file
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/bin/SymDepend.cache b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/bin/SymDepend.cache
new file mode 100644
index 000000000..25be859ee
Binary files /dev/null and b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/bin/SymDepend.cache differ
diff --git a/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/nested_masks2.xfl b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/nested_masks2.xfl
new file mode 100644
index 000000000..860a820ec
--- /dev/null
+++ b/libsrc/ffdec_lib/testdata/nested_masks2/nested_masks2/nested_masks2.xfl
@@ -0,0 +1 @@
+PROXY-CS5
\ No newline at end of file