[PATCH 1/3] user32: Avoid recalculating the non-client hit-test value for NC_HandleNCMouseMove().
Zhiyi Zhang
zzhang at codeweavers.com
Tue Jan 25 01:58:44 CST 2022
The wParam in WM_NCMOUSEMOVE messages already contains the non-client hit-test value.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
dlls/user32/controls.h | 2 +-
dlls/user32/defwnd.c | 7 +------
dlls/user32/nonclient.c | 14 ++++++++------
3 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/dlls/user32/controls.h b/dlls/user32/controls.h
index 2b3d405ae69..ce14d13171f 100644
--- a/dlls/user32/controls.h
+++ b/dlls/user32/controls.h
@@ -171,7 +171,7 @@ extern LRESULT NC_HandleNCActivate( HWND hwnd, WPARAM wParam, LPARAM lParam ) DE
extern LRESULT NC_HandleNCCalcSize( HWND hwnd, WPARAM wParam, RECT *winRect ) DECLSPEC_HIDDEN;
extern LRESULT NC_HandleNCHitTest( HWND hwnd, POINT pt ) DECLSPEC_HIDDEN;
extern LRESULT NC_HandleNCLButtonDown( HWND hwnd, WPARAM wParam, LPARAM lParam ) DECLSPEC_HIDDEN;
-extern LRESULT NC_HandleNCMouseMove( HWND hwnd, POINT pt ) DECLSPEC_HIDDEN;
+extern LRESULT NC_HandleNCMouseMove( HWND hwnd, WPARAM wParam, LPARAM lParam ) DECLSPEC_HIDDEN;
extern LRESULT NC_HandleNCMouseLeave( HWND hwnd ) DECLSPEC_HIDDEN;
extern LRESULT NC_HandleNCRButtonDown( HWND hwnd, WPARAM wParam, LPARAM lParam ) DECLSPEC_HIDDEN;
extern LRESULT NC_HandleNCLButtonDblClk( HWND hwnd, WPARAM wParam, LPARAM lParam) DECLSPEC_HIDDEN;
diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c
index 44675c7b8e7..abb73e73ca8 100644
--- a/dlls/user32/defwnd.c
+++ b/dlls/user32/defwnd.c
@@ -246,12 +246,7 @@ static LRESULT DEFWND_DefWinProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPa
return NC_HandleNCPaint( hwnd, (HRGN)wParam );
case WM_NCMOUSEMOVE:
- {
- POINT pt;
- pt.x = (short)LOWORD(lParam);
- pt.y = (short)HIWORD(lParam);
- return NC_HandleNCMouseMove( hwnd, pt );
- }
+ return NC_HandleNCMouseMove( hwnd, wParam, lParam );
case WM_NCMOUSELEAVE:
return NC_HandleNCMouseLeave( hwnd );
diff --git a/dlls/user32/nonclient.c b/dlls/user32/nonclient.c
index b47616bb639..639cca707fb 100644
--- a/dlls/user32/nonclient.c
+++ b/dlls/user32/nonclient.c
@@ -635,22 +635,24 @@ LRESULT NC_HandleNCHitTest( HWND hwnd, POINT pt )
return HTNOWHERE;
}
-LRESULT NC_HandleNCMouseMove(HWND hwnd, POINT pt)
+LRESULT NC_HandleNCMouseMove(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
- LONG hittest;
RECT rect;
+ POINT pt;
- TRACE("hwnd=%p pt=%s\n", hwnd, wine_dbgstr_point(&pt));
+ TRACE("hwnd=%p wparam=%#lx lparam=%#lx\n", hwnd, wParam, lParam);
- hittest = NC_HandleNCHitTest(hwnd, pt);
- if (hittest != HTHSCROLL && hittest != HTVSCROLL)
+ if (wParam != HTHSCROLL && wParam != HTVSCROLL)
return 0;
WIN_GetRectangles(hwnd, COORDS_CLIENT, &rect, NULL);
+
+ pt.x = (short)LOWORD(lParam);
+ pt.y = (short)HIWORD(lParam);
ScreenToClient(hwnd, &pt);
pt.x -= rect.left;
pt.y -= rect.top;
- SCROLL_HandleScrollEvent(hwnd, hittest == HTHSCROLL ? SB_HORZ : SB_VERT, WM_NCMOUSEMOVE, pt);
+ SCROLL_HandleScrollEvent(hwnd, wParam == HTHSCROLL ? SB_HORZ : SB_VERT, WM_NCMOUSEMOVE, pt);
return 0;
}
--
2.32.0
More information about the wine-devel
mailing list