Skip to content

feat(B25+B26 egui): safe pointer focus loss and responsive whole-page XeLaTeX PDF fit - #67

Merged
i-shutov merged 8 commits into
mainfrom
feat/b25-egui-pointer-focus-fit-page-20261101
Nov 1, 2026
Merged

i-shutov merged 8 commits into
mainfrom
feat/b25-egui-pointer-focus-fit-page-20261101

Conversation

@i-shutov

@i-shutov i-shutov commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

B egui — B25 + B26, one draft PR

Base main: bb96abccea86835977e2608887f7470ba83a1167 (B16–B24 already integrated as #62).
Current exact B HEAD: 73878df418dd6343bbca9dd94a2e5daf979ed7fc. Branch feat/b25-egui-pointer-focus-fit-page-20261101; behind main: 0 at last compare.

User-facing vertical

  • B25 pointer safety: genuine egui PointerGone / WindowFocused(false) cancel an armed click/drag, including same-frame release; next intentional native C-catalogue gesture works; no unintended TeX insertion.
  • B25 full XeLaTeX PDF page: «Вся страница» measures the remaining viewer viewport after the 170pt provisional guide, warnings and toolbar. If 20% cannot fit, report it; do not pretend that guide pixels match PDF coordinates.
  • B26 responsive whole-page mode: reproduced one-shot zoom deficiency: after a resize or navigation to a differently sized PDF page, prior fixed zoom can clip it again. «Вся страница» is now a selected persistent mode, recalculates on each frame and new page raster. Manual −/+/100%/Fit width exits auto-fit; opening a different project clears it. No source mutation.

Tests and evidence

  • B25: 96 UNIT_EVENT timelines = six shared C primitives × two window widths × click/drag × two focus/pointer-loss events × two event orders; subsequent insertion and Undo preserve opaque macros byte-exactly.
  • B25: actual egui layout frames 1366×740 / 850×560; fail-closed fit math.
  • B26: b26_fit_page_button_remains_selected_on_resize_and_new_pdf_raster clicks the production egui button via Context::run(RawInput), changes viewport and page raster, tests manual-mode exit, below-20% refusal and unchanged TeX.
  • Existing B16–B24 six gestures, palette, parameters, selection/code highlight/F1, manual-edit Undo, Save/Reopen retained.

Exact-head evidence on 73878df418dd6343bbca9dd94a2e5daf979ed7fc:

Owner boundaries: B-only crates/tikzarium-app/src/main.rs, tikz_canvas.rs, own plans/ + insights/. Shared C code/generator untouched; A core, D #40, E help, F source tests untouched. Old #37/#43 and merged #44 never duplicated. XeLaTeX supplies exact PDF, installed independently (Windows 10 MiKTeX prerequisite). Arbitrary macro/scope content is never rewritten.

Independent desktop gate: prior I19 real Linux/X11 B23 screenshots are NOT a B25/B26 acceptance. I21 job is pinned to B24's earlier app-tree hash, so its preflight rejection on this new head is NOT a B25/B26 GUI execution. Recalibrated B26 X11 screenshots + genuine Save/Build/Export + Cyrillic help must be performed by D/integrator. Physical Windows10 x64 user MiKTeX and Mac M1/M4 XeLaTeX, IME/Retina/native dialogs NOT_RUN. Leave draft pending independent gate.

@i-shutov i-shutov changed the title feat(B25): cancel focus-lost egui gestures and fit whole XeLaTeX page feat(B25+B26 egui): safe pointer focus loss and responsive whole-page XeLaTeX PDF fit Nov 1, 2026
test(I24): actual B26 egui six gestures + responsive whole-page PDF X11 acceptance

i-shutov commented Nov 1, 2026

Copy link
Copy Markdown
Owner Author

Integrator I24 checkpoint — QA accepted into B26 at dc30363e53afe827e0a817ad556dab5e6eef5bd6 (2026-11-01).

Merged #68 only into this B feature branch, using expected_head_sha=245a753dc78a13db746e64b8580beaaa669eddae; original B26 source 73878df418dd6343bbca9dd94a2e5daf979ed7fc is unchanged by the seven QA-only files. Prior exact-B26 source CI was Rust SUCCESS, D QA 7/7 SUCCESS, N1 SUCCESS, fonts SUCCESS, distinct hosted MiKTeX + independent audit SUCCESS (old B24-pinned X11 preflight failure was not B26 GUI execution). Independently downloaded B26 hosted MiKTeX artifact 13064914455, ZIP SHA 5aa7851447dd6be4fd207d55d70bae634850b08eab736b481033e65d8404303f: 6/6 real 1-page PDFs with embedded DejaVuSerif/LatinModernMath/Cyrillic and Unicode, 9130/9130 MiKTeX package rows byte-identical, two strict negatives, source HEAD 73878df4. Hosted Windows Server 2022 MiKTeX, NOT physical Win10.

The independent real B26 Linux/X11 QA run 41262963488 SUCCESS, artifact 13066120894 SHA 4f2eb35fc9a05ec82184bc2d5b6a945c0a6e82abbfc1fd9abf65328c90bb9724, 31/31 SHA manifest, genuine six TikZ pointer tools / Save / XeLaTeX PDF / Russian F1 / entire PDF page beside source. Persistent «Вся страница» remains selected across genuine 1366×740 → 1180×680 → 1366×740 window resize, and the restored full-page screenshot is byte-identical to pre-resize. Important documented ergonomic limit: at 1180×680 the viewer has too little space at 20%, lower part of PDF is clipped with explicit warning (not full-page PASS). Consider collapsible guide pad in a later substantive GUI block, not a cosmetic micro-fix.

New B-head CI dc30363e... is running. Do NOT merge #67 to main until all exact-B-HEAD relevant workflows finish and critical artifacts are rechecked, then separate main push CI. Real GUI page switching/new-raster and physical Win10/Mac remain NOT_RUN. No release.

@i-shutov
i-shutov marked this pull request as ready for review November 1, 2026 02:05
@i-shutov
i-shutov merged commit 529217b into main Nov 1, 2026
18 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant