[PP1] show.setup showMediaControls survives a pptx save and reopen

PowerPoint stores Show media controls as the p14:showMediaCtrls extension inside
p:showPr (uri {2FDB2607-...}); absent means shown. Write it when hidden, read it back.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Zach BerryandClaude Sonnet 5.5 committed 2026-10-30 15:12:26 -05:00
1 parent c4221b1a7c
commit 6303166a18
3 files changed
+18

No files matched your search

+1
View File
@@ -1283,6 +1283,7 @@ fn read_show(sp: &El, shows: &HashMap<String, String>) -> ShowSettings {
without_narration: sp.bool("showNarration") == Some(false),
without_animation: sp.bool("showAnimation") == Some(false),
use_timings: sp.bool("useTimings").unwrap_or(true),
show_media_controls: sp.find("showMediaCtrls").and_then(|e| e.bool("val")).unwrap_or(true),
..Default::default()
};
if sp.child("browse").is_some() {
+8
View File
@@ -1181,6 +1181,14 @@ fn pres_props_xml(p: &Presentation) -> Vec<u8> {
w.open0("p:penClr");
w.val("a:srgbClr", s.pen_color.hex());
w.close("p:penClr");
if !s.show_media_controls {
// "Show media controls" is PowerPoint's p14 extension; absent means shown.
w.open0("p:extLst");
w.open("p:ext", A::new().a("uri", "{2FDB2607-1784-4EEB-B798-7EB5836EED8A}"));
w.empty("p14:showMediaCtrls", A::new().a("xmlns:p14", NS_P14).a("val", 0));
w.close("p:ext");
w.close("p:extLst");
}
w.close("p:showPr");
w.close("p:presentationPr");
w.finish()
+9
View File
@@ -1969,3 +1969,12 @@ fn default_durations_match_powerpoint() {
assert_eq!(a.4, ms, "{effect}");
}
}
/// Show media controls is PowerPoint's `p14:showMediaCtrls` extension inside `p:showPr`.
#[test]
fn hidden_media_controls_survive_save_and_reopen() {
let mut p = Presentation::default();
p.show.show_media_controls = false;
assert!(!round(&p).show.show_media_controls);
assert!(round(&Presentation::default()).show.show_media_controls);
}