From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/window.c | 4 +--- server/protocol.def | 10 ++++++++++ server/window.c | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 5d18913d3c6..0bdee8ec66a 100644 --- a/dlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -5550,14 +5550,12 @@ HWND WINAPI NtUserCreateWindowEx( DWORD ex_style, UNICODE_STRING *class_name,
if (!(win->dwStyle & (WS_CHILD | WS_POPUP))) win->flags |= WIN_NEED_SIZE;
- SERVER_START_REQ( set_window_info ) + SERVER_START_REQ( init_window_info ) { req->handle = wine_server_user_handle( hwnd ); - req->flags = SET_WIN_STYLE | SET_WIN_EXSTYLE | SET_WIN_UNICODE; req->style = win->dwStyle; req->ex_style = win->dwExStyle; req->is_unicode = (win->flags & WIN_ISUNICODE) != 0; - req->extra_offset = -1; wine_server_call( req ); } SERVER_END_REQ; diff --git a/server/protocol.def b/server/protocol.def index e9b311d0eb3..2018f2049ae 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -2593,6 +2593,16 @@ enum message_type @END
+/* Initialize some window information */ +@REQ(init_window_info) + user_handle_t handle; /* handle to the window */ + unsigned int style; /* window style */ + unsigned int ex_style; /* window extended style */ + short int is_unicode; /* ANSI or unicode */ +@REPLY +@END + + /* Set some information in a window */ @REQ(set_window_info) unsigned short flags; /* flags for fields to set (see below) */ diff --git a/server/window.c b/server/window.c index c9ee854d37c..f1575b023fe 100644 --- a/server/window.c +++ b/server/window.c @@ -2354,6 +2354,21 @@ DECL_HANDLER(get_window_info) }
+/* initialize some window information */ +DECL_HANDLER(init_window_info) +{ + struct window *win; + + if (!(win = get_window( req->handle ))) return; + win->style = req->style; + win->ex_style = req->ex_style; + win->is_unicode = req->is_unicode; + + /* changing window style triggers a non-client paint */ + win->paint_flags |= PAINT_NONCLIENT; +} + + /* set some information in a window */ DECL_HANDLER(set_window_info) {