fix: white line in fullscreen mode

This commit is contained in:
Zhe Fang
2025-12-13 07:58:28 -05:00
parent 2412927b29
commit 4c4231b48c
2 changed files with 25 additions and 14 deletions

View File

@@ -13,6 +13,7 @@ using System.Runtime.InteropServices;
using Vanara.PInvoke;
using Windows.ApplicationModel.Core;
using Windows.Foundation;
using Windows.UI.WindowManagement;
using WinRT.Interop;
using WinUIEx;
@@ -282,23 +283,27 @@ namespace BetterLyrics.WinUI3.Hooks
}
}
public static void SetIsFullscreen(this Window window, bool enable)
public static bool SetIsFullscreen(this Window window, bool enable, bool defaultExtendsContentIntoTitleBar = true)
{
if (window.AppWindow == null) return;
if (window.AppWindow == null) return false;
if (enable)
{
window.ExtendsContentIntoTitleBar = false;
window.AppWindow.SetPresenter(AppWindowPresenterKind.FullScreen);
}
else
{
window.ExtendsContentIntoTitleBar = defaultExtendsContentIntoTitleBar;
window.AppWindow.SetPresenter(AppWindowPresenterKind.Overlapped);
}
return true;
}
public static void SetIsMaximized(this Window window, bool enable)
public static bool SetIsMaximized(this Window window, bool enable)
{
if (window.AppWindow == null) return;
if (window.AppWindow == null) return false;
if (enable)
{
@@ -308,6 +313,8 @@ namespace BetterLyrics.WinUI3.Hooks
{
window.Restore();
}
return true;
}
public static void SetIsShowInSwitchers(this Window window, bool enable)

View File

@@ -204,20 +204,24 @@ namespace BetterLyrics.WinUI3.Views
private void OnIsFullscreenChanged()
{
this.SetIsFullscreen(LyricsWindowStatus.IsFullscreen);
EnterFullscreenFontIcon.Opacity = LyricsWindowStatus.IsFullscreen ? 0 : 1;
ExitFullscreenFontIcon.Opacity = LyricsWindowStatus.IsFullscreen ? 1 : 0;
MaximizeButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
AOTButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
MinimizeButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
LockButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
if (this.SetIsFullscreen(LyricsWindowStatus.IsFullscreen))
{
EnterFullscreenFontIcon.Opacity = LyricsWindowStatus.IsFullscreen ? 0 : 1;
ExitFullscreenFontIcon.Opacity = LyricsWindowStatus.IsFullscreen ? 1 : 0;
MaximizeButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
AOTButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
MinimizeButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
LockButton.Visibility = LyricsWindowStatus.IsFullscreen ? Visibility.Collapsed : Visibility.Visible;
}
}
private void OnIsMaximizedChanged()
{
this.SetIsMaximized(LyricsWindowStatus.IsMaximized);
EnterMaximizeFontIcon.Opacity = LyricsWindowStatus.IsMaximized ? 0 : 1;
ExitMaximizeFontIcon.Opacity = LyricsWindowStatus.IsMaximized ? 1 : 0;
if (this.SetIsMaximized(LyricsWindowStatus.IsMaximized))
{
EnterMaximizeFontIcon.Opacity = LyricsWindowStatus.IsMaximized ? 0 : 1;
ExitMaximizeFontIcon.Opacity = LyricsWindowStatus.IsMaximized ? 1 : 0;
}
}
private void OnAutoShowOrHideWindowChanged()