user32: Call window procedure even if we're out of winproc handles.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
55a5bac500
commit
c9ae38e4c7
|
@ -876,6 +876,7 @@ BOOL WINPROC_call_window( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
|
|||
WND *wndPtr;
|
||||
WNDPROC func;
|
||||
WINDOWPROC *proc;
|
||||
BOOL unicode_win;
|
||||
|
||||
if (!(wndPtr = WIN_GetPtr( hwnd ))) return FALSE;
|
||||
if (wndPtr == WND_OTHER_PROCESS || wndPtr == WND_DESKTOP) return FALSE;
|
||||
|
@ -886,10 +887,9 @@ BOOL WINPROC_call_window( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
|
|||
}
|
||||
func = wndPtr->winproc;
|
||||
proc = handle_to_proc( wndPtr->winproc );
|
||||
unicode_win = wndPtr->flags & WIN_ISUNICODE;
|
||||
WIN_ReleasePtr( wndPtr );
|
||||
|
||||
if (!proc) return TRUE;
|
||||
|
||||
if (thread_info->recursion_count > MAX_WINPROC_RECURSION) return FALSE;
|
||||
thread_info->recursion_count++;
|
||||
|
||||
|
@ -897,19 +897,27 @@ BOOL WINPROC_call_window( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,
|
|||
{
|
||||
if (proc == WINPROC_PROC16)
|
||||
WINPROC_CallProcWtoA( wow_handlers.call_window_proc, hwnd, msg, wParam, lParam, result, func );
|
||||
else if (proc->procW)
|
||||
else if (proc && proc->procW)
|
||||
call_window_proc( hwnd, msg, wParam, lParam, result, proc->procW );
|
||||
else
|
||||
else if (proc)
|
||||
WINPROC_CallProcWtoA( call_window_proc, hwnd, msg, wParam, lParam, result, proc->procA );
|
||||
else if (unicode_win)
|
||||
call_window_proc( hwnd, msg, wParam, lParam, result, func );
|
||||
else
|
||||
WINPROC_CallProcWtoA( call_window_proc, hwnd, msg, wParam, lParam, result, func );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (proc == WINPROC_PROC16)
|
||||
wow_handlers.call_window_proc( hwnd, msg, wParam, lParam, result, func );
|
||||
else if (proc->procA)
|
||||
else if (proc && proc->procA)
|
||||
call_window_proc( hwnd, msg, wParam, lParam, result, proc->procA );
|
||||
else
|
||||
else if (proc)
|
||||
WINPROC_CallProcAtoW( call_window_proc, hwnd, msg, wParam, lParam, result, proc->procW, mapping );
|
||||
else if (unicode_win)
|
||||
WINPROC_CallProcAtoW( call_window_proc, hwnd, msg, wParam, lParam, result, func, mapping );
|
||||
else
|
||||
call_window_proc( hwnd, msg, wParam, lParam, result, func );
|
||||
}
|
||||
thread_info->recursion_count--;
|
||||
return TRUE;
|
||||
|
|
Loading…
Reference in New Issue