Sfoglia il codice sorgente

Revert "Merge pull request #3221 from mstr2/undecorated-window"

This reverts commit a3712ed4c233b169d7bf7ddbadbb30c3753ba57c, reversing
changes made to edbd75cc1f9adf432988952f36c6a8c6939cb213.
Dan Walmsley 6 anni fa
parent
commit
3f95e7676e

+ 0 - 3
src/Windows/Avalonia.Win32/Interop/UnmanagedMethods.cs

@@ -921,9 +921,6 @@ namespace Avalonia.Win32.Interop
 
         [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "SetWindowTextW")]
         public static extern bool SetWindowText(IntPtr hwnd, string lpString);
-        
-        [DllImport("uxtheme.dll", SetLastError = true, CharSet = CharSet.Unicode)]
-        public static extern HRESULT SetWindowTheme(IntPtr hwnd, string subAppName, string subIdList);
 
         public enum ClassLongIndex : int
         {

+ 11 - 12
src/Windows/Avalonia.Win32/WindowImpl.cs

@@ -968,20 +968,26 @@ namespace Avalonia.Win32
         {
             var oldDecorated = _decorated;
 
+            var oldThickness = BorderThickness;
+
             change();
 
             var style = (WindowStyles)GetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE);
 
+            const WindowStyles controlledFlags = WindowStyles.WS_OVERLAPPEDWINDOW;
+
+            style = style | controlledFlags ^ controlledFlags;
+
             style |= WindowStyles.WS_OVERLAPPEDWINDOW;
 
             if (!_decorated)
             {
-                style &= ~WindowStyles.WS_SYSMENU;
+                style ^= (WindowStyles.WS_CAPTION | WindowStyles.WS_SYSMENU);
             }
 
             if (!_resizable)
             {
-                style &= ~WindowStyles.WS_SIZEFRAME;
+                style ^= (WindowStyles.WS_SIZEFRAME);
             }
 
             GetClientRect(_hwnd, out var oldClientRect);
@@ -989,6 +995,7 @@ namespace Avalonia.Win32
             ClientToScreen(_hwnd, ref oldClientRectOrigin);
             oldClientRect.Offset(oldClientRectOrigin);
             
+            
             SetWindowLong(_hwnd, (int)WindowLongParam.GWL_STYLE, (uint)style);
 
             UnmanagedMethods.GetWindowRect(_hwnd, out var windowRect);
@@ -997,16 +1004,8 @@ namespace Avalonia.Win32
             {
                 var newRect = oldClientRect;
                 if (_decorated)
-                {
-                    SetWindowTheme(_hwnd, null, null);
-                    AdjustWindowRectEx(
-                        ref newRect, (uint)style, false, GetWindowLong(_hwnd, (int)WindowLongParam.GWL_EXSTYLE));
-                }
-                else
-                {
-                    SetWindowTheme(_hwnd, "", "");
-                }
-                    
+                    AdjustWindowRectEx(ref newRect, (uint)style, false,
+                        GetWindowLong(_hwnd, (int)WindowLongParam.GWL_EXSTYLE));
                 SetWindowPos(_hwnd, IntPtr.Zero, newRect.left, newRect.top, newRect.Width, newRect.Height,
                     SetWindowPosFlags.SWP_NOZORDER | SetWindowPosFlags.SWP_NOACTIVATE | SetWindowPosFlags.SWP_FRAMECHANGED);
                 frameUpdated = true;