https://bugs.winehq.org/show_bug.cgi?id=52779
--- Comment #5 from Lorenzo Ferrillo lorenzofer@live.it --- Created attachment 72187 --> https://bugs.winehq.org/attachment.cgi?id=72187 execute hooks callbacks always when not an internal message
Found the cause. In the old code, the WH_CALLWNDPROC was always executed even when WINPROC_call_window was not calling it's procedure (exiting early) The parameter generation was moved in 0cfc7c445810c52622afa2b2635e0a23861df386 to init_window_call_params. This function still exit early with a FALSE. However in that commit the execution of WH_CALLWNDPROC is gated with an if(!init_window_call_params(...)) preventing WH_CALLWNDPROC to run. Before 0cfc7c445810c52622afa2b2635e0a23861df386 it was executed properly. After it isn't. This application ComboBoxes seems to need the old behaviour.
After the regression commit a lot of other commits moved this piece of code to win32u. This patch was made on the master. The patch restore the old behaviour the init_window_call_params call and gate the dispatch_win_proc_params but only after the WH_CALLWNDPROC execution. Differenlty from the old behaviour the patch make WH_CALLWNDPROCRET execute even when init_window_call_params is false, while in the pre regreession behaviour WINPROC_call_window returning false was causing the routine to exit early.