Browse Source

Move topmost to WindowBase

pull/1647/head
CommonGuy 8 years ago
parent
commit
42121ec2c1
  1. 5
      src/Avalonia.Controls/Platform/IWindowBaseImpl.cs
  2. 5
      src/Avalonia.Controls/Platform/IWindowImpl.cs
  3. 14
      src/Avalonia.Controls/Window.cs
  4. 14
      src/Avalonia.Controls/WindowBase.cs
  5. 2
      src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs
  6. 2
      src/Gtk/Avalonia.Gtk3/WindowImpl.cs
  7. 1
      src/OSX/Avalonia.MonoMac/WindowBaseImpl.cs
  8. 5
      src/OSX/Avalonia.MonoMac/WindowImpl.cs

5
src/Avalonia.Controls/Platform/IWindowBaseImpl.cs

@ -72,6 +72,11 @@ namespace Avalonia.Platform
///
void SetMinMaxSize(Size minSize, Size maxSize);
/// <summary>
/// Sets whether this window appears on top of all other windows
/// </summary>
void SetTopmost(bool value);
/// <summary>
/// Gets platform specific display information
/// </summary>

5
src/Avalonia.Controls/Platform/IWindowImpl.cs

@ -55,11 +55,6 @@ namespace Avalonia.Platform
/// </summary>
void CanResize(bool value);
/// <summary>
/// Gets or sets whether this window appears on top of all other windows
/// </summary>
void SetTopmost(bool value);
/// <summary>
/// Gets or sets a method called before the underlying implementation is destroyed.
/// Return true to prevent the underlying implementation from closing.

14
src/Avalonia.Controls/Window.cs

@ -104,9 +104,6 @@ namespace Avalonia.Controls
public static readonly StyledProperty<bool> CanResizeProperty =
AvaloniaProperty.Register<Window, bool>(nameof(CanResize), true);
public static readonly StyledProperty<bool> TopmostProperty =
AvaloniaProperty.Register<Window, bool>(nameof(Topmost));
private readonly NameScope _nameScope = new NameScope();
private object _dialogResult;
private readonly Size _maxPlatformClientSize;
@ -128,8 +125,6 @@ namespace Avalonia.Controls
CanResizeProperty.Changed.AddClassHandler<Window>((w, e) => w.PlatformImpl?.CanResize((bool)e.NewValue));
TopmostProperty.Changed.AddClassHandler<Window>((w, e) => w.PlatformImpl?.SetTopmost((bool)e.NewValue));
WindowStateProperty.Changed.AddClassHandler<Window>(
(w, e) => { if (w.PlatformImpl != null) w.PlatformImpl.WindowState = (WindowState)e.NewValue; });
}
@ -235,15 +230,6 @@ namespace Avalonia.Controls
set { SetValue(CanResizeProperty, value); }
}
/// <summary>
/// Gets or sets whether this window appears on top of all other windows
/// </summary>
public bool Topmost
{
get { return GetValue(TopmostProperty); }
set { SetValue(TopmostProperty, value); }
}
/// <summary>
/// Gets or sets the icon of the window.
/// </summary>

14
src/Avalonia.Controls/WindowBase.cs

@ -38,6 +38,9 @@ namespace Avalonia.Controls
o => o.Owner,
(o, v) => o.Owner = v);
public static readonly StyledProperty<bool> TopmostProperty =
AvaloniaProperty.Register<WindowBase, bool>(nameof(Topmost));
private bool _hasExecutedInitialLayoutPass;
private bool _isActive;
private bool _ignoreVisibilityChange;
@ -52,6 +55,8 @@ namespace Avalonia.Controls
MinHeightProperty.Changed.AddClassHandler<WindowBase>((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, (double)e.NewValue), new Size(w.MaxWidth, w.MaxHeight)));
MaxWidthProperty.Changed.AddClassHandler<WindowBase>((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, w.MinHeight), new Size((double)e.NewValue, w.MaxHeight)));
MaxHeightProperty.Changed.AddClassHandler<WindowBase>((w, e) => w.PlatformImpl?.SetMinMaxSize(new Size(w.MinWidth, w.MinHeight), new Size(w.MaxWidth, (double)e.NewValue)));
TopmostProperty.Changed.AddClassHandler<WindowBase>((w, e) => w.PlatformImpl?.SetTopmost((bool)e.NewValue));
}
public WindowBase(IWindowBaseImpl impl) : this(impl, AvaloniaLocator.Current)
@ -124,6 +129,15 @@ namespace Avalonia.Controls
set { SetAndRaise(OwnerProperty, ref _owner, value); }
}
/// <summary>
/// Gets or sets whether this window appears on top of all other windows
/// </summary>
public bool Topmost
{
get { return GetValue(TopmostProperty); }
set { SetValue(TopmostProperty, value); }
}
/// <summary>
/// Activates the window.
/// </summary>

2
src/Gtk/Avalonia.Gtk3/WindowBaseImpl.cs

@ -416,6 +416,8 @@ namespace Avalonia.Gtk3
public void Hide() => Native.GtkWidgetHide(GtkWidget);
public void SetTopmost(bool value) => Native.GtkWindowSetKeepAbove(GtkWidget, value);
void GetGlobalPointer(out int x, out int y)
{
int mask;

2
src/Gtk/Avalonia.Gtk3/WindowImpl.cs

@ -82,8 +82,6 @@ namespace Avalonia.Gtk3
public void CanResize(bool value) => Native.GtkWindowSetResizable(GtkWidget, value);
public void SetTopmost(bool value) => Native.GtkWindowSetKeepAbove(GtkWidget, value);
class EmptyDisposable : IDisposable
{

1
src/OSX/Avalonia.MonoMac/WindowBaseImpl.cs

@ -123,6 +123,7 @@ namespace Avalonia.MonoMac
public void Hide() => Window?.OrderOut(Window);
public void SetTopmost(bool value) => Window.Level = value ? NSWindowLevel.Floating : NSWindowLevel.Normal;
public void BeginMoveDrag()
{

5
src/OSX/Avalonia.MonoMac/WindowImpl.cs

@ -116,11 +116,6 @@ namespace Avalonia.MonoMac
UpdateStyle();
}
public void SetTopmost(bool value)
{
Window.Level = value ? NSWindowLevel.Floating : NSWindowLevel.Normal;
}
public void SetTitle(string title) => Window.Title = title;
class ModalDisposable : IDisposable

Loading…
Cancel
Save