Jacek Caban : win32u: Move IsWindowUnicode implementation from user32.

Alexandre Julliard julliard at winehq.org
Wed Mar 9 16:08:44 CST 2022


Module: wine
Branch: master
Commit: cc20ef3b3bd6ea0649419f14b0b0f59a156e0aa0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=cc20ef3b3bd6ea0649419f14b0b0f59a156e0aa0

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Mar  9 15:21:36 2022 +0100

win32u: Move IsWindowUnicode implementation from user32.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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,




More information about the wine-cvs mailing list