From ed21efc7bc83692383e5f52fabed273f4527a78f Mon Sep 17 00:00:00 2001 From: SingLinkNetwork Date: Mon, 10 Aug 2026 04:08:42 +0800 Subject: [PATCH] fix(linux): restore saved window size on startup --- lib/common/window.dart | 7 +++++++ test/manager/window_manager_test.dart | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/common/window.dart b/lib/common/window.dart index 17c5e05a..c3100bd0 100755 --- a/lib/common/window.dart +++ b/lib/common/window.dart @@ -6,6 +6,10 @@ import 'package:flutter/material.dart'; import 'package:screen_retriever/screen_retriever.dart'; import 'package:window_manager/window_manager.dart'; +bool shouldRestoreWindowSize(WindowProps props) { + return props.width > 0 && props.height > 0; +} + class Window { static Window? _instance; @@ -40,6 +44,9 @@ class Window { await windowManager.setMaximizable(true); await _windowPosition(props); await windowManager.waitUntilReadyToShow(windowOptions, () async { + if (shouldRestoreWindowSize(props)) { + await windowManager.setSize(props.size); + } await windowManager.setPreventClose(true); }); } diff --git a/test/manager/window_manager_test.dart b/test/manager/window_manager_test.dart index 0ae06aa5..4a2fac76 100644 --- a/test/manager/window_manager_test.dart +++ b/test/manager/window_manager_test.dart @@ -1,4 +1,5 @@ import 'package:fl_clash/manager/window_manager.dart'; +import 'package:fl_clash/common/window.dart'; import 'package:fl_clash/models/models.dart'; import 'package:fl_clash/providers/config.dart'; import 'package:flutter/material.dart'; @@ -56,4 +57,15 @@ void main() { const WindowProps(width: 1024, height: 768), ); }); + + test('restores an explicitly saved window size on startup', () { + expect( + shouldRestoreWindowSize(const WindowProps(width: 1024, height: 768)), + isTrue, + ); + }); + + test('does not restore an absent window size on startup', () { + expect(shouldRestoreWindowSize(const WindowProps()), isFalse); + }); }