mirror of
git://source.winehq.org/git/wine.git
synced 2024-07-24 00:36:22 +00:00
win32u: Move NtUserInternalGetWindowIcon implementation from user32.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
This commit is contained in:
parent
a8ed1c94b3
commit
6e2ea185c2
|
@ -445,7 +445,7 @@
|
|||
@ stdcall InsertMenuItemA(long long long ptr)
|
||||
@ stdcall InsertMenuItemW(long long long ptr)
|
||||
@ stdcall InsertMenuW(long long long long ptr)
|
||||
@ stdcall InternalGetWindowIcon(ptr long)
|
||||
@ stdcall InternalGetWindowIcon(ptr long) NtUserInternalGetWindowIcon
|
||||
@ stdcall InternalGetWindowText(long ptr long) NtUserInternalGetWindowText
|
||||
@ stdcall IntersectRect(ptr ptr ptr)
|
||||
@ stdcall InvalidateRect(long ptr long)
|
||||
|
|
|
@ -164,6 +164,13 @@ static NTSTATUS WINAPI User32CopyImage( const struct copy_image_params *params,
|
|||
return HandleToUlong( ret );
|
||||
}
|
||||
|
||||
static NTSTATUS WINAPI User32LoadImage( const struct load_image_params *params, ULONG size )
|
||||
{
|
||||
HANDLE ret = LoadImageW( params->hinst, params->name, params->type,
|
||||
params->dx, params->dy, params->flags );
|
||||
return HandleToUlong( ret );
|
||||
}
|
||||
|
||||
static NTSTATUS WINAPI User32FreeCachedClipboardData( const struct free_cached_data_params *params,
|
||||
ULONG size )
|
||||
{
|
||||
|
@ -193,6 +200,7 @@ static const void *kernel_callback_table[NtUserCallCount] =
|
|||
User32CopyImage,
|
||||
User32FreeCachedClipboardData,
|
||||
User32LoadDriver,
|
||||
User32LoadImage,
|
||||
User32RegisterBuiltinClasses,
|
||||
User32RenderSsynthesizedFormat,
|
||||
};
|
||||
|
|
|
@ -1794,50 +1794,3 @@ BOOL WINAPI SetWindowCompositionAttribute(HWND hwnd, void *data)
|
|||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* InternalGetWindowIcon (USER32.@)
|
||||
*/
|
||||
HICON WINAPI InternalGetWindowIcon( HWND hwnd, UINT type )
|
||||
{
|
||||
WND *win = WIN_GetPtr( hwnd );
|
||||
HICON ret;
|
||||
|
||||
TRACE( "hwnd %p, type %#x\n", hwnd, type );
|
||||
|
||||
if (!win)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_WINDOW_HANDLE );
|
||||
return 0;
|
||||
}
|
||||
if (win == WND_OTHER_PROCESS || win == WND_DESKTOP)
|
||||
{
|
||||
if (IsWindow( hwnd )) FIXME( "not supported on other process window %p\n", hwnd );
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case ICON_BIG:
|
||||
ret = win->hIcon;
|
||||
if (!ret) ret = (HICON)GetClassLongPtrW( hwnd, GCLP_HICON );
|
||||
break;
|
||||
|
||||
case ICON_SMALL:
|
||||
case ICON_SMALL2:
|
||||
ret = win->hIconSmall ? win->hIconSmall : win->hIconSmall2;
|
||||
if (!ret) ret = (HICON)GetClassLongPtrW( hwnd, GCLP_HICONSM );
|
||||
if (!ret) ret = (HICON)GetClassLongPtrW( hwnd, GCLP_HICON );
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
WIN_ReleasePtr( win );
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!ret) ret = LoadIconW( 0, (const WCHAR *)IDI_APPLICATION );
|
||||
|
||||
WIN_ReleasePtr( win );
|
||||
return CopyIcon( ret );
|
||||
}
|
||||
|
|
|
@ -801,3 +801,24 @@ HANDLE WINAPI CopyImage( HANDLE hwnd, UINT type, INT dx, INT dy, UINT flags )
|
|||
ret = KeUserModeCallback( NtUserCopyImage, ¶ms, sizeof(params), &ret_ptr, &ret_len );
|
||||
return UlongToHandle( ret );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* LoadImage (win32u.so)
|
||||
*/
|
||||
HANDLE WINAPI LoadImageW( HINSTANCE hinst, const WCHAR *name, UINT type,
|
||||
INT dx, INT dy, UINT flags )
|
||||
{
|
||||
void *ret_ptr;
|
||||
ULONG ret_len;
|
||||
NTSTATUS ret;
|
||||
struct load_image_params params =
|
||||
{ .hinst = hinst, .name = name, .type = type, .dx = dx, .dy = dy, .flags = flags };
|
||||
|
||||
if (HIWORD(name))
|
||||
{
|
||||
ERR( "name %s not supported in Unix modules\n", debugstr_w( name ));
|
||||
return 0;
|
||||
}
|
||||
ret = KeUserModeCallback( NtUserLoadImage, ¶ms, sizeof(params), &ret_ptr, &ret_len );
|
||||
return UlongToHandle( ret );
|
||||
}
|
||||
|
|
|
@ -1187,6 +1187,7 @@ static struct unix_funcs unix_funcs =
|
|||
NtUserGetUpdatedClipboardFormats,
|
||||
NtUserGetWindowPlacement,
|
||||
NtUserHideCaret,
|
||||
NtUserInternalGetWindowIcon,
|
||||
NtUserIsClipboardFormatAvailable,
|
||||
NtUserMapVirtualKeyEx,
|
||||
NtUserMessageCall,
|
||||
|
|
|
@ -1044,7 +1044,7 @@
|
|||
@ stub NtUserInjectPointerInput
|
||||
@ stub NtUserInjectTouchInput
|
||||
@ stub NtUserInteractiveControlQueryUsage
|
||||
@ stub NtUserInternalGetWindowIcon
|
||||
@ stdcall NtUserInternalGetWindowIcon(ptr long)
|
||||
@ stdcall -syscall NtUserInternalGetWindowText(long ptr long)
|
||||
@ stub NtUserInternalToUnicode
|
||||
@ stub NtUserInvalidateRect
|
||||
|
|
|
@ -249,6 +249,7 @@ struct unix_funcs
|
|||
BOOL (WINAPI *pNtUserGetUpdatedClipboardFormats)( UINT *formats, UINT size, UINT *out_size );
|
||||
BOOL (WINAPI *pNtUserGetWindowPlacement)( HWND hwnd, WINDOWPLACEMENT *placement );
|
||||
BOOL (WINAPI *pNtUserHideCaret)( HWND hwnd );
|
||||
HICON (WINAPI *pNtUserInternalGetWindowIcon)( HWND hwnd, UINT type );
|
||||
BOOL (WINAPI *pNtUserIsClipboardFormatAvailable)( UINT format );
|
||||
UINT (WINAPI *pNtUserMapVirtualKeyEx)( UINT code, UINT type, HKL layout );
|
||||
LRESULT (WINAPI *pNtUserMessageCall)( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam,
|
||||
|
|
|
@ -4554,6 +4554,54 @@ static BOOL set_window_context_help_id( HWND hwnd, DWORD id )
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* NtUserInternalGetWindowIcon (win32u.@)
|
||||
*/
|
||||
HICON WINAPI NtUserInternalGetWindowIcon( HWND hwnd, UINT type )
|
||||
{
|
||||
WND *win = get_win_ptr( hwnd );
|
||||
HICON ret;
|
||||
|
||||
TRACE( "hwnd %p, type %#x\n", hwnd, type );
|
||||
|
||||
if (!win)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_WINDOW_HANDLE );
|
||||
return 0;
|
||||
}
|
||||
if (win == WND_OTHER_PROCESS || win == WND_DESKTOP)
|
||||
{
|
||||
if (is_window( hwnd )) FIXME( "not supported on other process window %p\n", hwnd );
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case ICON_BIG:
|
||||
ret = win->hIcon;
|
||||
if (!ret) ret = (HICON)get_class_long_ptr( hwnd, GCLP_HICON, FALSE );
|
||||
break;
|
||||
|
||||
case ICON_SMALL:
|
||||
case ICON_SMALL2:
|
||||
ret = win->hIconSmall ? win->hIconSmall : win->hIconSmall2;
|
||||
if (!ret) ret = (HICON)get_class_long_ptr( hwnd, GCLP_HICONSM, FALSE );
|
||||
if (!ret) ret = (HICON)get_class_long_ptr( hwnd, GCLP_HICON, FALSE );
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
release_win_ptr( win );
|
||||
return 0;
|
||||
}
|
||||
release_win_ptr( win );
|
||||
|
||||
if (!ret) ret = LoadImageW( 0, (const WCHAR *)IDI_APPLICATION, IMAGE_ICON,
|
||||
0, 0, LR_SHARED | LR_DEFAULTSIZE );
|
||||
|
||||
return CopyImage( ret, IMAGE_ICON, 0, 0, 0 );
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* send_destroy_message
|
||||
*/
|
||||
|
|
|
@ -1029,12 +1029,19 @@ BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *ou
|
|||
return unix_funcs->pNtUserGetUpdatedClipboardFormats( formats, size, out_size );
|
||||
}
|
||||
|
||||
|
||||
BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement )
|
||||
{
|
||||
if (!unix_funcs) return FALSE;
|
||||
return unix_funcs->pNtUserGetWindowPlacement( hwnd, placement );
|
||||
}
|
||||
|
||||
HICON WINAPI NtUserInternalGetWindowIcon( HWND hwnd, UINT type )
|
||||
{
|
||||
if (!unix_funcs) return 0;
|
||||
return unix_funcs->pNtUserInternalGetWindowIcon( hwnd, type );
|
||||
}
|
||||
|
||||
BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format )
|
||||
{
|
||||
if (!unix_funcs) return FALSE;
|
||||
|
|
|
@ -35,6 +35,7 @@ enum
|
|||
NtUserCopyImage,
|
||||
NtUserFreeCachedClipboardData,
|
||||
NtUserLoadDriver,
|
||||
NtUserLoadImage,
|
||||
NtUserRegisterBuiltinClasses,
|
||||
NtUserRenderSynthesizedFormat,
|
||||
/* win16 hooks */
|
||||
|
@ -147,7 +148,7 @@ struct win_hook_params
|
|||
WCHAR module[MAX_PATH];
|
||||
};
|
||||
|
||||
/* NtUserCopyMessage params */
|
||||
/* NtUserCopyImage params */
|
||||
struct copy_image_params
|
||||
{
|
||||
HANDLE hwnd;
|
||||
|
@ -164,6 +165,17 @@ struct free_cached_data_params
|
|||
HANDLE handle;
|
||||
};
|
||||
|
||||
/* NtUserLoadImage params */
|
||||
struct load_image_params
|
||||
{
|
||||
HINSTANCE hinst;
|
||||
const WCHAR *name;
|
||||
UINT type;
|
||||
INT dx;
|
||||
INT dy;
|
||||
UINT flags;
|
||||
};
|
||||
|
||||
/* NtUserRenderSynthesizedFormat params */
|
||||
struct render_synthesized_format_params
|
||||
{
|
||||
|
@ -589,6 +601,7 @@ BOOL WINAPI NtUserHideCaret( HWND hwnd );
|
|||
NTSTATUS WINAPI NtUserInitializeClientPfnArrays( const struct user_client_procs *client_procsA,
|
||||
const struct user_client_procs *client_procsW,
|
||||
const void *client_workers, HINSTANCE user_module );
|
||||
HICON WINAPI NtUserInternalGetWindowIcon( HWND hwnd, UINT type );
|
||||
INT WINAPI NtUserInternalGetWindowText( HWND hwnd, WCHAR *text, INT count );
|
||||
BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format );
|
||||
BOOL WINAPI NtUserKillTimer( HWND hwnd, UINT_PTR id );
|
||||
|
|
Loading…
Reference in a new issue