From cc05fcad3c80117c9845c0a620358dd2adf19a54 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Fri, 9 Oct 2026 22:51:41 +0900 Subject: [PATCH] =?UTF-8?q?174=20MKV=20=ED=99=94=EB=A9=B4=EC=9D=B4=20?= =?UTF-8?q?=EB=A7=A8=20=EC=B2=98=EC=9D=8C=20=ED=99=94=EB=A9=B4=EC=9D=B4=20?= =?UTF-8?q?=EC=95=84=EB=8B=88=EC=96=B4=EB=8F=84=20(=ED=99=88=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=3D=20=ED=83=90=EC=83=89=EA=B8=B0=20=EB=93=B1)=20MK?= =?UTF-8?q?V=20=EC=95=84=EC=9D=B4=EC=BD=98=EC=9D=B4=20"=EC=A7=80=EA=B8=88?= =?UTF-8?q?=20=EC=97=AC=EA=B8=B0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 위쪽 아이콘 줄이 MKV 를 맨 처음 화면일 때만 알아봐, 홈 화면이 다른 화면인 사용자는 MKV 화면에서 아무것도 파랗지 않았다 - 다른 화면처럼 MKV 화면이 스스로 알린다 (AppNavButtons onMkvPage) - 시험: 다른 화면 위에 연 MKV 화면에서 MKV 아이콘이 지금 여기 Co-Authored-By: Claude Opus 5.5 --- lib/ui/app_actions.dart | 8 ++++++-- lib/ui/home_page.dart | 4 ++-- test/components_test.dart | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/lib/ui/app_actions.dart b/lib/ui/app_actions.dart index 6bc291a..cafc0ac 100644 --- a/lib/ui/app_actions.dart +++ b/lib/ui/app_actions.dart @@ -98,13 +98,17 @@ class AppNavButtons extends StatelessWidget { /// AI 그림 화면 자신 (123) final bool onAiPage; + + /// 174: MKV 화면 자신 - 홈 화면이 탐색기 등이면 MKV 화면이 맨 처음 화면이 아닐 수 있어 따로 알린다 + final bool onMkvPage; const AppNavButtons( {super.key, this.onDownloadsPage = false, this.onBrowserPage = false, this.onExplorerPage = false, this.onRsyncPage = false, - this.onAiPage = false}); + this.onAiPage = false, + this.onMkvPage = false}); /// 버튼 줄의 가장 넓은 폭 (JJ · 화면 6개 · 뒤로) static const double width = 8 * 40; @@ -214,7 +218,7 @@ class AppNavButtons extends StatelessWidget { ? 'rsync' : onAiPage ? 'aiimage' - : atRoot + : onMkvPage || atRoot ? 'mkv' : ''; final pages = scope == null ? const [] : pagesOf(scope); diff --git a/lib/ui/home_page.dart b/lib/ui/home_page.dart index de60a2b..c981379 100644 --- a/lib/ui/home_page.dart +++ b/lib/ui/home_page.dart @@ -264,7 +264,7 @@ class _TopBar extends StatelessWidget { VoidCallback? build0() => !canBuild ? null : (batch.isEmpty ? () => _confirmBuildAll(context) : () => c.buildVideos(batch)); return AppTopBar( - nav: const AppNavButtons(), + nav: const AppNavButtons(onMkvPage: true), actions: AppActions(c: c, onExit: onExit, showUsage: false), middle: SingleChildScrollView( scrollDirection: Axis.horizontal, @@ -315,7 +315,7 @@ class _TopBar extends StatelessWidget { return AppTopBar( // 모든 화면 공통: [JJ 홈] [MKV 화면] [뒤로] [다운로드 목록] - nav: const AppNavButtons(), + nav: const AppNavButtons(onMkvPage: true), // 화면 크기 · 환경 설정 · 종료: 모든 화면에서 같은 자리 actions: AppActions(c: c, onExit: onExit, showUsage: usage), middle: Row( diff --git a/test/components_test.dart b/test/components_test.dart index bb31c08..eba6650 100644 --- a/test/components_test.dart +++ b/test/components_test.dart @@ -137,4 +137,23 @@ void main() { expect(AppSettings().browserSwipeHinted, isFalse); expect(AppSettings.fromJson((AppSettings()..browserSwipeHinted = true).toJson()).browserSwipeHinted, isTrue); }); + + testWidgets('174: MKV 화면이 맨 처음 화면이 아니어도 (홈 화면 = 탐색기 등) MKV 아이콘이 "지금 여기"', (tester) async { + tester.view.physicalSize = const Size(1500, 900); + tester.view.devicePixelRatio = 1; + addTearDown(tester.view.reset); + final c = _plain(); + c.settings + ..components = ['mkv', 'explorer'] + ..navOrder = ['mkv', 'explorer']; + final navKey = GlobalKey(); + await tester.pumpWidget(MaterialApp( + navigatorKey: navKey, + builder: (context, child) => AppScope(controller: c, child: child!), + home: const Scaffold(body: Text('맨 처음 화면')), + )); + navKey.currentState!.push(MaterialPageRoute(builder: (_) => HomePage(c: c))); + await tester.pumpAndSettle(); + expect(find.byTooltip('MKV 화면 (지금 여기)'), findsOneWidget); + }); }