Browse Source

Allow assigning null to Window.Icon.

pull/3558/head
Steven Kirk 7 years ago
parent
commit
384ff5992a
  1. 2
      src/Avalonia.Controls/Window.cs
  2. 4
      src/Avalonia.X11/X11Window.cs
  3. 2
      src/Windows/Avalonia.Win32/WindowImpl.cs

2
src/Avalonia.Controls/Window.cs

@ -129,7 +129,7 @@ namespace Avalonia.Controls
ShowInTaskbarProperty.Changed.AddClassHandler<Window>((w, e) => w.PlatformImpl?.ShowTaskbarIcon((bool)e.NewValue)); ShowInTaskbarProperty.Changed.AddClassHandler<Window>((w, e) => w.PlatformImpl?.ShowTaskbarIcon((bool)e.NewValue));
IconProperty.Changed.AddClassHandler<Window>((s, e) => s.PlatformImpl?.SetIcon(((WindowIcon)e.NewValue).PlatformImpl)); IconProperty.Changed.AddClassHandler<Window>((s, e) => s.PlatformImpl?.SetIcon(((WindowIcon)e.NewValue)?.PlatformImpl));
CanResizeProperty.Changed.AddClassHandler<Window>((w, e) => w.PlatformImpl?.CanResize((bool)e.NewValue)); CanResizeProperty.Changed.AddClassHandler<Window>((w, e) => w.PlatformImpl?.CanResize((bool)e.NewValue));

4
src/Avalonia.X11/X11Window.cs

@ -995,11 +995,11 @@ namespace Avalonia.X11
public void SetIcon(IWindowIconImpl icon) public void SetIcon(IWindowIconImpl icon)
{ {
var data = ((X11IconData)icon).Data; var data = ((X11IconData)icon)?.Data;
fixed (void* pdata = data) fixed (void* pdata = data)
XChangeProperty(_x11.Display, _handle, _x11.Atoms._NET_WM_ICON, XChangeProperty(_x11.Display, _handle, _x11.Atoms._NET_WM_ICON,
new IntPtr((int)Atom.XA_CARDINAL), 32, PropertyMode.Replace, new IntPtr((int)Atom.XA_CARDINAL), 32, PropertyMode.Replace,
pdata, data.Length); pdata, data?.Length ?? 0);
} }
public void ShowTaskbarIcon(bool value) public void ShowTaskbarIcon(bool value)

2
src/Windows/Avalonia.Win32/WindowImpl.cs

@ -942,7 +942,7 @@ namespace Avalonia.Win32
public void SetIcon(IWindowIconImpl icon) public void SetIcon(IWindowIconImpl icon)
{ {
var impl = (IconImpl)icon; var impl = (IconImpl)icon;
var hIcon = impl.HIcon; var hIcon = impl?.HIcon ?? IntPtr.Zero;
UnmanagedMethods.PostMessage(_hwnd, (int)UnmanagedMethods.WindowsMessage.WM_SETICON, UnmanagedMethods.PostMessage(_hwnd, (int)UnmanagedMethods.WindowsMessage.WM_SETICON,
new IntPtr((int)UnmanagedMethods.Icons.ICON_BIG), hIcon); new IntPtr((int)UnmanagedMethods.Icons.ICON_BIG), hIcon);
} }

Loading…
Cancel
Save