win32u: Move some window functions to window.c.

This commit is contained in:
Rémi Bernon 2023-05-26 22:03:34 +02:00 committed by Alexandre Julliard
parent 8f9610fdff
commit c22c10d6e9
3 changed files with 118 additions and 117 deletions

View file

@ -2468,115 +2468,3 @@ BOOL WINAPI NtUserGetPointerInfoList( UINT32 id, POINTER_INPUT_TYPE type, UINT_P
RtlSetLastWin32Error( ERROR_CALL_NOT_IMPLEMENTED );
return FALSE;
}
HWND get_shell_window(void)
{
HWND hwnd = 0;
SERVER_START_REQ(set_global_windows)
{
req->flags = 0;
if (!wine_server_call_err(req))
hwnd = wine_server_ptr_handle( reply->old_shell_window );
}
SERVER_END_REQ;
return hwnd;
}
/***********************************************************************
* NtUserSetShellWindowEx (win32u.@)
*/
BOOL WINAPI NtUserSetShellWindowEx( HWND shell, HWND list_view )
{
BOOL ret;
/* shell = Progman[Program Manager]
* |-> SHELLDLL_DefView
* list_view = | |-> SysListView32
* | | |-> tooltips_class32
* | |
* | |-> SysHeader32
* |
* |-> ProxyTarget
*/
if (get_shell_window())
return FALSE;
if (get_window_long( shell, GWL_EXSTYLE ) & WS_EX_TOPMOST)
return FALSE;
if (list_view != shell && (get_window_long( list_view, GWL_EXSTYLE ) & WS_EX_TOPMOST))
return FALSE;
if (list_view && list_view != shell)
NtUserSetWindowPos( list_view, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
NtUserSetWindowPos( shell, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
SERVER_START_REQ(set_global_windows)
{
req->flags = SET_GLOBAL_SHELL_WINDOWS;
req->shell_window = wine_server_user_handle( shell );
req->shell_listview = wine_server_user_handle( list_view );
ret = !wine_server_call_err(req);
}
SERVER_END_REQ;
return ret;
}
HWND get_progman_window(void)
{
HWND ret = 0;
SERVER_START_REQ(set_global_windows)
{
req->flags = 0;
if (!wine_server_call_err(req))
ret = wine_server_ptr_handle( reply->old_progman_window );
}
SERVER_END_REQ;
return ret;
}
HWND set_progman_window( HWND hwnd )
{
SERVER_START_REQ(set_global_windows)
{
req->flags = SET_GLOBAL_PROGMAN_WINDOW;
req->progman_window = wine_server_user_handle( hwnd );
if (wine_server_call_err( req )) hwnd = 0;
}
SERVER_END_REQ;
return hwnd;
}
HWND get_taskman_window(void)
{
HWND ret = 0;
SERVER_START_REQ(set_global_windows)
{
req->flags = 0;
if (!wine_server_call_err(req))
ret = wine_server_ptr_handle( reply->old_taskman_window );
}
SERVER_END_REQ;
return ret;
}
HWND set_taskman_window( HWND hwnd )
{
/* hwnd = MSTaskSwWClass
* |-> SysTabControl32
*/
SERVER_START_REQ(set_global_windows)
{
req->flags = SET_GLOBAL_TASKMAN_WINDOW;
req->taskman_window = wine_server_user_handle( hwnd );
if (wine_server_call_err( req )) hwnd = 0;
}
SERVER_END_REQ;
return hwnd;
}

View file

@ -94,16 +94,11 @@ extern HWND get_capture(void) DECLSPEC_HIDDEN;
extern BOOL get_cursor_pos( POINT *pt ) DECLSPEC_HIDDEN;
extern HWND get_focus(void) DECLSPEC_HIDDEN;
extern DWORD get_input_state(void) DECLSPEC_HIDDEN;
extern HWND get_progman_window(void) DECLSPEC_HIDDEN;
extern HWND get_shell_window(void) DECLSPEC_HIDDEN;
extern HWND get_taskman_window(void) DECLSPEC_HIDDEN;
extern BOOL release_capture(void) DECLSPEC_HIDDEN;
extern BOOL set_capture_window( HWND hwnd, UINT gui_flags, HWND *prev_ret ) DECLSPEC_HIDDEN;
extern BOOL set_caret_blink_time( unsigned int time ) DECLSPEC_HIDDEN;
extern BOOL set_caret_pos( int x, int y ) DECLSPEC_HIDDEN;
extern BOOL set_foreground_window( HWND hwnd, BOOL mouse ) DECLSPEC_HIDDEN;
extern HWND set_progman_window( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND set_taskman_window( HWND hwnd ) DECLSPEC_HIDDEN;
extern void toggle_caret( HWND hwnd ) DECLSPEC_HIDDEN;
extern void update_mouse_tracking_info( HWND hwnd ) DECLSPEC_HIDDEN;
@ -232,6 +227,11 @@ extern ULONG set_window_style( HWND hwnd, ULONG set_bits, ULONG clear_bits ) DEC
extern BOOL show_owned_popups( HWND owner, BOOL show ) DECLSPEC_HIDDEN;
extern void update_window_state( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND window_from_point( HWND hwnd, POINT pt, INT *hittest ) DECLSPEC_HIDDEN;
extern HWND get_shell_window(void) DECLSPEC_HIDDEN;
extern HWND get_progman_window(void) DECLSPEC_HIDDEN;
extern HWND set_progman_window( HWND hwnd ) DECLSPEC_HIDDEN;
extern HWND get_taskman_window(void) DECLSPEC_HIDDEN;
extern HWND set_taskman_window( HWND hwnd ) DECLSPEC_HIDDEN;
/* to release pointers retrieved by win_get_ptr */
static inline void release_win_ptr( struct tagWND *ptr )

View file

@ -5644,3 +5644,116 @@ DWORD WINAPI NtUserDragObject( HWND parent, HWND hwnd, UINT fmt, ULONG_PTR data,
return 0;
}
HWND get_shell_window(void)
{
HWND hwnd = 0;
SERVER_START_REQ(set_global_windows)
{
req->flags = 0;
if (!wine_server_call_err(req))
hwnd = wine_server_ptr_handle( reply->old_shell_window );
}
SERVER_END_REQ;
return hwnd;
}
/***********************************************************************
* NtUserSetShellWindowEx (win32u.@)
*/
BOOL WINAPI NtUserSetShellWindowEx( HWND shell, HWND list_view )
{
BOOL ret;
/* shell = Progman[Program Manager]
* |-> SHELLDLL_DefView
* list_view = | |-> SysListView32
* | | |-> tooltips_class32
* | |
* | |-> SysHeader32
* |
* |-> ProxyTarget
*/
if (get_shell_window())
return FALSE;
if (get_window_long( shell, GWL_EXSTYLE ) & WS_EX_TOPMOST)
return FALSE;
if (list_view != shell && (get_window_long( list_view, GWL_EXSTYLE ) & WS_EX_TOPMOST))
return FALSE;
if (list_view && list_view != shell)
NtUserSetWindowPos( list_view, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
NtUserSetWindowPos( shell, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
SERVER_START_REQ(set_global_windows)
{
req->flags = SET_GLOBAL_SHELL_WINDOWS;
req->shell_window = wine_server_user_handle( shell );
req->shell_listview = wine_server_user_handle( list_view );
ret = !wine_server_call_err(req);
}
SERVER_END_REQ;
return ret;
}
HWND get_progman_window(void)
{
HWND ret = 0;
SERVER_START_REQ(set_global_windows)
{
req->flags = 0;
if (!wine_server_call_err(req))
ret = wine_server_ptr_handle( reply->old_progman_window );
}
SERVER_END_REQ;
return ret;
}
HWND set_progman_window( HWND hwnd )
{
SERVER_START_REQ(set_global_windows)
{
req->flags = SET_GLOBAL_PROGMAN_WINDOW;
req->progman_window = wine_server_user_handle( hwnd );
if (wine_server_call_err( req )) hwnd = 0;
}
SERVER_END_REQ;
return hwnd;
}
HWND get_taskman_window(void)
{
HWND ret = 0;
SERVER_START_REQ(set_global_windows)
{
req->flags = 0;
if (!wine_server_call_err(req))
ret = wine_server_ptr_handle( reply->old_taskman_window );
}
SERVER_END_REQ;
return ret;
}
HWND set_taskman_window( HWND hwnd )
{
/* hwnd = MSTaskSwWClass
* |-> SysTabControl32
*/
SERVER_START_REQ(set_global_windows)
{
req->flags = SET_GLOBAL_TASKMAN_WINDOW;
req->taskman_window = wine_server_user_handle( hwnd );
if (wine_server_call_err( req )) hwnd = 0;
}
SERVER_END_REQ;
return hwnd;
}