Commit eb317d9d authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

win32u: Store receive_flags in ntuser_thread_info.

parent ca903a4a
...@@ -713,10 +713,7 @@ BOOL WINAPI InSendMessage(void) ...@@ -713,10 +713,7 @@ BOOL WINAPI InSendMessage(void)
*/ */
DWORD WINAPI InSendMessageEx( LPVOID reserved ) DWORD WINAPI InSendMessageEx( LPVOID reserved )
{ {
struct received_message_info *info = get_user_thread_info()->receive_info; return NtUserGetThreadInfo()->receive_flags;
if (info) return info->flags;
return ISMEX_NOSEND;
} }
......
...@@ -1045,6 +1045,8 @@ static void reply_message( struct received_message_info *info, LRESULT result, M ...@@ -1045,6 +1045,8 @@ static void reply_message( struct received_message_info *info, LRESULT result, M
memset( &data, 0, sizeof(data) ); memset( &data, 0, sizeof(data) );
info->flags |= ISMEX_REPLIED; info->flags |= ISMEX_REPLIED;
if (info == get_user_thread_info()->receive_info)
NtUserGetThreadInfo()->receive_flags = info->flags;
if (info->type == MSG_OTHER_PROCESS && !replied) if (info->type == MSG_OTHER_PROCESS && !replied)
{ {
...@@ -1069,11 +1071,16 @@ static void reply_message( struct received_message_info *info, LRESULT result, M ...@@ -1069,11 +1071,16 @@ static void reply_message( struct received_message_info *info, LRESULT result, M
*/ */
BOOL reply_message_result( LRESULT result, MSG *msg ) BOOL reply_message_result( LRESULT result, MSG *msg )
{ {
struct received_message_info *info = get_user_thread_info()->receive_info; struct user_thread_info *thread_info = get_user_thread_info();
struct received_message_info *info = thread_info->receive_info;
if (!info) return FALSE; if (!info) return FALSE;
reply_message( info, result, msg ); reply_message( info, result, msg );
if (msg) get_user_thread_info()->receive_info = info->prev; if (msg)
{
thread_info->receive_info = info->prev;
thread_info->client_info.receive_flags = info->prev ? info->prev->flags : ISMEX_NOSEND;
}
return TRUE; return TRUE;
} }
...@@ -1865,6 +1872,7 @@ static int peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags, ...@@ -1865,6 +1872,7 @@ static int peek_message( MSG *msg, HWND hwnd, UINT first, UINT last, UINT flags,
info.prev = thread_info->receive_info; info.prev = thread_info->receive_info;
thread_info->receive_info = &info; thread_info->receive_info = &info;
thread_info->client_info.msg_source = msg_source_unavailable; thread_info->client_info.msg_source = msg_source_unavailable;
thread_info->client_info.receive_flags = info.flags;
result = call_window_proc( info.msg.hwnd, info.msg.message, info.msg.wParam, result = call_window_proc( info.msg.hwnd, info.msg.message, info.msg.wParam,
info.msg.lParam, (info.type != MSG_ASCII), FALSE, info.msg.lParam, (info.type != MSG_ASCII), FALSE,
WMCHAR_MAP_RECVMESSAGE, needs_unpack, buffer, size ); WMCHAR_MAP_RECVMESSAGE, needs_unpack, buffer, size );
......
...@@ -67,6 +67,7 @@ struct ntuser_thread_info ...@@ -67,6 +67,7 @@ struct ntuser_thread_info
ULONG_PTR message_extra; /* value for GetMessageExtraInfo */ ULONG_PTR message_extra; /* value for GetMessageExtraInfo */
INPUT_MESSAGE_SOURCE msg_source; /* Message source for current message */ INPUT_MESSAGE_SOURCE msg_source; /* Message source for current message */
WORD recursion_count; /* SendMessage recursion counter */ WORD recursion_count; /* SendMessage recursion counter */
UINT receive_flags; /* currently received message flags */
HWND top_window; /* desktop window */ HWND top_window; /* desktop window */
HWND msg_window; /* HWND_MESSAGE parent window */ HWND msg_window; /* HWND_MESSAGE parent window */
DPI_AWARENESS dpi_awareness; /* DPI awareness */ DPI_AWARENESS dpi_awareness; /* DPI awareness */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment