@@ -24,34 +24,6 @@ internal struct RECT
2424 public int bottom ;
2525 }
2626
27- internal enum HitTest
28- {
29- HTERROR = - 2 ,
30- HTTRANSPARENT = - 1 ,
31- HTNOWHERE = 0 ,
32- HTCLIENT = 1 ,
33- HTCAPTION = 2 ,
34- HTSYSMENU = 3 ,
35- HTGROWBOX = 4 ,
36- HTMENU = 5 ,
37- HTHSCROLL = 6 ,
38- HTVSCROLL = 7 ,
39- HTMINBUTTON = 8 ,
40- HTMAXBUTTON = 9 ,
41- HTLEFT = 10 ,
42- HTRIGHT = 11 ,
43- HTTOP = 12 ,
44- HTTOPLEFT = 13 ,
45- HTTOPRIGHT = 14 ,
46- HTBOTTOM = 15 ,
47- HTBOTTOMLEFT = 16 ,
48- HTBOTTOMRIGHT = 17 ,
49- HTBORDER = 18 ,
50- HTOBJECT = 19 ,
51- HTCLOSE = 20 ,
52- HTHELP = 21
53- }
54-
5527 [ StructLayout ( LayoutKind . Sequential ) ]
5628 internal struct MARGINS
5729 {
@@ -103,32 +75,46 @@ public void SetupWindow(Window window)
10375 handled = true ;
10476
10577 if ( window . WindowState == WindowState . FullScreen || window . WindowState == WindowState . Maximized )
106- return ( IntPtr ) HitTest . HTCLIENT ;
78+ return 1 ; // HTCLIENT
10779
10880 var p = IntPtrToPixelPoint ( lParam ) ;
10981 GetWindowRect ( hWnd , out var rcWindow ) ;
11082
11183 var borderThinkness = ( int ) ( 4 * window . RenderScaling ) ;
112- int row = 1 ;
113- int col = 1 ;
84+ int y = 1 ;
85+ int x = 1 ;
11486 if ( p . X >= rcWindow . left && p . X < rcWindow . left + borderThinkness )
115- col = 0 ;
87+ x = 0 ;
11688 else if ( p . X < rcWindow . right && p . X >= rcWindow . right - borderThinkness )
117- col = 2 ;
89+ x = 2 ;
11890
11991 if ( p . Y >= rcWindow . top && p . Y < rcWindow . top + borderThinkness )
120- row = 0 ;
92+ y = 0 ;
12193 else if ( p . Y < rcWindow . bottom && p . Y >= rcWindow . bottom - borderThinkness )
122- row = 2 ;
94+ y = 2 ;
12395
124- ReadOnlySpan < HitTest > zones = stackalloc HitTest [ ]
96+ var zone = y * 3 + x ;
97+ switch ( zone )
12598 {
126- HitTest . HTTOPLEFT , HitTest . HTTOP , HitTest . HTTOPRIGHT ,
127- HitTest . HTLEFT , HitTest . HTCLIENT , HitTest . HTRIGHT ,
128- HitTest . HTBOTTOMLEFT , HitTest . HTBOTTOM , HitTest . HTBOTTOMRIGHT
129- } ;
130-
131- return ( IntPtr ) ( zones [ row * 3 + col ] ) ;
99+ case 0 :
100+ return 13 ; // HTTOPLEFT
101+ case 1 :
102+ return 12 ; // HTTOP
103+ case 2 :
104+ return 14 ; // HTTOPRIGHT
105+ case 3 :
106+ return 10 ; // HTLEFT
107+ case 4 :
108+ return 1 ; // HTCLIENT
109+ case 5 :
110+ return 11 ; // HTRIGHT
111+ case 6 :
112+ return 16 ; // HTBOTTOMLEFT
113+ case 7 :
114+ return 15 ; // HTBOTTOM
115+ default :
116+ return 17 ; // HTBOTTOMRIGHT
117+ }
132118 }
133119
134120 return IntPtr . Zero ;
0 commit comments