WIP 256 폰 가로 MKV 화면: 인코딩 줄은 한 줄 (설명 · 경고 앞), 작업 기록은 작게 - 목록이 한 줄만 보이던 것 (검토 대기)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
backup_묶음6_d46e089
RyuJongJin 2026-10-12 08:01:46 +09:00
parent 9005cf48d7
commit ad9386becd
2 changed files with 52 additions and 2 deletions

View File

@ -106,8 +106,9 @@ class HomePage extends StatelessWidget {
Padding(padding: const EdgeInsets.symmetric(horizontal: 12), child: DnsFailureLine(c: c)),
if (c.settings.showLog)
SizedBox(
// 화면이 낮은 기기 (휴대폰 가로) 에서 목록 · 자세히 보기를 가리지 않도록 화면 높이에 맞춘다
height: (MediaQuery.sizeOf(context).height * 0.22).clamp(80.0, 140.0),
// 화면이 낮은 기기 (휴대폰 가로) 에서 목록 · 자세히 보기를 가리지 않도록 화면 높이에 맞춘다.
// 256: 폰 가로 (높이 500 미만) 는 더 작게 - 목록이 한 줄만 보였다
height: MediaQuery.sizeOf(context).height < 500 ? 52 : (MediaQuery.sizeOf(context).height * 0.22).clamp(80.0, 140.0),
child: _LogPanel(
logs: c.logs,
onClose: () => c.updateSettings((s) => s.showLog = false),
@ -642,6 +643,24 @@ class _EncodeBar extends StatelessWidget {
),
]);
// 241 시험에서 찾음: 폭 720 ~ 840 (노트 10+ 가로 등) 에서 한 줄이 넘쳤다 - 960 보다 좁으면 폰처럼 줄을 바꿔 보인다 (내 판단)
// 256: 낮은 화면 (폰 가로) 은 여러 줄로 감기면 목록이 한 줄만 보였다 - 한 줄로 옆으로 밀게.
// 31: 설명 · "⚠ 원본보다 커서" 경고는 맨 앞에 (밀지 않아도 보이게)
if (!compact && MediaQuery.sizeOf(context).height < 500) {
final text = [for (final w in row.children) if (w is Expanded) w.child];
return Container(
width: double.infinity,
height: 44,
color: JjColors.panel,
padding: const EdgeInsets.symmetric(horizontal: 8),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(children: [
for (final t in text) ...[ConstrainedBox(constraints: const BoxConstraints(maxWidth: 360), child: t), const SizedBox(width: 16)],
for (final w in row.children) if (w is! Expanded) w,
]),
),
);
}
if (compact || MediaQuery.sizeOf(context).width < 960) {
return Container(
width: double.infinity,

View File

@ -0,0 +1,31 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:jj_mkvmaker/app/app_controller.dart';
import 'package:jj_mkvmaker/core/models.dart';
import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart';
import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart';
import 'package:jj_mkvmaker/services/platform_services.dart';
import 'package:jj_mkvmaker/ui/home_page.dart';
/// 256: 폰 가로 (노트 10+ 869×411) 의 MKV 화면 - 작업 기록 · 인코딩 줄이 높이를 다 차지해 목록이 한 줄만 보였다
void main() {
testWidgets('256: 폰 가로에서 작업 기록을 켜도 목록이 3줄 넘게 보인다', (tester) async {
tester.view.physicalSize = const Size(869, 411);
tester.view.devicePixelRatio = 1;
addTearDown(tester.view.reset);
final c = AppController(PlatformServices(mediaTool: ProcessMediaTool('x', 'y'), storage: DesktopStorageService()));
c.settings.showLog = true;
for (var i = 1; i <= 6; i++) {
c.videos.add(VideoItem('D:\\v\\영상$i.mp4'));
}
c.selected = c.videos.first;
await tester.pumpWidget(MaterialApp(home: HomePage(c: c)));
await tester.pump();
expect(tester.takeException(), isNull);
final visible = [
for (var i = 1; i <= 6; i++)
if (find.text('영상$i.mp4').evaluate().isNotEmpty && tester.getRect(find.text('영상$i.mp4').first).bottom <= 411) i,
];
expect(visible.length, greaterThanOrEqualTo(3), reason: '보이는 목록 줄: $visible');
});
}