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 8a52a0b..885ca45 100644 --- a/dlls/comctl32/combo.c +++ b/dlls/comctl32/combo.c @@ -1044,7 +1044,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 59c2e64..bd9a852 100644 --- a/dlls/user32/combo.c +++ b/dlls/user32/combo.c @@ -1051,7 +1051,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=55202
Your paranoid android.
=== debian10 (32 bit report) ===
user32: msg.c:5145: Test succeeded inside todo block: ShowWindow(SW_SHOWMINIMIZED):overlapped: marked "todo_wine" but succeeds
Report errors: user32:msg prints too much data (35221 bytes)
=== debian10 (32 bit Chinese:China report) ===
user32: clipboard.c:760: Test failed: 1: gle 5 clipboard.c:765: Test failed: 1.0: got 0000 instead of 0007 clipboard.c:805: Test failed: 1: gle 1418 clipboard.c:815: Test failed: 1: count 4 clipboard.c:818: Test failed: 1: gle 1418 clipboard.c:852: Test failed: 1: format 0007 got data 00128D90 clipboard.c:853: Test failed: 1.0: formats 00000000 have been rendered clipboard.c:858: Test failed: 1.0: formats 00000000 have been rendered clipboard.c:852: Test failed: 1: format 0001 got data 001227A0 clipboard.c:853: Test failed: 1.2: formats 00000000 have been rendered clipboard.c:858: Test failed: 1.2: formats 00000000 have been rendered clipboard.c:852: Test failed: 1: format 000d got data 00128DC0 clipboard.c:853: Test failed: 1.3: formats 00000000 have been rendered clipboard.c:858: Test failed: 1.3: formats 00000000 have been rendered msg.c:5145: Test succeeded inside todo block: ShowWindow(SW_SHOWMINIMIZED):overlapped: marked "todo_wine" but succeeds
Report errors: user32:msg prints too much data (35221 bytes)
=== debian10 (32 bit WoW report) ===
user32: msg.c:5145: Test succeeded inside todo block: ShowWindow(SW_SHOWMINIMIZED):overlapped: marked "todo_wine" but succeeds
Report errors: user32:msg prints too much data (35221 bytes)
=== debian10 (64 bit WoW report) ===
user32: msg.c:5145: Test succeeded inside todo block: ShowWindow(SW_SHOWMINIMIZED):overlapped: marked "todo_wine" but succeeds
Report errors: user32:msg prints too much data (35221 bytes)
Could you attach a small test application, with sources, to this report if adding a wine test is problematic?
On 8/8/19 4:41 PM, Nikolay Sivov wrote:
Could you attach a small test application, with sources, to this report if adding a wine test is problematic?
Sure. Should the test app create a combo box with edit box, subclass it, and fill it with some other color during erase? Or do you have something else in mind?
On 8/9/19 3:25 PM, Gabriel Ivăncescu wrote:
On 8/8/19 4:41 PM, Nikolay Sivov wrote:
Could you attach a small test application, with sources, to this report if adding a wine test is problematic?
Sure. Should the test app create a combo box with edit box, subclass it, and fill it with some other color during erase? Or do you have something else in mind?
Whatever Total Commander is doing, reduced to minimal example that shows this problem.
On 8/9/19 3:31 PM, Nikolay Sivov wrote:
On 8/9/19 3:25 PM, Gabriel Ivăncescu wrote:
On 8/8/19 4:41 PM, Nikolay Sivov wrote:
Could you attach a small test application, with sources, to this report if adding a wine test is problematic?
Sure. Should the test app create a combo box with edit box, subclass it, and fill it with some other color during erase? Or do you have something else in mind?
Whatever Total Commander is doing, reduced to minimal example that shows this problem.
Ok, I have uploaded a test app to the bug report that does the same thing (but fills it with text color instead of gray) and verified it on Windows too.