From 694ec3f3d4aca3bdcbf97838d6fec55c0af12a31 Mon Sep 17 00:00:00 2001 From: Static <107908377+statictx@users.noreply.github.com> Date: Mon, 14 Apr 2025 10:00:14 -0400 Subject: [PATCH] Add support to keep the console window on top of all other applications. (#1) * Add support for keeping console window on top. * Fixes for 'always on top' setting. --------- Co-authored-by: statictx --- dvmconsole/MainWindow.xaml | 2 ++ dvmconsole/MainWindow.xaml.cs | 16 ++++++++++++++++ dvmconsole/SettingsManager.cs | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/dvmconsole/MainWindow.xaml b/dvmconsole/MainWindow.xaml index 22cbaaf..114ee68 100644 --- a/dvmconsole/MainWindow.xaml +++ b/dvmconsole/MainWindow.xaml @@ -53,6 +53,8 @@ + + diff --git a/dvmconsole/MainWindow.xaml.cs b/dvmconsole/MainWindow.xaml.cs index 83da291..2a222cf 100644 --- a/dvmconsole/MainWindow.xaml.cs +++ b/dvmconsole/MainWindow.xaml.cs @@ -1084,6 +1084,7 @@ namespace dvmconsole menuToggleLockWidgets.IsChecked = settingsManager.LockWidgets; menuSnapCallHistory.IsChecked = settingsManager.SnapCallHistoryToWindow; menuTogglePTTMode.IsChecked = settingsManager.TogglePTTMode; + menuKeepWindowOnTop.IsChecked = settingsManager.KeepWindowOnTop; if (!string.IsNullOrEmpty(settingsManager.LastCodeplugPath) && File.Exists(settingsManager.LastCodeplugPath)) LoadCodeplug(settingsManager.LastCodeplugPath); @@ -1580,6 +1581,21 @@ namespace dvmconsole settingsManager.SnapCallHistoryToWindow = !settingsManager.SnapCallHistoryToWindow; } + /// + /// + /// + /// + /// + private void ToggleKeepWindowOnTop_Click(object sender, RoutedEventArgs e) + { + this.Topmost = !this.Topmost; + + if (!windowLoaded) + return; + + settingsManager.KeepWindowOnTop = !settingsManager.KeepWindowOnTop; + } + /// /// /// diff --git a/dvmconsole/SettingsManager.cs b/dvmconsole/SettingsManager.cs index 6726f13..b6ac853 100644 --- a/dvmconsole/SettingsManager.cs +++ b/dvmconsole/SettingsManager.cs @@ -95,6 +95,11 @@ namespace dvmconsole /// public bool SnapCallHistoryToWindow { get; set; } = false; + /// + /// Flag indicating whether or not to keep the window on top. + /// + public bool KeepWindowOnTop { get; set; } = false; + /// /// Flag indicating window maximized state. /// @@ -173,6 +178,7 @@ namespace dvmconsole TogglePTTMode = loadedSettings.TogglePTTMode; LockWidgets = loadedSettings.LockWidgets; SnapCallHistoryToWindow = loadedSettings.SnapCallHistoryToWindow; + KeepWindowOnTop = loadedSettings.KeepWindowOnTop; Maximized = loadedSettings.Maximized; DarkMode = loadedSettings.DarkMode; WindowWidth = loadedSettings.WindowWidth;