Module: wine Branch: master Commit: 7769c8e9dfe238194d4ae7aab80ad83dc55d2e18 URL: https://source.winehq.org/git/wine.git/?a=commit;h=7769c8e9dfe238194d4ae7aab...
Author: Jacek Caban jacek@codeweavers.com Date: Sun May 1 22:18:43 2022 +0200
winex11: Directly use NtUserGetIconInfo.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winex11.drv/mouse.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c index 7133f2e2694..46951103bc1 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -1228,6 +1228,27 @@ done: return cursor; }
+static BOOL get_icon_info( HICON handle, ICONINFOEXW *ret ) +{ + UNICODE_STRING module, res_name; + ICONINFO info; + + module.Buffer = ret->szModName; + module.MaximumLength = sizeof(ret->szModName) - sizeof(WCHAR); + res_name.Buffer = ret->szResName; + res_name.MaximumLength = sizeof(ret->szResName) - sizeof(WCHAR); + if (!NtUserGetIconInfo( handle, &info, &module, &res_name, NULL, 0 )) return FALSE; + ret->fIcon = info.fIcon; + ret->xHotspot = info.xHotspot; + ret->yHotspot = info.yHotspot; + ret->hbmColor = info.hbmColor; + ret->hbmMask = info.hbmMask; + ret->wResID = res_name.Length ? 0 : LOWORD( res_name.Buffer ); + ret->szModName[module.Length] = 0; + ret->szResName[res_name.Length] = 0; + return TRUE; +} + /*********************************************************************** * create_xlib_load_mono_cursor * @@ -1243,8 +1264,7 @@ static Cursor create_xlib_load_mono_cursor( HDC hdc, HANDLE handle, int width, i if (!(mono = CopyImage( handle, IMAGE_CURSOR, width, height, LR_MONOCHROME | LR_COPYFROMRESOURCE ))) return None;
- info.cbSize = sizeof(info); - if (GetIconInfoExW( mono, &info )) + if (get_icon_info( mono, &info )) { if (!info.hbmColor) { @@ -1413,8 +1433,7 @@ static Cursor create_cursor( HANDLE handle )
if (!handle) return get_empty_cursor();
- info.cbSize = sizeof(info); - if (!GetIconInfoExW( handle, &info )) return 0; + if (!get_icon_info( handle, &info )) return 0;
if (use_system_cursors && (cursor = create_xcursor_system_cursor( &info ))) {