Browse Source
Merge pull request #3558 from AvaloniaUI/fixes/3365-icon-null
Allow assigning null to Window.Icon.
pull/3577/head
Steven Kirk
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
14 additions and
7 deletions
-
src/Avalonia.Controls/Window.cs
-
src/Avalonia.X11/X11Window.cs
-
src/Windows/Avalonia.Win32/WindowImpl.cs
|
|
|
@ -129,7 +129,7 @@ namespace Avalonia.Controls |
|
|
|
|
|
|
|
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)); |
|
|
|
|
|
|
|
|
|
|
|
@ -995,11 +995,18 @@ namespace Avalonia.X11 |
|
|
|
|
|
|
|
public void SetIcon(IWindowIconImpl icon) |
|
|
|
{ |
|
|
|
var data = ((X11IconData)icon).Data; |
|
|
|
fixed (void* pdata = data) |
|
|
|
XChangeProperty(_x11.Display, _handle, _x11.Atoms._NET_WM_ICON, |
|
|
|
new IntPtr((int)Atom.XA_CARDINAL), 32, PropertyMode.Replace, |
|
|
|
pdata, data.Length); |
|
|
|
if (icon != null) |
|
|
|
{ |
|
|
|
var data = ((X11IconData)icon).Data; |
|
|
|
fixed (void* pdata = data) |
|
|
|
XChangeProperty(_x11.Display, _handle, _x11.Atoms._NET_WM_ICON, |
|
|
|
new IntPtr((int)Atom.XA_CARDINAL), 32, PropertyMode.Replace, |
|
|
|
pdata, data.Length); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
XDeleteProperty(_x11.Display, _handle, _x11.Atoms._NET_WM_ICON); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void ShowTaskbarIcon(bool value) |
|
|
|
|
|
|
|
@ -942,7 +942,7 @@ namespace Avalonia.Win32 |
|
|
|
public void SetIcon(IWindowIconImpl icon) |
|
|
|
{ |
|
|
|
var impl = (IconImpl)icon; |
|
|
|
var hIcon = impl.HIcon; |
|
|
|
var hIcon = impl?.HIcon ?? IntPtr.Zero; |
|
|
|
UnmanagedMethods.PostMessage(_hwnd, (int)UnmanagedMethods.WindowsMessage.WM_SETICON, |
|
|
|
new IntPtr((int)UnmanagedMethods.Icons.ICON_BIG), hIcon); |
|
|
|
} |
|
|
|
|