From 712ae9c36a11041054ca8e68ca559e3404def6ff Mon Sep 17 00:00:00 2001 From: mtlcl410 Date: Thu, 15 Oct 2026 14:43:17 +0800 Subject: [PATCH] M3: a document that asks to open in Full Screen mode asks first (/PageMode /FullScreen) (#2086) * M3: a document that asks to open in Full Screen mode asks first (/PageMode /FullScreen) The Initial View option "Open in Full Screen mode" was written and read but never acted on when opening. Now the app asks, as Acrobat's alert does: Full Screen enters it, Not now leaves the window as it is. A document cannot take the screen on its own. Refs #379, #1459. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01RUNQSPVXx3dDBabRZHAnjz * Refresh catalog hashes after merging main --------- Co-authored-by: Claude Fable 5.1 Co-authored-by: Brandon Thomas --- ATTRIBUTION.toml | 42 ++++++++++++++-------------- ROADMAP.md | 1 + crates/ui-egui/src/dialogs.rs | 43 +++++++++++++++++++++++++++++ crates/ui-egui/src/i18n/ar.tsv | 4 +++ crates/ui-egui/src/i18n/bg.tsv | 4 +++ crates/ui-egui/src/i18n/cs.tsv | 4 +++ crates/ui-egui/src/i18n/de.tsv | 4 +++ crates/ui-egui/src/i18n/el.tsv | 4 +++ crates/ui-egui/src/i18n/es.tsv | 4 +++ crates/ui-egui/src/i18n/fr.tsv | 4 +++ crates/ui-egui/src/i18n/hu.tsv | 4 +++ crates/ui-egui/src/i18n/it.tsv | 4 +++ crates/ui-egui/src/i18n/ja.tsv | 4 +++ crates/ui-egui/src/i18n/kk.tsv | 4 +++ crates/ui-egui/src/i18n/lt.tsv | 4 +++ crates/ui-egui/src/i18n/pl.tsv | 4 +++ crates/ui-egui/src/i18n/pt-br.tsv | 4 +++ crates/ui-egui/src/i18n/ru.tsv | 4 +++ crates/ui-egui/src/i18n/sl.tsv | 4 +++ crates/ui-egui/src/i18n/te.tsv | 4 +++ crates/ui-egui/src/i18n/tr.tsv | 4 +++ crates/ui-egui/src/i18n/uk.tsv | 4 +++ crates/ui-egui/src/i18n/zh-hans.tsv | 4 +++ crates/ui-egui/src/i18n/zh-hant.tsv | 4 +++ crates/ui-egui/src/lib.rs | 18 ++++++++++++ crates/ui-egui/tests/ui.rs | 29 +++++++++++++++++++ parity/acrobat-features.toml | 4 +-- 27 files changed, 198 insertions(+), 23 deletions(-) diff --git a/ATTRIBUTION.toml b/ATTRIBUTION.toml index cbf7f899bf..afcec3a4ab 100644 --- a/ATTRIBUTION.toml +++ b/ATTRIBUTION.toml @@ -7,7 +7,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Greek UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "70da78d17186e3d91e952f9d1feb0f71ae03355eea5963f30d38496ee8802f80" +sha256 = "0576900abcb7d419ec81843274632db330daaa5964c91ccb5933b2a3053257cc" # ATTRIBUTION.toml: one entry per asset (AGENTS.md §1). The source of truth for provenance and licences. # ATTRIBUTION.md is generated from this file: `cargo xtask assets --write`. Checked by `cargo xtask assets` (part of `xtask ci`). @@ -30,7 +30,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Simplified Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "b4c3d8c6b181c2bec36d5b4cb28312b261cf17dcebc9e41f0b1bed2f3744b86d" +sha256 = "aaf94f24b7fb7c7fcbbd9003ba01e8fe5e775497d5c691e161dadadb0a85ac18" [[asset]] path = "crates/ui-egui/src/i18n/zh-hant.tsv" @@ -41,7 +41,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Traditional Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "cbb627936023af9331e2a4441661f5bae43e2453cd325c920f09d86de18020e0" +sha256 = "4d25e7a10678751d8fecf8ee8688e04343c807b9565a21e72bf784cdd8e30238" [[asset]] path = "crates/ui-egui/src/i18n/cs.tsv" @@ -52,7 +52,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "9d7ded91862278510b7b0fd7c6c1ae953936a720535e33d89003c3aa50422ad7" +sha256 = "bfa7f7d2cc008f676c5c533cda9f6b9415c8b6cfe43d2c88fab62440825cb57b" [[asset]] path = "crates/ui-egui/src/i18n/pt-br.tsv" @@ -63,7 +63,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "4648d4afc78f8b37ea6f855471c0713c5c4e948c1b909da3aa406a81cb51135e" +sha256 = "003747152cfb5f42ccb2b3e77351902a2594e2a263cc0750e122d6f1f94802d1" [[asset]] path = "crates/ui-egui/src/i18n/es.tsv" @@ -74,7 +74,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "cb8f794e06eedbb9cff34ac7b6b41cf2eba2a36d24daba7307854babae85a89f" +sha256 = "dc3267d8d4882998e32de736fb28ebc247e5102530fea852caa585f1c43d3150" [[asset]] path = "crates/ui-egui/src/i18n/fr.tsv" @@ -85,7 +85,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "6568887271ac5f0bc00c127b3270e9b4d5eedbd791e0268dcbea6b63c22672bd" +sha256 = "869505afeb011a27067fa55f1521a8d06ab3efd026fed4854610816acca13926" [[asset]] path = "crates/ui-egui/src/i18n/de.tsv" @@ -96,7 +96,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "57b8ba03355ca1a866f234a0814f76be895a9499acdba8473bc5301e9cb55cf1" +sha256 = "cffb456aac29be21da005ca52ae8131f0c07430e1723dd6da61073bba7501c8b" [[asset]] path = "crates/ui-egui/src/i18n/te.tsv" @@ -107,7 +107,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Telugu UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "67a57e49fc7c1ff984337b099da27e81f583197f0508aeac2fef819bbcf82edb" +sha256 = "7db981779e3c478b51b8c8aba71a53dc8153165e31ea57096d1307d30027b658" [[asset]] path = "crates/ui-egui/src/i18n/it.tsv" @@ -118,7 +118,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "3188bd767d048d27ad70535d950202044611958f90a39bc738f5551b0494282d" +sha256 = "6b6197bc0dd5b93813d5d6652c7ba2a3dc9b0d06eaed65292837a8f15d880f43" [[asset]] path = "crates/ui-egui/src/i18n/pl.tsv" @@ -129,7 +129,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "0ee764524ec3fbacd1eb3f5a59f4f23c3041a658851dca0dc01a4c544df058fb" +sha256 = "e6c9510edf8cb9677be5b830d6626740b8f2821799211701d8d16708fa9408b5" [[asset]] path = "crates/ui-egui/src/i18n/ru.tsv" @@ -140,7 +140,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Russian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "0a2fc4ecdbbbe6e709730c3aa76b2dc7d3e9c9ea6de42a9b3ce9b6765d3c54eb" +sha256 = "9f6d11f2ccf4c873a16d0f2ae3dddd449f7fad1238126b968ed8813e293d0ee8" [[asset]] path = "crates/ui-egui/src/i18n/hu.tsv" @@ -151,7 +151,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Hungarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "2e85a97fb2cfdb6bb20f1f8f79384a2984cae46cab7e56f6cec76a21995ab1e9" +sha256 = "15f572ed291aebc26911915e7647aef30998787a2bc87128addd273a84678406" [[asset]] path = "crates/ui-egui/src/i18n/bg.tsv" @@ -162,7 +162,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Bulgarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "2a55c0c380d45fa41d3f6461e42e351e0f2e3e7142e60546bf141fb4685866ba" +sha256 = "35f1711fd3358dd29c784769bd9ff2094f977bf78cb9146eefa2f45f62f80d52" [[asset]] path = "crates/ui-egui/src/i18n/kk.tsv" @@ -173,7 +173,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Kazakh UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "c6caafd21bfb93fe1c53a1a2c1cbbbb0d74325b00aaab307e00eacdd6f2e02dc" +sha256 = "8974dfe02d8c8f8453a156d68846f2171334fcda70d5fc795b53b52e13c2eb8f" [[asset]] path = "crates/ui-egui/src/i18n/ja.tsv" @@ -184,7 +184,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Japanese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "3374b7ef71dc8ec388493d45a7db280c881626af9e03694d032f586cae645397" +sha256 = "5ef65d3f913a1f97cdd54a07f4cc819bf128dfc20de247eadb2519bb98c7f102" [[asset]] path = "crates/ui-egui/src/i18n/uk.tsv" @@ -195,7 +195,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Ukrainian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "d851673052fa3c794de1dfc83802caf09a1ce8a1156098c47ea151e53a28bf87" +sha256 = "91da344ec2e6181f7c7b8f13dc0c878ccfe0600a8d464cbd188d082c6c402d4c" [[asset]] path = "crates/ui-egui/src/i18n/ar.tsv" @@ -206,7 +206,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "de9609658581173eed2f3a565b59b920d4363f54f7a46148883f00600a2f88e5" +sha256 = "3f7534373129ce75ef26a87aaef3f5074be3d8326ded9d2d77d873e24359ec87" [[asset]] path = "crates/ui-egui/src/i18n/tr.tsv" @@ -217,7 +217,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "6b1e58e80045623c9e92a70f1bc84861b0e7935e0ed8c12fdb56b75af4612283" +sha256 = "d045ebd97c1383e63ea8b9ff2a4279f8484357ff88b15f4bb4bb2cacce63022d" [[asset]] path = "crates/ui-egui/src/i18n/lt.tsv" @@ -228,7 +228,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "484b28b1dbe0d9851a08c4a73178f85285a29019e09baa32533dfbccfec39b28" +sha256 = "afd09cdbcb97339d57a0be0010512ba8336d1b40ffcfbd2b4730808851c71d64" [[asset]] @@ -3363,7 +3363,7 @@ licence = "MIT OR Apache-2.0" licence_file = "LICENSE-MIT" kind = "translation" usage = "Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs" -sha256 = "d85b6bf3b62a82912aeb87ac97ca54fc6adb9dd79941117ee56cf198ede4d752" +sha256 = "714b6a58f5cd4f0c9220e88d2d3f7c584b64829b0336e23d7893209c84babf5d" [[asset]] path = "vendor/vello_common/assets/probe.png" diff --git a/ROADMAP.md b/ROADMAP.md index 38b37a9421..3db771d635 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -171,6 +171,7 @@ Ranked; detail and the full milestone table in [docs/roadmap.md](docs/roadmap.md - **2026-10-14 (M4, page transitions read, §12.4.4):** `/Trans` and `/Dur` are read into `DocInfo::transitions` and listed by `doc_info`, the data a full-screen presentation needs to play transitions and auto-advance; playing and editing them stay planned. - **2026-10-14 (M4, page transitions set, §12.4.4):** `page_transition_set` (one undoable edit) writes or removes `/Trans` and `/Dur` on chosen pages with the values checked first, the counterpart of reading them into `DocInfo::transitions`; playing them and the dialog stay planned. - **2026-10-14 (M12, transition geometry):** `pdfcraft_render::transition` gives the picture of any of the twelve page transitions at a moment of its run (which parts of the old and new page to paint, where, how opaque), in page fractions, tested for every style and direction; the full-screen presentation will paint from it once it plays transitions. +- **2026-10-14 (M3, Open in Full Screen mode honoured):** a document with `/PageMode /FullScreen` now asks (Full Screen / Not now) before the app enters full screen, as Acrobat does; before, the setting was written and read but never acted on when opening. - **2026-10-13 (M3, native-opening candidate):** Chosen tools survive preparation, conversion and password retries; startup intake waits for pending preparation. Regression tests cover completion, cancellation and document identity. Estimates unchanged. - **2026-10-13 (community, M3, #531 touchpad momentum):** On Wayland a two-finger swipe keeps gliding after the fingers lift and slows to a stop, measured from the gesture's last 0.1 s and decaying with a 0.35 s time constant through the #759 1:1 path. Any wheel input, click, key, zoom or edge ends it (fingers resting on the touchpad don't yet: the vendored winit binds no Wayland hold gestures); single-page paging, macOS (which sends its own momentum), the web, and Animation effects Off never glide. Unit tests for the physics and two headless view tests. Estimates unchanged. - **2026-10-13 (M3, native-open admission):** Later prepared replies stay queued while a modal or native picker owns the foreground. Picker completion, cancellation and abandonment wake retained opens. Regressions cover recipient ownership, exactly-once admission, source/history preservation and one-shot repaint requests. Estimates unchanged. diff --git a/crates/ui-egui/src/dialogs.rs b/crates/ui-egui/src/dialogs.rs index c1dbd47a00..e28d67c318 100644 --- a/crates/ui-egui/src/dialogs.rs +++ b/crates/ui-egui/src/dialogs.rs @@ -20,6 +20,7 @@ fn dialogs(app: &mut PdfCraftApp, ctx: &egui::Context) { save_prompt(app, ctx); link_prompt(app, ctx); remote_link_prompt(app, ctx); + full_screen_prompt(app, ctx); crate::updates::dialog(app, ctx); if app.dialog != Some(Dialog::WordCount) { app.word_count_draft.cancel(); @@ -1532,6 +1533,48 @@ fn link_prompt(app: &mut PdfCraftApp, ctx: &egui::Context) { } } +/// A document that asks to open in Full Screen mode (`/PageMode /FullScreen`) is asked about +/// first, as Acrobat does: full screen hides every control, so it is the person's choice. +fn full_screen_prompt(app: &mut PdfCraftApp, ctx: &egui::Context) { + let Some(id) = app.pending_full_screen else { return }; + // The document was closed before an answer: nothing to ask any more. + if app.session.get(id).is_none() { + app.pending_full_screen = None; + return; + } + let t = Tokens::get(ctx); + let mut choice = None; + let modal = widgets::show_modal(ctx, "full_screen_prompt", |ui| { + ui.set_width(460.0); + ui.horizontal(|ui| { + ui.add(crate::icons::image("maximize", 22.0, t.accent)); + ui.label(egui::RichText::new(tl!("Open in Full Screen mode?")).font(theme::semibold(16.0))); + }); + ui.add_space(6.0); + ui.add( + egui::Label::new(tl!( + "This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it." + )) + .wrap(), + ); + ui.add_space(14.0); + ui.with_layout(Layout::right_to_left(Align::Center), |ui| { + if widgets::pill_button(ui, tl!("Not now"), true).clicked() { + choice = Some(false); + } + if widgets::pill_button(ui, tl!("Full Screen"), false).clicked() { + choice = Some(true); + } + }); + }); + if choice.is_none() && modal.should_close() { + choice = Some(false); + } + if let Some(allow) = choice { + app.resolve_full_screen_prompt(ctx, allow); + } +} + /// Absolute document-controlled local paths require consent before any filesystem access. fn remote_link_prompt(app: &mut PdfCraftApp, ctx: &egui::Context) { let Some(pending) = app.pending_remote_link.clone() else { return }; diff --git a/crates/ui-egui/src/i18n/ar.tsv b/crates/ui-egui/src/i18n/ar.tsv index ff03c8a2f7..bc5a9b30cc 100644 --- a/crates/ui-egui/src/i18n/ar.tsv +++ b/crates/ui-egui/src/i18n/ar.tsv @@ -2379,6 +2379,10 @@ animation effects Off معطّلة # Absolute local GoToR confirmation (#1364). Allow السماح Only allow this if you trust the source document. لا تسمح بذلك إلا إذا كنت تثق بالمستند المصدر. + Open in Full Screen mode? فتح في وضع ملء الشاشة؟ + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. يطلب هذا المستند أن يُفتح في وضع ملء الشاشة: تملأ الصفحة الشاشة ولا يظهر شيء آخر. اضغط Esc في أي وقت للخروج منه. + Full Screen ملء الشاشة + Not now ليس الآن Open this local PDF? هل تريد فتح ملف PDF المحلي هذا؟ This document is trying to open a local file: يحاول هذا المستند فتح ملف محلي: Move tag earlier نقل العلامة للأعلى diff --git a/crates/ui-egui/src/i18n/bg.tsv b/crates/ui-egui/src/i18n/bg.tsv index 132a98e8e1..85ffa3debc 100644 --- a/crates/ui-egui/src/i18n/bg.tsv +++ b/crates/ui-egui/src/i18n/bg.tsv @@ -2321,6 +2321,10 @@ animation effects Off Изключени # Absolute local GoToR confirmation (#1364). Allow Разреши Only allow this if you trust the source document. Разрешете това само ако имате доверие на изходния документ. + Open in Full Screen mode? Отваряне в режим на цял екран? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Този документ иска да се отвори в режим на цял екран: страницата изпълва екрана и нищо друго не се показва. Натиснете Esc по всяко време, за да излезете. + Full Screen Цял екран + Not now Не сега Open this local PDF? Да се отвори ли този локален PDF? This document is trying to open a local file: Този документ се опитва да отвори локален файл: Move tag earlier Преместване на етикета по-рано diff --git a/crates/ui-egui/src/i18n/cs.tsv b/crates/ui-egui/src/i18n/cs.tsv index 1100da1924..bfc3feab3a 100644 --- a/crates/ui-egui/src/i18n/cs.tsv +++ b/crates/ui-egui/src/i18n/cs.tsv @@ -2432,6 +2432,10 @@ animation effects Off Vypnuto # Absolute local GoToR confirmation (#1364). Allow Povolit Only allow this if you trust the source document. Povolte tuto akci pouze v případě, že důvěřujete zdrojovému dokumentu. + Open in Full Screen mode? Otevřít v režimu celé obrazovky? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Tento dokument žádá o otevření v režimu celé obrazovky: stránka vyplní obrazovku a nic jiného se nezobrazí. Stisknutím Esc jej kdykoli opustíte. + Full Screen Celá obrazovka + Not now Teď ne Open this local PDF? Otevřít tento místní soubor PDF? This document is trying to open a local file: Tento dokument se pokouší otevřít místní soubor: Move tag earlier Přesunout značku dříve diff --git a/crates/ui-egui/src/i18n/de.tsv b/crates/ui-egui/src/i18n/de.tsv index 45431f9ff6..61eb2a4b22 100644 --- a/crates/ui-egui/src/i18n/de.tsv +++ b/crates/ui-egui/src/i18n/de.tsv @@ -2359,6 +2359,10 @@ animation effects Off Aus # Absolute local GoToR confirmation (#1364). Allow Zulassen Only allow this if you trust the source document. Lassen Sie dies nur zu, wenn Sie dem Quelldokument vertrauen. + Open in Full Screen mode? Im Vollbildmodus öffnen? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Dieses Dokument möchte im Vollbildmodus geöffnet werden: Die Seite füllt den Bildschirm, sonst wird nichts angezeigt. Mit Esc verlassen Sie ihn jederzeit. + Full Screen Vollbild + Not now Jetzt nicht Open this local PDF? Diese lokale PDF-Datei öffnen? This document is trying to open a local file: Dieses Dokument versucht, eine lokale Datei zu öffnen: Move tag earlier Tag früher verschieben diff --git a/crates/ui-egui/src/i18n/el.tsv b/crates/ui-egui/src/i18n/el.tsv index 54929c4c58..e4484c903e 100644 --- a/crates/ui-egui/src/i18n/el.tsv +++ b/crates/ui-egui/src/i18n/el.tsv @@ -2368,6 +2368,10 @@ animation effects Off Ανενεργά # Absolute local GoToR confirmation (#1364). Allow Να επιτραπεί Only allow this if you trust the source document. Επιτρέψτε το μόνο αν εμπιστεύεστε το έγγραφο προέλευσης. + Open in Full Screen mode? Άνοιγμα σε λειτουργία πλήρους οθόνης; + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Αυτό το έγγραφο ζητά να ανοίξει σε λειτουργία πλήρους οθόνης: η σελίδα γεμίζει την οθόνη και τίποτα άλλο δεν εμφανίζεται. Πατήστε Esc οποιαδήποτε στιγμή για έξοδο. + Full Screen Πλήρης οθόνη + Not now Όχι τώρα Open this local PDF? Να ανοίξει αυτό το τοπικό PDF; This document is trying to open a local file: Αυτό το έγγραφο προσπαθεί να ανοίξει ένα τοπικό αρχείο: Move tag earlier Μετακίνηση ετικέτας νωρίτερα diff --git a/crates/ui-egui/src/i18n/es.tsv b/crates/ui-egui/src/i18n/es.tsv index 52e7c9c3ed..e64a09927d 100644 --- a/crates/ui-egui/src/i18n/es.tsv +++ b/crates/ui-egui/src/i18n/es.tsv @@ -2498,6 +2498,10 @@ animation effects Off Desactivados # Absolute local GoToR confirmation (#1364). Allow Permitir Only allow this if you trust the source document. Permite esta acción solo si confías en el documento de origen. + Open in Full Screen mode? ¿Abrir en modo de pantalla completa? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Este documento pide abrirse en modo de pantalla completa: la página llena la pantalla y no se muestra nada más. Pulse Esc en cualquier momento para salir. + Full Screen Pantalla completa + Not now Ahora no Open this local PDF? ¿Abrir este PDF local? This document is trying to open a local file: Este documento intenta abrir un archivo local: Move tag earlier Mover etiqueta antes diff --git a/crates/ui-egui/src/i18n/fr.tsv b/crates/ui-egui/src/i18n/fr.tsv index 65bbc97b2a..1efef1e164 100644 --- a/crates/ui-egui/src/i18n/fr.tsv +++ b/crates/ui-egui/src/i18n/fr.tsv @@ -2358,6 +2358,10 @@ animation effects Off Désactivés # Absolute local GoToR confirmation (#1364). Allow Autoriser Only allow this if you trust the source document. N'autorisez cette action que si vous faites confiance au document source. + Open in Full Screen mode? Ouvrir en mode plein écran ? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Ce document demande à s’ouvrir en mode plein écran : la page remplit l’écran et rien d’autre n’est affiché. Appuyez sur Échap à tout moment pour le quitter. + Full Screen Plein écran + Not now Pas maintenant Open this local PDF? Ouvrir ce PDF local ? This document is trying to open a local file: Ce document tente d’ouvrir un fichier local : Move tag earlier Déplacer la balise plus tôt diff --git a/crates/ui-egui/src/i18n/hu.tsv b/crates/ui-egui/src/i18n/hu.tsv index 7f7433e916..9a3f4bccc1 100644 --- a/crates/ui-egui/src/i18n/hu.tsv +++ b/crates/ui-egui/src/i18n/hu.tsv @@ -2357,6 +2357,10 @@ animation effects Off Ki # Absolute local GoToR confirmation (#1364). Allow Engedélyezés Only allow this if you trust the source document. Csak akkor engedélyezze ezt, ha megbízik a forrásdokumentumban. + Open in Full Screen mode? Megnyitás teljes képernyős módban? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Ez a dokumentum teljes képernyős módban kér megnyitást: az oldal kitölti a képernyőt, és semmi más nem látszik. Az Esc billentyűvel bármikor kiléphet. + Full Screen Teljes képernyő + Not now Most nem Open this local PDF? Megnyitja ezt a helyi PDF-fájlt? This document is trying to open a local file: Ez a dokumentum egy helyi fájlt próbál megnyitni: Move tag earlier Címke korábbra helyezése diff --git a/crates/ui-egui/src/i18n/it.tsv b/crates/ui-egui/src/i18n/it.tsv index 45cbed1009..0f3866da8b 100644 --- a/crates/ui-egui/src/i18n/it.tsv +++ b/crates/ui-egui/src/i18n/it.tsv @@ -2367,6 +2367,10 @@ animation effects Off Disattivati # Absolute local GoToR confirmation (#1364). Allow Consenti Only allow this if you trust the source document. Consenti questa operazione solo se ti fidi del documento di origine. + Open in Full Screen mode? Aprire in modalità schermo intero? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Questo documento chiede di aprirsi in modalità schermo intero: la pagina riempie lo schermo e non viene mostrato altro. Premi Esc in qualsiasi momento per uscire. + Full Screen Schermo intero + Not now Non ora Open this local PDF? Aprire questo PDF locale? This document is trying to open a local file: Questo documento sta tentando di aprire un file locale: Move tag earlier Sposta tag prima diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 50c0a85b02..c71d32fae9 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -2358,6 +2358,10 @@ animation effects Off オフ # Absolute local GoToR confirmation (#1364). Allow 許可 Only allow this if you trust the source document. 元の文書を信頼できる場合にのみ許可してください。 + Open in Full Screen mode? フルスクリーンモードで開きますか? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. この文書はフルスクリーンモードで開くよう求めています。ページが画面全体を占め、他には何も表示されません。Esc キーでいつでも終了できます。 + Full Screen フルスクリーン + Not now 今はしない Open this local PDF? このローカルPDFを開きますか? This document is trying to open a local file: この文書はローカルファイルを開こうとしています: Move tag earlier タグを前へ移動 diff --git a/crates/ui-egui/src/i18n/kk.tsv b/crates/ui-egui/src/i18n/kk.tsv index fe8ec4de09..a20e2466b9 100644 --- a/crates/ui-egui/src/i18n/kk.tsv +++ b/crates/ui-egui/src/i18n/kk.tsv @@ -2356,6 +2356,10 @@ animation effects Off Өшірулі # Absolute local GoToR confirmation (#1364). Allow Рұқсат беру Only allow this if you trust the source document. Бастапқы құжатқа сенсеңіз ғана рұқсат беріңіз. + Open in Full Screen mode? Толық экран режимінде ашу керек пе? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Бұл құжат толық экран режимінде ашылуды сұрайды: бет экранды толтырады және басқа ештеңе көрсетілмейді. Шығу үшін кез келген уақытта Esc басыңыз. + Full Screen Толық экран + Not now Қазір емес Open this local PDF? Осы жергілікті PDF файлын ашу керек пе? This document is trying to open a local file: Бұл құжат жергілікті файлды ашуға әрекеттеніп жатыр: Move tag earlier Тегті ертерек жылжыту diff --git a/crates/ui-egui/src/i18n/lt.tsv b/crates/ui-egui/src/i18n/lt.tsv index 9a7f6c0167..172fdde5ad 100644 --- a/crates/ui-egui/src/i18n/lt.tsv +++ b/crates/ui-egui/src/i18n/lt.tsv @@ -2602,6 +2602,10 @@ key Space Tarpas # Absolute local GoToR confirmation (#1364). Allow Leisti Only allow this if you trust the source document. Leiskite tai tik tuo atveju, jei pasitikite pirminiu dokumentu. + Open in Full Screen mode? Atidaryti viso ekrano režimu? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Šis dokumentas prašo būti atidarytas viso ekrano režimu: puslapis užpildo ekraną ir daugiau niekas nerodoma. Norėdami išeiti, bet kada paspauskite Esc. + Full Screen Visas ekranas + Not now Ne dabar Open this local PDF? Atverti šį vietinį PDF failą? This document is trying to open a local file: Šis dokumentas bando atverti vietinį failą: Move tag earlier Perkelti žymą anksčiau diff --git a/crates/ui-egui/src/i18n/pl.tsv b/crates/ui-egui/src/i18n/pl.tsv index c45233909b..5a30827ab9 100644 --- a/crates/ui-egui/src/i18n/pl.tsv +++ b/crates/ui-egui/src/i18n/pl.tsv @@ -2338,6 +2338,10 @@ animation effects Off Wyłączone # Absolute local GoToR confirmation (#1364). Allow Zezwól Only allow this if you trust the source document. Zezwól na to tylko wtedy, gdy ufasz dokumentowi źródłowemu. + Open in Full Screen mode? Otworzyć w trybie pełnoekranowym? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Ten dokument prosi o otwarcie w trybie pełnoekranowym: strona wypełnia ekran i nic innego nie jest widoczne. Naciśnij Esc w dowolnej chwili, aby go opuścić. + Full Screen Pełny ekran + Not now Nie teraz Open this local PDF? Otworzyć ten lokalny plik PDF? This document is trying to open a local file: Ten dokument próbuje otworzyć plik lokalny: Move tag earlier Przenieś znacznik wcześniej diff --git a/crates/ui-egui/src/i18n/pt-br.tsv b/crates/ui-egui/src/i18n/pt-br.tsv index ab945a8861..dbbec6b6ad 100644 --- a/crates/ui-egui/src/i18n/pt-br.tsv +++ b/crates/ui-egui/src/i18n/pt-br.tsv @@ -2372,6 +2372,10 @@ animation effects Off Desativados # Absolute local GoToR confirmation (#1364). Allow Permitir Only allow this if you trust the source document. Permita esta ação somente se confiar no documento de origem. + Open in Full Screen mode? Abrir no modo de tela cheia? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Este documento pede para abrir no modo de tela cheia: a página preenche a tela e nada mais é exibido. Pressione Esc a qualquer momento para sair. + Full Screen Tela cheia + Not now Agora não Open this local PDF? Abrir este PDF local? This document is trying to open a local file: Este documento está tentando abrir um arquivo local: Move tag earlier Mover tag para antes diff --git a/crates/ui-egui/src/i18n/ru.tsv b/crates/ui-egui/src/i18n/ru.tsv index 4bda940f01..cd662e597a 100644 --- a/crates/ui-egui/src/i18n/ru.tsv +++ b/crates/ui-egui/src/i18n/ru.tsv @@ -2271,6 +2271,10 @@ animation effects Off Выкл # Absolute local GoToR confirmation (#1364). Allow Разрешить Only allow this if you trust the source document. Разрешите это действие, только если доверяете исходному документу. + Open in Full Screen mode? Открыть в полноэкранном режиме? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Этот документ просит открыть его в полноэкранном режиме: страница занимает весь экран, и больше ничего не отображается. Нажмите Esc в любой момент, чтобы выйти. + Full Screen Полный экран + Not now Не сейчас Open this local PDF? Открыть этот локальный PDF? This document is trying to open a local file: Этот документ пытается открыть локальный файл: Move tag earlier Переместить тег раньше diff --git a/crates/ui-egui/src/i18n/sl.tsv b/crates/ui-egui/src/i18n/sl.tsv index befa698159..9708aae82a 100644 --- a/crates/ui-egui/src/i18n/sl.tsv +++ b/crates/ui-egui/src/i18n/sl.tsv @@ -2363,6 +2363,10 @@ animation effects Off Izklopljeni # Absolute local GoToR confirmation (#1364). Allow Dovoli Only allow this if you trust the source document. To dovolite le, če zaupate izvornemu dokumentu. + Open in Full Screen mode? Odpri v celozaslonskem načinu? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Ta dokument želi, da se odpre v celozaslonskem načinu: stran zapolni zaslon in nič drugega ni prikazano. Za izhod kadar koli pritisnite Esc. + Full Screen Celoten zaslon + Not now Ne zdaj Open this local PDF? Želite odpreti ta lokalni PDF? This document is trying to open a local file: Ta dokument poskuša odpreti lokalno datoteko: Move tag earlier Premakni oznako prej diff --git a/crates/ui-egui/src/i18n/te.tsv b/crates/ui-egui/src/i18n/te.tsv index cc426640e9..1c72f90eb6 100644 --- a/crates/ui-egui/src/i18n/te.tsv +++ b/crates/ui-egui/src/i18n/te.tsv @@ -2271,6 +2271,10 @@ animation effects Off ఆఫ్ # Absolute local GoToR confirmation (#1364). Allow అనుమతించు Only allow this if you trust the source document. మూల పత్రాన్ని విశ్వసిస్తే మాత్రమే దీన్ని అనుమతించండి. + Open in Full Screen mode? పూర్తి తెర మోడ్‌లో తెరవాలా? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. ఈ పత్రం పూర్తి తెర మోడ్‌లో తెరవమని అడుగుతోంది: పేజీ తెరను నింపుతుంది, ఇంకేమీ కనిపించదు. బయటకు రావడానికి ఎప్పుడైనా Esc నొక్కండి. + Full Screen పూర్తి తెర + Not now ఇప్పుడు కాదు Open this local PDF? ఈ స్థానిక PDF ఫైల్‌ను తెరవాలా? This document is trying to open a local file: ఈ పత్రం ఒక స్థానిక ఫైల్‌ను తెరవడానికి ప్రయత్నిస్తోంది: Move tag earlier ట్యాగ్‌ను ముందుకు తరలించు diff --git a/crates/ui-egui/src/i18n/tr.tsv b/crates/ui-egui/src/i18n/tr.tsv index a0cfef44fc..d8304b8df7 100644 --- a/crates/ui-egui/src/i18n/tr.tsv +++ b/crates/ui-egui/src/i18n/tr.tsv @@ -2354,6 +2354,10 @@ animation effects Off Kapalı # Absolute local GoToR confirmation (#1364). Allow İzin ver Only allow this if you trust the source document. Buna yalnızca kaynak belgeye güveniyorsanız izin verin. + Open in Full Screen mode? Tam ekran modunda açılsın mı? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Bu belge tam ekran modunda açılmak istiyor: sayfa ekranı doldurur ve başka hiçbir şey görünmez. Çıkmak için istediğiniz zaman Esc tuşuna basın. + Full Screen Tam ekran + Not now Şimdi değil Open this local PDF? Bu yerel PDF açılsın mı? This document is trying to open a local file: Bu belge yerel bir dosya açmaya çalışıyor: Move tag earlier Etiketi daha erken taşı diff --git a/crates/ui-egui/src/i18n/uk.tsv b/crates/ui-egui/src/i18n/uk.tsv index 2d3a550986..19acb7678b 100644 --- a/crates/ui-egui/src/i18n/uk.tsv +++ b/crates/ui-egui/src/i18n/uk.tsv @@ -2380,6 +2380,10 @@ animation effects Off Вимкнено # Absolute local GoToR confirmation (#1364). Allow Дозволити Only allow this if you trust the source document. Дозволяйте це лише тоді, коли довіряєте вихідному документу. + Open in Full Screen mode? Відкрити в повноекранному режимі? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. Цей документ просить відкрити його в повноекранному режимі: сторінка заповнює екран, і більше нічого не показано. Натисніть Esc будь-коли, щоб вийти. + Full Screen Повний екран + Not now Не зараз Open this local PDF? Відкрити цей локальний PDF? This document is trying to open a local file: Цей документ намагається відкрити локальний файл: Move tag earlier Перемістити тег раніше diff --git a/crates/ui-egui/src/i18n/zh-hans.tsv b/crates/ui-egui/src/i18n/zh-hans.tsv index 4a82e732c9..f77ec2daa2 100644 --- a/crates/ui-egui/src/i18n/zh-hans.tsv +++ b/crates/ui-egui/src/i18n/zh-hans.tsv @@ -2322,6 +2322,10 @@ animation effects Off 关 # Absolute local GoToR confirmation (#1364). Allow 允许 Only allow this if you trust the source document. 仅在您信任源文档时才允许此操作。 + Open in Full Screen mode? 以全屏模式打开? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. 此文档要求以全屏模式打开:页面充满屏幕,不显示其他内容。随时按 Esc 即可退出。 + Full Screen 全屏 + Not now 暂不 Open this local PDF? 是否打开此本地 PDF? This document is trying to open a local file: 此文档正尝试打开本地文件: Move tag earlier 将标签前移 diff --git a/crates/ui-egui/src/i18n/zh-hant.tsv b/crates/ui-egui/src/i18n/zh-hant.tsv index cda6964d6d..b1cf756905 100644 --- a/crates/ui-egui/src/i18n/zh-hant.tsv +++ b/crates/ui-egui/src/i18n/zh-hant.tsv @@ -2233,6 +2233,10 @@ animation effects Off 關 # Absolute local GoToR confirmation (#1364). Allow 允許 Only allow this if you trust the source document. 只有在您信任來源文件時,才允許此操作。 + Open in Full Screen mode? 要以全螢幕模式開啟嗎? + This document asks to open in Full Screen mode: the page fills the screen and nothing else shows. Press Esc at any time to leave it. 這份文件要求以全螢幕模式開啟:頁面佔滿整個螢幕,不顯示其他東西。隨時按 Esc 即可離開。 + Full Screen 全螢幕 + Not now 暫時不要 Open this local PDF? 要開啟此本機 PDF 嗎? This document is trying to open a local file: 此文件正嘗試開啟本機檔案: Move tag earlier 將標記前移 diff --git a/crates/ui-egui/src/lib.rs b/crates/ui-egui/src/lib.rs index 02ee22d4ee..90dc2b481f 100644 --- a/crates/ui-egui/src/lib.rs +++ b/crates/ui-egui/src/lib.rs @@ -791,6 +791,9 @@ pub struct PdfCraftApp { pub last_opened_url: Option, /// A document asked to open this address; the user hasn't answered yet (#90, #91). pub pending_link: Option, + /// A document just opened asks to be shown in Full Screen mode (`/PageMode /FullScreen`): + /// the person is asked first, as in Acrobat, and this is the document waiting for the answer. + pub pending_full_screen: Option, /// An absolute GoToR target waiting for approval, before any target-file I/O (#1364). pub pending_remote_link: Option, } @@ -1023,6 +1026,7 @@ impl PdfCraftApp { bookmark_rename: None, last_opened_url: None, pending_link: None, + pending_full_screen: None, pending_remote_link: None, protect_draft: Default::default(), boxes_draft: Default::default(), @@ -1317,6 +1321,11 @@ impl PdfCraftApp { self.active = Some(self.views.len() - 1); } self.apply_initial_view(self.views.len() - 1, &initial); + // Full screen is asked for, never taken: a document can't put the app in full screen on + // its own (the prompt is `dialogs::full_screen_prompt`). + if activate && initial.full_screen { + self.pending_full_screen = Some(id); + } if activate && self.left_open && self.left == LeftPanel::Tool("organize") @@ -1545,6 +1554,15 @@ impl PdfCraftApp { ctx.send_viewport_cmd(egui::ViewportCommand::Fullscreen(on)); } + /// Answer the Full Screen mode prompt a document raised on opening: enter it, or leave the + /// window as it is. + pub fn resolve_full_screen_prompt(&mut self, ctx: &egui::Context, allow: bool) { + let Some(id) = self.pending_full_screen.take() else { return }; + if allow && self.session.get(id).is_some() { + self.set_full_screen(ctx, true); + } + } + /// Answer the password prompt (`None` cancels). pub fn submit_password(&mut self, password: Option) { let Some(p) = self.password_prompt.take() else { return }; diff --git a/crates/ui-egui/tests/ui.rs b/crates/ui-egui/tests/ui.rs index b45e7775b8..077b3ccece 100644 --- a/crates/ui-egui/tests/ui.rs +++ b/crates/ui-egui/tests/ui.rs @@ -192,6 +192,35 @@ fn read_mode_rail_buttons_open_their_panels() { h.get_by_label("Alpha section"); } +/// A document that asks to open in Full Screen mode (`/PageMode /FullScreen`) is asked about +/// first, as in Acrobat: "Not now" leaves the window as it is, "Full Screen" enters it. +#[test] +fn a_document_asking_for_full_screen_is_asked_about_first() { + let deck = || String::from_utf8(FIXTURE.to_vec()).unwrap().replace("/Outlines 6 0 R", "/Outlines 6 0 R /PageMode /FullScreen").into_bytes(); + let mut h = harness(move |app| app.open_bytes("deck.pdf", None, deck()).expect("opens")); + h.run_steps(3); + assert!(!h.state().full_screen, "nothing happens before the answer"); + h.get_by_label("Open in Full Screen mode?"); + h.get_by_label("Not now").click(); + h.run_steps(3); + assert!(!h.state().full_screen); + assert!(h.query_by_label("Open in Full Screen mode?").is_none() && h.state().pending_full_screen.is_none()); + // Asked again for the next such document; Full Screen enters it. + let again = String::from_utf8(FIXTURE.to_vec()).unwrap().replace("/Outlines 6 0 R", "/Outlines 6 0 R /PageMode /FullScreen").into_bytes(); + h.state_mut().open_bytes("deck2.pdf", None, again).expect("opens"); + h.run_steps(3); + h.get_by_label("Full Screen").click(); + h.run_steps(3); + assert!(h.state().full_screen, "Full Screen enters it"); + assert!(h.state().pending_full_screen.is_none()); + // A plain document asks nothing. + h.key_press(egui::Key::Escape); + h.run_steps(2); + h.state_mut().open_bytes("plain.pdf", None, FIXTURE.to_vec()).expect("opens"); + h.run_steps(3); + assert!(h.query_by_label("Open in Full Screen mode?").is_none() && !h.state().full_screen); +} + /// Switching to Read mode closes the open pane, and switching back reopens it. #[test] fn read_mode_closes_the_panes_and_leaving_it_brings_them_back() { diff --git a/parity/acrobat-features.toml b/parity/acrobat-features.toml index bd0756f328..1958efb9df 100644 --- a/parity/acrobat-features.toml +++ b/parity/acrobat-features.toml @@ -3475,8 +3475,8 @@ milestone = "M4" status = "shipped" commands = ["file.properties"] tools = ["doc_initial_view"] -evidence = ["crates/organize/src/tests.rs::initial_view_round_trips_and_keeps_scripts", "crates/ui-egui/tests/viewer.rs::initial_view_is_edited_and_honoured_on_open", "crates/automation/tests/automation.rs::initial_view_through_tools"] -notes = "navigation panel, layout, magnification, page, window and interface options; honoured on open; script open actions kept" +evidence = ["crates/ui-egui/tests/ui.rs::a_document_asking_for_full_screen_is_asked_about_first", "crates/organize/src/tests.rs::initial_view_round_trips_and_keeps_scripts", "crates/ui-egui/tests/viewer.rs::initial_view_is_edited_and_honoured_on_open", "crates/automation/tests/automation.rs::initial_view_through_tools"] +notes = "navigation panel, layout, magnification, page, window and interface options; honoured on open; script open actions kept. Open in Full Screen mode (/PageMode /FullScreen) asks first (Full Screen / Not now), as Acrobat does, instead of taking the screen. Missing: Acrobat's Full Screen preference to turn that alert off and its \"remember my choice for this document\" (misc.prefs-full-screen)" [[feature]] id = "organize.custom-properties"