Some applications subclass the combo box and handle WM_ERASEBKGND themselves, without using WS_CLIPCHILDREN. This causes them to erase over the editbox child. There's no reason to redraw it in this case since the editbox is supposed to cover it, anyway.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22260 Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/comctl32/combo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/comctl32/combo.c b/dlls/comctl32/combo.c index 765fc63..c3de4f1 100644 --- a/dlls/comctl32/combo.c +++ b/dlls/comctl32/combo.c @@ -1007,7 +1007,7 @@ static void CBDropDown( LPHEADCOMBO lphc ) SWP_NOACTIVATE | SWP_SHOWWINDOW );
- if( !(lphc->wState & CBF_NOREDRAW) ) + if( !(lphc->wState & (CBF_NOREDRAW | CBF_EDIT)) ) RedrawWindow( lphc->self, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_NOCHILDREN );
Some applications subclass the combo box and handle WM_ERASEBKGND themselves, without using WS_CLIPCHILDREN. This causes them to erase over the editbox child. There's no reason to redraw it in this case since the editbox is supposed to cover it, anyway.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=22260 Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/user32/combo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/user32/combo.c b/dlls/user32/combo.c index ff5ed18..1b193e4 100644 --- a/dlls/user32/combo.c +++ b/dlls/user32/combo.c @@ -1011,7 +1011,7 @@ static void CBDropDown( LPHEADCOMBO lphc ) SWP_NOACTIVATE | SWP_SHOWWINDOW );
- if( !(lphc->wState & CBF_NOREDRAW) ) + if( !(lphc->wState & (CBF_NOREDRAW | CBF_EDIT)) ) RedrawWindow( lphc->self, NULL, 0, RDW_INVALIDATE | RDW_ERASE | RDW_UPDATENOW | RDW_NOCHILDREN );
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=75446
Your paranoid android.
=== debiant (32 bit report) ===
user32: monitor: Timeout msg: Timeout resource: Timeout scroll: Timeout win.c:10147: Test failed: GetActiveWindow() = 00000000 win.c:10147: Test failed: GetFocus() = 00000000 win.c:10149: Test failed: Expected foreground window 01230094, got 00E10102 win.c:10152: Test failed: Received WM_ACTIVATEAPP(0), did not expect it. win.c:10159: Test failed: Expected foreground window 01230094, got 00000000 win.c:10161: Test failed: GetActiveWindow() = 00000000 win.c:10161: Test failed: GetFocus() = 00000000 win.c:10169: Test failed: Received WM_ACTIVATEAPP(1), did not expect it.
=== debiant (32 bit Chinese:China report) ===
comctl32: tooltips.c:253: Test failed: 0: Failed to get current tool 0. tooltips.c:260: Test failed: 0: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 0: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 0: Unexpected uId cccccccc. tooltips.c:263: Test failed: 0: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 1: Failed to get current tool 0. tooltips.c:260: Test failed: 1: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 1: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 1: Unexpected uId cccccccc. tooltips.c:263: Test failed: 1: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 2: Failed to get current tool 0. tooltips.c:260: Test failed: 2: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 2: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 2: Unexpected uId cccccccc. tooltips.c:263: Test failed: 2: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 3: Failed to get current tool 0. tooltips.c:260: Test failed: 3: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 3: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 3: Unexpected uId cccccccc. tooltips.c:263: Test failed: 3: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 4: Failed to get current tool 0. tooltips.c:260: Test failed: 4: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 4: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 4: Unexpected uId cccccccc. tooltips.c:263: Test failed: 4: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 5: Failed to get current tool 0. tooltips.c:260: Test failed: 5: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 5: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 5: Unexpected uId cccccccc. tooltips.c:263: Test failed: 5: Unexpected lParam cccccccc. tooltips.c:1230: Test failed: TTN_SHOW parent seq: the msg sequence is not complete: expected 0000 - actual 004e tooltips.c:253: Test failed: 0: Failed to get current tool 0. tooltips.c:260: Test failed: 0: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 0: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 0: Unexpected uId cccccccc. tooltips.c:263: Test failed: 0: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 1: Failed to get current tool 0. tooltips.c:260: Test failed: 1: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 1: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 1: Unexpected uId cccccccc. tooltips.c:263: Test failed: 1: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 2: Failed to get current tool 0. tooltips.c:260: Test failed: 2: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 2: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 2: Unexpected uId cccccccc. tooltips.c:263: Test failed: 2: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 3: Failed to get current tool 0. tooltips.c:260: Test failed: 3: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 3: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 3: Unexpected uId cccccccc. tooltips.c:263: Test failed: 3: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 4: Failed to get current tool 0. tooltips.c:260: Test failed: 4: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 4: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 4: Unexpected uId cccccccc. tooltips.c:263: Test failed: 4: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 5: Failed to get current tool 0. tooltips.c:260: Test failed: 5: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 5: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 5: Unexpected uId cccccccc. tooltips.c:263: Test failed: 5: Unexpected lParam cccccccc. tooltips.c:1230: Test failed: TTN_SHOW parent seq: the msg sequence is not complete: expected 0000 - actual 004e
user32: input.c:2514: Test failed: 4: Unexpected cursor movement input.c:2514: Test failed: 5: Unexpected cursor movement input.c:2514: Test failed: 6: Unexpected cursor movement input.c:2514: Test failed: 7: Unexpected cursor movement input.c:2514: Test failed: 8: Unexpected cursor movement input.c:2235: Test failed: 9: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 9: Unexpected cursor movement input.c:2235: Test failed: 10: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 10: Unexpected cursor movement input.c:2235: Test failed: 11: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 11: Unexpected cursor movement input.c:2235: Test failed: 12input.c: foreground process expected WM_MOUSEMOVE message :2514: Test failed: 12: Unexpected cursor movement input.c:2514: Test failed: 13: Unexpected cursor movement input.c:2514: Test failed: 14: Unexpected cursor movement input.c:2514: Test failed: 15: Unexpected cursor movement input.c:2514: Test failed: 16: Unexpected cursor movement
=== debiant (build log) ===
The task timed out
=== debiant (32 bit WoW report) ===
user32: monitor: Timeout msg: Timeout resource: Timeout scroll: Timeout
=== debiant (64 bit WoW report) ===
comctl32: tooltips.c:253: Test failed: 0: Failed to get current tool 0. tooltips.c:260: Test failed: 0: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 0: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 0: Unexpected uId cccccccc. tooltips.c:263: Test failed: 0: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 1: Failed to get current tool 0. tooltips.c:260: Test failed: 1: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 1: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 1: Unexpected uId cccccccc. tooltips.c:263: Test failed: 1: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 2: Failed to get current tool 0. tooltips.c:260: Test failed: 2: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 2: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 2: Unexpected uId cccccccc. tooltips.c:263: Test failed: 2: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 3: Failed to get current tool 0. tooltips.c:260: Test failed: 3: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 3: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 3: Unexpected uId cccccccc. tooltips.c:263: Test failed: 3: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 4: Failed to get current tool 0. tooltips.c:260: Test failed: 4: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 4: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 4: Unexpected uId cccccccc. tooltips.c:263: Test failed: 4: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 5: Failed to get current tool 0. tooltips.c:260: Test failed: 5: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 5: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 5: Unexpected uId cccccccc. tooltips.c:263: Test failed: 5: Unexpected lParam cccccccc. tooltips.c:1230: Test failed: TTN_SHOW parent seq: the msg sequence is not complete: expected 0000 - actual 004e tooltips.c:253: Test failed: 0: Failed to get current tool 0. tooltips.c:260: Test failed: 0: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 0: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 0: Unexpected uId cccccccc. tooltips.c:263: Test failed: 0: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 1: Failed to get current tool 0. tooltips.c:260: Test failed: 1: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 1: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 1: Unexpected uId cccccccc. tooltips.c:263: Test failed: 1: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 2: Failed to get current tool 0. tooltips.c:260: Test failed: 2: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 2: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 2: Unexpected uId cccccccc. tooltips.c:263: Test failed: 2: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 3: Failed to get current tool 0. tooltips.c:260: Test failed: 3: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 3: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 3: Unexpected uId cccccccc. tooltips.c:263: Test failed: 3: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 4: Failed to get current tool 0. tooltips.c:260: Test failed: 4: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 4: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 4: Unexpected uId cccccccc. tooltips.c:263: Test failed: 4: Unexpected lParam cccccccc. tooltips.c:253: Test failed: 5: Failed to get current tool 0. tooltips.c:260: Test failed: 5: Unexpected hwnd CCCCCCCC. tooltips.c:261: Test failed: 5: Unexpected hinst CCCCCCCC. tooltips.c:262: Test failed: 5: Unexpected uId cccccccc. tooltips.c:263: Test failed: 5: Unexpected lParam cccccccc. tooltips.c:1230: Test failed: TTN_SHOW parent seq: the msg sequence is not complete: expected 0000 - actual 004e
user32: input.c:2514: Test failed: 4: Unexpected cursor movement input.c:2514: Test failed: 5: Unexpected cursor movement input.c:2514: Test failed: 6: Unexpected cursor movement input.c:2514: Test failed: 7: Unexpected cursor movement input.c:2514: Test failed: 8: Unexpected cursor movement input.c:2235: Test failed: 9: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 9: Unexpected cursor movement input.c:2235: Test failed: 10: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 10: Unexpected cursor movement input.c:2235: Test failed: 11: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 11: Unexpected cursor movement input.c:2235: Test failed: 12: foreground process expected WM_MOUSEMOVE message input.c:2514: Test failed: 12: Unexpected cursor movement input.c:2514: Test failed: 13: Unexpected cursor movement input.c:2514: Test failed: 14: Unexpected cursor movement input.c:2514: Test failed: 15: Unexpected cursor movement input.c:2514: Test failed: 16: Unexpected cursor movement monitor: Timeout
=== debiant (build log) ===
The task timed out
On 7/15/20 4:21 PM, Gabriel Ivăncescu wrote:
Some applications subclass the combo box and handle WM_ERASEBKGND themselves, without using WS_CLIPCHILDREN. This causes them to erase over the editbox child. There's no reason to redraw it in this case since the editbox is supposed to cover it, anyway.
Have you tried to replicate this with standalone test program, since Total Commander is wine-aware?
Hi Nikolay,
On 17/07/2020 10:56, Nikolay Sivov wrote:
On 7/15/20 4:21 PM, Gabriel Ivăncescu wrote:
Some applications subclass the combo box and handle WM_ERASEBKGND themselves, without using WS_CLIPCHILDREN. This causes them to erase over the editbox child. There's no reason to redraw it in this case since the editbox is supposed to cover it, anyway.
Have you tried to replicate this with standalone test program, since Total Commander is wine-aware?
Yeah, the bug report has a small test app at the end that exhibits the behavior (just compile it with MinGW). Or did you mean something else?
Thanks, Gabriel
On 7/17/20 3:46 PM, Gabriel Ivăncescu wrote:
Hi Nikolay,
On 17/07/2020 10:56, Nikolay Sivov wrote:
On 7/15/20 4:21 PM, Gabriel Ivăncescu wrote:
Some applications subclass the combo box and handle WM_ERASEBKGND themselves, without using WS_CLIPCHILDREN. This causes them to erase over the editbox child. There's no reason to redraw it in this case since the editbox is supposed to cover it, anyway.
Have you tried to replicate this with standalone test program, since Total Commander is wine-aware?
Yeah, the bug report has a small test app at the end that exhibits the behavior (just compile it with MinGW). Or did you mean something else?
Thanks. On Windows first combo, the one on top, does not show dropdown at all. Button is responsive but does not do anything it seems. Is is the one that was supposed to show the issue?
Thanks, Gabriel
On 18/07/2020 19:17, Nikolay Sivov wrote:
On 7/17/20 3:46 PM, Gabriel Ivăncescu wrote:
Hi Nikolay,
On 17/07/2020 10:56, Nikolay Sivov wrote:
On 7/15/20 4:21 PM, Gabriel Ivăncescu wrote:
Some applications subclass the combo box and handle WM_ERASEBKGND themselves, without using WS_CLIPCHILDREN. This causes them to erase over the editbox child. There's no reason to redraw it in this case since the editbox is supposed to cover it, anyway.
Have you tried to replicate this with standalone test program, since Total Commander is wine-aware?
Yeah, the bug report has a small test app at the end that exhibits the behavior (just compile it with MinGW). Or did you mean something else?
Thanks. On Windows first combo, the one on top, does not show dropdown at all. Button is responsive but does not do anything it seems. Is is the one that was supposed to show the issue?
Thanks, Gabriel
The dropdown itself is unimportant. What matters is the text in the edit box of the first combo box. Look at the edit box with "test". When you click on the drop down, the area with the edit box becomes black (or rather, COLOR_WINDOWTEXT) on Wine, but not on Windows.
Of course, that's because the app does that on purpose in WM_ERASEBKGND—which simulates the problem and what Total Commander actually does (except it paints it grey).
Since the edit box covers the combo box anyway, the patch just doesn't redraw it in this case, which fixes the problem.