Merge pull request #291 from yangjieshao/main
窗口全屏切换 从退出全屏时肯定变为Normal改成变为进入全屏前的状态(即 也可能进入Maximized状态)
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 3.1 MiB After Width: | Height: | Size: 112 KiB |
@@ -265,6 +265,7 @@ public class ImageViewer: TemplatedControl
|
|||||||
if (scale < _sourceMinScale) scale = _sourceMinScale;
|
if (scale < _sourceMinScale) scale = _sourceMinScale;
|
||||||
Scale = scale;
|
Scale = scale;
|
||||||
}
|
}
|
||||||
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnPointerMoved(PointerEventArgs e)
|
protected override void OnPointerMoved(PointerEventArgs e)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using Avalonia;
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Controls.Metadata;
|
using Avalonia.Controls.Metadata;
|
||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
@@ -26,6 +26,10 @@ public class CaptionButtons: Avalonia.Controls.Chrome.CaptionButtons
|
|||||||
|
|
||||||
private IDisposable? _visibilityDisposable;
|
private IDisposable? _visibilityDisposable;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 切换进入全屏前 窗口的状态
|
||||||
|
/// </summary>
|
||||||
|
private WindowState? _oldWindowState;
|
||||||
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
|
||||||
{
|
{
|
||||||
_closeButton = e.NameScope.Get<Button>(PART_CloseButton);
|
_closeButton = e.NameScope.Get<Button>(PART_CloseButton);
|
||||||
@@ -36,6 +40,8 @@ public class CaptionButtons: Avalonia.Controls.Chrome.CaptionButtons
|
|||||||
Button.ClickEvent.AddHandler((o, args) => OnRestore(), _restoreButton);
|
Button.ClickEvent.AddHandler((o, args) => OnRestore(), _restoreButton);
|
||||||
Button.ClickEvent.AddHandler((o, args) => OnMinimize(), _minimizeButton);
|
Button.ClickEvent.AddHandler((o, args) => OnMinimize(), _minimizeButton);
|
||||||
Button.ClickEvent.AddHandler((o, args) => OnToggleFullScreen(), _fullScreenButton);
|
Button.ClickEvent.AddHandler((o, args) => OnToggleFullScreen(), _fullScreenButton);
|
||||||
|
|
||||||
|
Window.WindowStateProperty.Changed.AddClassHandler<Window, WindowState>(WindowStateChanged);
|
||||||
if (this.HostWindow is not null && !HostWindow.CanResize)
|
if (this.HostWindow is not null && !HostWindow.CanResize)
|
||||||
{
|
{
|
||||||
_restoreButton.IsEnabled = false;
|
_restoreButton.IsEnabled = false;
|
||||||
@@ -43,6 +49,29 @@ public class CaptionButtons: Avalonia.Controls.Chrome.CaptionButtons
|
|||||||
UpdateVisibility();
|
UpdateVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void WindowStateChanged(Window window, AvaloniaPropertyChangedEventArgs<WindowState> e)
|
||||||
|
{
|
||||||
|
if (window != HostWindow) return;
|
||||||
|
if (e.NewValue.Value == WindowState.FullScreen)
|
||||||
|
{
|
||||||
|
_oldWindowState = e.OldValue.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnToggleFullScreen()
|
||||||
|
{
|
||||||
|
if (HostWindow != null)
|
||||||
|
{
|
||||||
|
if (HostWindow.WindowState != WindowState.FullScreen)
|
||||||
|
{
|
||||||
|
HostWindow.WindowState = WindowState.FullScreen;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HostWindow.WindowState = _oldWindowState.HasValue ? _oldWindowState.Value : WindowState.Normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
public override void Attach(Window hostWindow)
|
public override void Attach(Window hostWindow)
|
||||||
{
|
{
|
||||||
base.Attach(hostWindow);
|
base.Attach(hostWindow);
|
||||||
|
|||||||
Reference in New Issue
Block a user