Windows UI: unify typography, help and title/menu frame (#117) - #135
Merged
Merged
Conversation
6 tasks
chammoru
marked this pull request as ready for review
October 4, 2026 13:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Snap 확인 및 검증 범위 확정 / Snap hover and revised acceptance — 2026-10-04
사용자가 “Snap 확인만 하고 나머지는 안해도 될듯”이라고 요청했습니다. 남은 실제 200%·다중 모니터·고대비·전체 글리프 검사는 통과가 아닌 사용자 요청으로 생략이며, 더 이상 해당 범위의 검증 보류 사유로 두지 않습니다.
Viewer와 Comparer의 최종 Release 빌드에서 최대화 버튼 위에 포인터를 놓으면 Windows 기본 Snap 레이아웃 팝업이 표시되는 것을 확인했습니다. Viewer의 샘플 이미지/제목은 유지됐고 복원 후 File 메뉴도 정상 동작했습니다. 이 확인을 위한 제품 코드나 OS 설정 변경은 없습니다. 원래 남아 있던 Snap hover 확인은 완료했습니다.
추가 시도한 가장자리 드래그에서는 절반 크기의 배치 화면이 보였지만, 자동 도구가 Explorer 소유 Snap 팝업의 칸 클릭을 차단하고 재활성화 시 원래 크기로 돌아갔으므로 확정된 칸 선택/전체 Snap 배치 통과로 주장하지 않습니다. 이 제한은 검증 기록에 명시했습니다. 기록 커밋: 23e27c4. 사용자 지정 검증 범위는 완료했으며, master 병합·릴리즈는 아직 수행하지 않았습니다. 아래 기록의 이전 보류 항목은 이 최신 범위 결정으로 대체됩니다.
Both final Windows Release builds show the native Snap layout flyout over the DWM maximize button. This completes the previously pending Snap hover check. The user explicitly waived the other remaining environment/glyph checks; record them as waived, not passed. Extra edge-drag views are not claimed as committed zone-selection passes because Explorer popup targeting is blocked and reactivation restores prior geometry. No product or OS-setting changes for this check. See the detailed record; no master merge/release.
추가 실제 검증 결과 / Live verification follow-up — 2026-10-04
커밋: ce27006, 검증 기록. 이 절은 아래 과거 기록의 Windows 텍스트 확대·Comparer 검사 및 드래그 캡처 보류 설명을 갱신합니다.
아직 남은 수동 확인: 실제 200% 및 다중 모니터 이동, 고대비 전환, Windows Snap hover, 전체 누락 글리프/emoji 및 사용자의 최종 시각 확인. 이슈는 열어 두고 PR #135는 Draft 유지합니다. master 병합·버전 증가·릴리즈는 하지 않았습니다.
Actual Windows scales 125%, 150% and 175% passed real Comparer checks at DPI 120/144/168. Live text size 225% passed Comparer ROI/source/zoom/pan/PSNR/SSIM preservation and the full Viewer gallery/playback/GPU suite. Cap the Comparer graph at one third of content height; correct the gallery test's OS-text-size assumption. Settled native title dragging preserves menu and image pixels by direct in-app readback without corrective input; normalize the test after source auto-maximization instead of comparing different canvas sizes. Both OS settings were restored to their original 100%; final tests and both Release builds passed. Live 200%, mixed-monitor, high contrast, Snap hover and exhaustive glyph/final visual acceptance remain. Keep issue open/PR draft; no merge/release.
제목/메뉴 프레임 범위 추가 승인 — 2026-10-04
사용자가 기본 제목 표시줄과 14 DIP 메뉴의 불균형을 지적했고, 제목만 덧그리는 시제품의 부작용을 설명받은 뒤 커스텀 제목/메뉴 프레임 작업을 승인했습니다. 제목과 메뉴는 Pretendard 14 DIP 보통 굵기로 맞추고, 최소화·최대화/복원·닫기 버튼은 DWM 기본 렌더링을 유지합니다. 메뉴 줄은 접근성 이름을 가진 실제 Windows 버튼을 사용하며 기존 HMENU 펼침 메뉴·명령 ID·단축키·선택 상태를 재사용합니다. 좁은 창에서는 메뉴가 줄바꿈됩니다.
Viewer 전체화면을 종료할 때 같은 메뉴를 복원하므로 동적 항목이 중복되지 않습니다. MFC 레이아웃에 제목/메뉴 여백을 한 번만 반영했고, 도움말·탐색기 전환 오버레이는 창 버튼을 가리지 않습니다. 고대비 모드 또는 DWM 미지원에서는 기본 Windows 프레임으로 돌아갑니다. OS 전역 설정과 Qt 코드는 변경하지 않았습니다.
CoreRegressionTests, 전용 typography/frame tests 및 실제 MFC 갤러리 통합 검사(최대화/작업 영역, 원래 창 크기 복원, 전체화면 3회 왕복, 활성 파일 유지, 기존 E/재생/GPU 재생성 포함)가 통과했습니다. 실제 화면에서 제목/메뉴 균형, 기본 창 버튼, 메뉴 키보드 이동 및 제목 드래그를 확인했습니다. 상세 기록.
실제 모니터 전환·Windows 텍스트 확대·고대비 전환·Snap hover의 수동 완료 조건은 남아 있습니다. #117은 열어 두고 PR #135는 Draft를 유지하며 master 병합·릴리즈·버전 변경은 하지 않습니다. 아래의 “네이티브 메뉴바 높이를 OS에 맡긴다”는 설명은 이전 단계 기록이며, 현재 기본 모드에는 새 클라이언트 메뉴 줄이 적용됩니다.
Approved title/menu frame extension
The user explicitly approved a custom title/menu frame after native-title font-only prototypes proved unsuitable. Viewer and Comparator now use matching normal-weight 14 DIP Pretendard titles and menu text, retain native DWM window buttons, and host accessible Win32 menu buttons backed by the original HMENU popup trees and commands. Main-menu rows wrap in narrow windows. Viewer restores the same root menu across full-screen transitions; MFC reserves chrome once, and overlays cover content instead of caption controls. High contrast or unavailable DWM composition restores the native frame. No OS-wide settings or Qt changes.
Core, typography/frame, and real MFC gallery/GPU tests passed. Native visual checks cover caption/menu balance, native buttons, title dragging and keyboard menu access. See the verification record above. Live mixed-monitor/text-size/high-contrast, Snap hover and the full Comparator metrics matrix remain acceptance limits; keep the issue open and PR draft. No merge/release. Earlier native-bar-height notes below describe the superseded implementation stage.
메뉴 추가 승인 및 구현
사용자가 메뉴·본문 균형 검토 후 “코드도 변경해봐”라고 승인했습니다. 따라서 이전의 앱 주 메뉴 owner-draw 제외 범위는 이 추가 작업에 한해 대체합니다.
Approved menu extension
The user explicitly approved menu code changes after reviewing the native typography balance. Style main application menus with normal-weight Pretendard 14 DIP, wider horizontal padding and at least 30 DIP dropdown rows. The native bar height remains OS-owned, and bar text fits inside it. Preserve real HMENUs, native tracking, IDs/states/shortcuts and accessible names. Retain the native submenu chevron; paint check/radio states explicitly. No master merge, release or next design job.
요약
#117의 합의 범위만 구현했습니다. 기존 Pretendard를 유지하고 Viewer/Comparator 도움말 설명문과 일반 UI 텍스트의 역할별 크기·굵기, DPI/Windows 텍스트 확대, 캐시와 영역 측정을 정리했습니다. 숫자 고정폭 글꼴, 시스템 메뉴·일반 우클릭 메뉴·Windows 대화상자는 의도적인 예외입니다. 사용자의 추가 승인에 따라 앱 주 메뉴는 Pretendard로 맞췄습니다.
도움말을 실제 측정한 두 열로 나누고 줄바꿈·스크롤·Esc 닫기를 지원합니다. 글꼴 교체 전 DC 선택 상태를 복구하고 영상 진행 표시줄과 Comparator 헤더·타임라인·그래프 영역을 텍스트 크기에 맞췄습니다. 작은 창에서도 splitter 크기가 음수가 되지 않도록 방어했습니다.
검증
전체 수동 완료 조건을 대신 체크하지 않았습니다. 실제 Windows Settings 텍스트 확대 및 서로 다른 DPI 모니터 간 이동, 모든 누락 글리프/emoji, Comparator ROI/측정 조작의 전체 시각 검증은 남아 있습니다. 따라서 Draft 상태로 올리고 #117을 열어 둡니다.
상세 명령과 한계: verification record. 다음 디자인 작업, Qt, 렌더링·측정 알고리즘, 릴리즈·Store 게시·버전 증가·master 병합은 포함하지 않습니다.
English
Refs #117. Finish remaining app-drawn prose with the existing Pretendard family, shared role sizing and Windows text scaling. Preserve numeric monospace, native Windows fonts and existing commands. Measure/wrap/scroll help rather than space-aligning proportional text; reuse fonts and restore persistent DC state before replacement. Scale affected text bounds and prevent negative small-window splitter dimensions.
Local core/typography tests, both Release x64 builds and the native gallery integration suite passed. The explicit DPI/text-scale test matrix is not a live mixed-monitor or Windows Settings test. Keep this PR draft and the issue open for remaining native visual acceptance; no release or automatic next-job execution.