From 42a26dca2c8be80b678daf40d00ca51bfc29a4d6 Mon Sep 17 00:00:00 2001 From: Peter <17495311+DorwinDT@users.noreply.github.com> Date: Fri, 23 Oct 2026 15:01:43 +0200 Subject: [PATCH 1/2] Add setting to start the main window non-maximized, centered on screen Adds "Start in fullscreen mode" toggle under Settings > General. When off, LogViewer starts in a normal window centered on the screen instead of maximized. Default stays maximized to match prior behavior for existing installs. Co-Authored-By: Claude Sonnet 5 --- src/Localization/Locals.Designer.cs | 20 ++++++- src/Localization/Locals.en.resx | 6 +++ src/Localization/Locals.resx | 6 +++ src/MVVM/Models/Settings.cs | 7 +++ src/MVVM/ViewModels/SettingsViewModel.cs | 16 ++++++ src/MVVM/Views/MainWindow.xaml | 2 +- src/MVVM/Views/MainWindow.xaml.cs | 1 + src/MVVM/Views/SettingsWindow.xaml | 68 +++++++++++++----------- 8 files changed, 92 insertions(+), 34 deletions(-) diff --git a/src/Localization/Locals.Designer.cs b/src/Localization/Locals.Designer.cs index 81a5e18..aa7504c 100644 --- a/src/Localization/Locals.Designer.cs +++ b/src/Localization/Locals.Designer.cs @@ -1246,7 +1246,25 @@ internal static string MinimizeToTrayIconToolTip { return ResourceManager.GetString("MinimizeToTrayIconToolTip", resourceCulture); } } - + + /// + /// Looks up a localized string similar to Запускать в полноэкранном режиме:. + /// + internal static string StartMaximized { + get { + return ResourceManager.GetString("StartMaximized", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Если выключено, приложение запускается в обычном окне, а не развёрнутым на весь экран. + /// + internal static string StartMaximizedToolTip { + get { + return ResourceManager.GetString("StartMaximizedToolTip", resourceCulture); + } + } + /// /// Looks up a localized string similar to Название. /// diff --git a/src/Localization/Locals.en.resx b/src/Localization/Locals.en.resx index fedd51e..ba2f174 100644 --- a/src/Localization/Locals.en.resx +++ b/src/Localization/Locals.en.resx @@ -261,6 +261,12 @@ Show a tray icon when Log Viewer is minimized. + + Start in fullscreen mode: + + + When off, the application starts in a normal window instead of maximized. + Only one application instance: diff --git a/src/Localization/Locals.resx b/src/Localization/Locals.resx index c1bb89e..8cc80f0 100644 --- a/src/Localization/Locals.resx +++ b/src/Localization/Locals.resx @@ -346,6 +346,12 @@ Показывать иконку в трее при сворачивании приложения + + Запускать в полноэкранном режиме: + + + Если выключено, приложение запускается в обычном окне, а не развёрнутым на весь экран + Не добавлено ни одного сетевого приёмника. Добавьте хотя бы один сетевой приёмник в настройках. diff --git a/src/MVVM/Models/Settings.cs b/src/MVVM/Models/Settings.cs index 739ef1c..8ffe803 100644 --- a/src/MVVM/Models/Settings.cs +++ b/src/MVVM/Models/Settings.cs @@ -28,6 +28,12 @@ public sealed class Settings : ISerializable public bool AutoStartInStartup { get; set; } = false; public bool MinimizeToTray { get; set; } = false; + + /// + /// Start the main window maximized. Missing value in old settings.xml keeps the default (true), + /// matching the behavior before this setting existed. + /// + public bool StartMaximized { get; set; } = true; public bool OnlyOneAppInstance { get; set; } = false; public bool IsEnabledMaxMessageBufferSize { get; set; } = false; public int MaxMessageBufferSize { get; set; } = 1000000; @@ -193,6 +199,7 @@ public void Load() { Instance.AutoStartInStartup = settings.AutoStartInStartup; Instance.MinimizeToTray = settings.MinimizeToTray; + Instance.StartMaximized = settings.StartMaximized; Instance.CurrentTheme = settings.CurrentTheme; Instance.DataFormat = settings.DataFormat; Instance.IgnoredIPs = settings.IgnoredIPs; diff --git a/src/MVVM/ViewModels/SettingsViewModel.cs b/src/MVVM/ViewModels/SettingsViewModel.cs index 0f18626..2097a95 100644 --- a/src/MVVM/ViewModels/SettingsViewModel.cs +++ b/src/MVVM/ViewModels/SettingsViewModel.cs @@ -26,6 +26,7 @@ public class SettingsViewModel : BaseViewModel private bool isConfigurationVisible = false; private bool isAutoStartReadAtStartup = true; private bool minimizeToTray = false; + private bool startMaximized = true; private bool isEnableMaxMessageBufferSize = false; private bool onlyOneAppInstance = true; private Receiver selectedReceiver; @@ -107,6 +108,19 @@ public bool MinimizeToTray } + /// + /// Start the main window maximized. + /// + public bool StartMaximized + { + get => startMaximized; + set + { + startMaximized = value; + OnPropertyChanged(); + } + } + /// /// Honor the maximum message buffer size. /// @@ -566,6 +580,7 @@ public SettingsViewModel() IgnoredIpAdresses = new ObservableCollection(Settings.Instance.IgnoredIPs); IsAutoStartReadAtStartup = Settings.Instance.AutoStartInStartup; MinimizeToTray = Settings.Instance.MinimizeToTray; + StartMaximized = Settings.Instance.StartMaximized; OnlyOneAppInstance = Settings.Instance.OnlyOneAppInstance; CheckForUpdatesOnStartup = Settings.Instance.CheckForUpdatesOnStartup; SelectedDataFormat = Settings.Instance.DataFormat; @@ -701,6 +716,7 @@ private void Save(object obj) Settings.Instance.MinimizeToTray = MinimizeToTray; Settings.Instance.AutoStartInStartup = IsAutoStartReadAtStartup; + Settings.Instance.StartMaximized = StartMaximized; Settings.Instance.IsShowSourceColumn = IsShowSourceColumn; Settings.Instance.IsShowThreadColumn = IsShowThreadColumn; Settings.Instance.IsShowTaskbarProgress = IsShowTaskbarProgress; diff --git a/src/MVVM/Views/MainWindow.xaml b/src/MVVM/Views/MainWindow.xaml index ae074f5..f8592fc 100644 --- a/src/MVVM/Views/MainWindow.xaml +++ b/src/MVVM/Views/MainWindow.xaml @@ -10,7 +10,7 @@ xmlns:viewModels="clr-namespace:LogViewer.MVVM.ViewModels" xmlns:localization="clr-namespace:LogViewer.Localization" mc:Ignorable="d" - Title="Log Viewer" Height="1080" Width="1920" WindowState="Maximized" Loaded="MainWindow_OnLoaded" + Title="Log Viewer" Height="1080" Width="1920" WindowStartupLocation="CenterScreen" Loaded="MainWindow_OnLoaded" AllowDrop="True" DragOver="Window_OnDragOver" Drop="Window_OnDrop"> diff --git a/src/MVVM/Views/MainWindow.xaml.cs b/src/MVVM/Views/MainWindow.xaml.cs index ad2e029..2c999bc 100644 --- a/src/MVVM/Views/MainWindow.xaml.cs +++ b/src/MVVM/Views/MainWindow.xaml.cs @@ -49,6 +49,7 @@ public partial class MainWindow : Window, IDisposable public MainWindow() { InitializeComponent(); + WindowState = Settings.Instance.StartMaximized ? WindowState.Maximized : WindowState.Normal; UpdateAutoScrollChrome(); logsViewKeeper = new ListViewViewKeeper(LogsListView, () => AutoScrollEnabled); TranslationSource.Instance.LanguageChanged += (_, __) => UpdateAutoScrollChrome(); diff --git a/src/MVVM/Views/SettingsWindow.xaml b/src/MVVM/Views/SettingsWindow.xaml index f455292..73ec745 100644 --- a/src/MVVM/Views/SettingsWindow.xaml +++ b/src/MVVM/Views/SettingsWindow.xaml @@ -55,6 +55,7 @@ + @@ -72,38 +73,41 @@ - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -111,14 +115,14 @@ - - + +