Module: wine Branch: master Commit: cc20ef3b3bd6ea0649419f14b0b0f59a156e0aa0 URL: https://source.winehq.org/git/wine.git/?a=commit;h=cc20ef3b3bd6ea0649419f14b...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Mar 9 15:21:36 2022 +0100
win32u: Move IsWindowUnicode implementation from user32.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/win.c | 23 +---------------------- dlls/win32u/window.c | 29 +++++++++++++++++++++++++++++ include/ntuser.h | 1 + 3 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/dlls/user32/win.c b/dlls/user32/win.c index 4f491c16f65..a81e112ee0d 100644 --- a/dlls/user32/win.c +++ b/dlls/user32/win.c @@ -2081,28 +2081,7 @@ BOOL WINAPI IsWindowEnabled(HWND hWnd) */ BOOL WINAPI IsWindowUnicode( HWND hwnd ) { - WND * wndPtr; - BOOL retvalue = FALSE; - - if (!(wndPtr = WIN_GetPtr(hwnd))) return FALSE; - - if (wndPtr == WND_DESKTOP) return TRUE; - - if (wndPtr != WND_OTHER_PROCESS) - { - retvalue = (wndPtr->flags & WIN_ISUNICODE) != 0; - WIN_ReleasePtr( wndPtr ); - } - else - { - SERVER_START_REQ( get_window_info ) - { - req->handle = wine_server_user_handle( hwnd ); - if (!wine_server_call_err( req )) retvalue = reply->is_unicode; - } - SERVER_END_REQ; - } - return retvalue; + return NtUserCallHwnd( hwnd, NtUserIsWindowUnicode ); }
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index aed536c9c54..90e96e17842 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -652,6 +652,33 @@ static BOOL is_window_drawable( HWND hwnd, BOOL icon ) return retval; }
+/* see IsWindowUnicode */ +static BOOL is_window_unicode( HWND hwnd ) +{ + WND *win; + BOOL ret = FALSE; + + if (!(win = get_win_ptr(hwnd))) return FALSE; + + if (win == WND_DESKTOP) return TRUE; + + if (win != WND_OTHER_PROCESS) + { + ret = (win->flags & WIN_ISUNICODE) != 0; + release_win_ptr( win ); + } + else + { + SERVER_START_REQ( get_window_info ) + { + req->handle = wine_server_user_handle( hwnd ); + if (!wine_server_call_err( req )) ret = reply->is_unicode; + } + SERVER_END_REQ; + } + return ret; +} + static LONG_PTR get_win_data( const void *ptr, UINT size ) { if (size == sizeof(WORD)) @@ -1065,6 +1092,8 @@ DWORD WINAPI NtUserCallHwnd( HWND hwnd, DWORD code ) return get_server_window_text( hwnd, NULL, 0 ); case NtUserIsWindow: return is_window( hwnd ); + case NtUserIsWindowUnicode: + return is_window_unicode( hwnd ); case NtUserIsWindowVisible: return is_window_visible( hwnd ); /* temporary exports */ diff --git a/include/ntuser.h b/include/ntuser.h index 5463853afde..1587e1db2f7 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -144,6 +144,7 @@ enum NtUserGetParent, NtUserGetWindowTextLength, NtUserIsWindow, + NtUserIsWindowUnicode, NtUserIsWindowVisible, /* temporary exports */ NtUserCreateDesktopWindow,