Commit 6806451d authored by Alexandre Julliard's avatar Alexandre Julliard

user: Add icon handle mapping in the Get/SetClassWord/Long functions.

parent 48c8c8d7
...@@ -747,6 +747,16 @@ void WINAPI ValidateRgn16( HWND16 hwnd, HRGN16 hrgn ) ...@@ -747,6 +747,16 @@ void WINAPI ValidateRgn16( HWND16 hwnd, HRGN16 hrgn )
*/ */
WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset ) WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset )
{ {
HICON icon;
switch (offset)
{
case GCLP_HCURSOR:
case GCLP_HICON:
case GCLP_HICONSM:
icon = (HICON)GetClassLongPtrW( WIN_Handle32(hwnd), offset );
return get_icon_16( icon );
}
return GetClassWord( WIN_Handle32(hwnd), offset ); return GetClassWord( WIN_Handle32(hwnd), offset );
} }
...@@ -756,6 +766,16 @@ WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset ) ...@@ -756,6 +766,16 @@ WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset )
*/ */
WORD WINAPI SetClassWord16( HWND16 hwnd, INT16 offset, WORD newval ) WORD WINAPI SetClassWord16( HWND16 hwnd, INT16 offset, WORD newval )
{ {
HICON icon;
switch (offset)
{
case GCLP_HCURSOR:
case GCLP_HICON:
case GCLP_HICONSM:
icon = (HICON)SetClassLongPtrW( WIN_Handle32(hwnd), offset, (ULONG_PTR)get_icon_32(newval) );
return get_icon_16( icon );
}
return SetClassWord( WIN_Handle32(hwnd), offset, newval ); return SetClassWord( WIN_Handle32(hwnd), offset, newval );
} }
...@@ -773,6 +793,10 @@ LONG WINAPI GetClassLong16( HWND16 hwnd16, INT16 offset ) ...@@ -773,6 +793,10 @@ LONG WINAPI GetClassLong16( HWND16 hwnd16, INT16 offset )
return (LONG_PTR)WINPROC_GetProc16( (WNDPROC)ret, FALSE ); return (LONG_PTR)WINPROC_GetProc16( (WNDPROC)ret, FALSE );
case GCLP_MENUNAME: case GCLP_MENUNAME:
return MapLS( (void *)ret ); /* leak */ return MapLS( (void *)ret ); /* leak */
case GCLP_HCURSOR:
case GCLP_HICON:
case GCLP_HICONSM:
return get_icon_16( (HICON)ret );
default: default:
return ret; return ret;
} }
...@@ -784,8 +808,15 @@ LONG WINAPI GetClassLong16( HWND16 hwnd16, INT16 offset ) ...@@ -784,8 +808,15 @@ LONG WINAPI GetClassLong16( HWND16 hwnd16, INT16 offset )
*/ */
LONG WINAPI SetClassLong16( HWND16 hwnd16, INT16 offset, LONG newval ) LONG WINAPI SetClassLong16( HWND16 hwnd16, INT16 offset, LONG newval )
{ {
HICON icon;
switch( offset ) switch( offset )
{ {
case GCLP_HCURSOR:
case GCLP_HICON:
case GCLP_HICONSM:
icon = (HICON)SetClassLongPtrW( WIN_Handle32(hwnd16), offset, (ULONG_PTR)get_icon_32(newval) );
return get_icon_16( icon );
case GCLP_WNDPROC: case GCLP_WNDPROC:
{ {
WNDPROC new_proc = WINPROC_AllocProc16( (WNDPROC16)newval ); WNDPROC new_proc = WINPROC_AllocProc16( (WNDPROC16)newval );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment