I found that the z-order of window on WIN system will not change when HWND_TOPMOST and HWND_NOTOPMOST attributes are set for the same level window with WS_CHILD style, but it will change in wine, resulting in the problem of overlapping window, so I wrote a test function to explain this problem.
v2: Add git log information v3: Move the path to fixup_flags function, only used to fix SetWindowPos function problem. v4: Divide a path into two pathes, better explain the prolem. and add notopmost verification v5: Add todo_wine to test patch[PATCH v5 1/2], and optimize fixup_flags[PATCH v5 2/2].
Signed-off-by: Jiajin Cui cuijiajin@uniontech.com
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=73859
Your paranoid android.
=== w1064v1809 (32 bit report) ===
user32: win.c:3229: Test failed: GetActiveWindow() = 0003004C win.c:3232: Test failed: GetFocus() = 00000000 win.c:3244: Test failed: GetFocus() = 00000000 win.c:3247: Test failed: GetFocus() = 00000000 win.c:3250: Test failed: GetFocus() = 00000000 win.c:3253: Test failed: GetActiveWindow() = 0003004C win.c:3257: Test failed: GetFocus() = 00000000 win.c:3260: Test failed: GetFocus() = 00000000 win.c:3954: Test failed: hwnd 00020174/000E02CA message 0737 win.c:3959: Test failed: hwnd 000E02CA/000E02CA message 0202 win.c:3964: Test failed: hwnd 000E02CA/000E02CA message 0203 win.c:3968: Test failed: message 0202 available
=== w1064v1809_2scr (32 bit report) ===
user32: win.c:9543: Test failed: Timed out waiting for the child process
=== w1064v1809_he (32 bit report) ===
user32: win.c:3914: Test failed: hwnd 0003008C message 0738
=== w1064v1809_ja (32 bit report) ===
user32: win.c:3789: Test failed: message 0738 available win.c:3914: Test failed: hwnd 000202F0 message 7fff win.c:3993: Test failed: hwnd 000202F0/00020372 message 7fff win.c:3996: Test failed: hwnd 000202F0/00020372 message 7fff
=== w1064v1809_zh_CN (32 bit report) ===
user32: win.c:3914: Test failed: hwnd 0001038A message 0282 win.c:3993: Test failed: hwnd 0001038A/000D03D4 message 0282 win.c:3996: Test failed: hwnd 0001038A/000D03D4 message 0282
=== w1064v1809 (64 bit report) ===
user32: win.c:3229: Test failed: GetActiveWindow() = 000000000003004A win.c:3232: Test failed: GetFocus() = 0000000000000000 win.c:3244: Test failed: GetFocus() = 0000000000000000 win.c:3247: Test failed: GetFocus() = 0000000000000000 win.c:3250: Test failed: GetFocus() = 0000000000000000 win.c:3253: Test failed: GetActiveWindow() = 000000000003004A win.c:3257: Test failed: GetFocus() = 0000000000000000 win.c:3260: Test failed: GetFocus() = 0000000000000000 win.c:3954: Test failed: hwnd 0000000000020174/00000000000D02CE message 0737 win.c:3959: Test failed: hwnd 00000000000D02CE/00000000000D02CE message 0202 win.c:3964: Test failed: hwnd 00000000000D02CE/00000000000D02CE message 0203 win.c:3968: Test failed: message 0202 available
=== debiant (32 bit report) ===
user32: win.c:3051: Test succeeded inside todo block: 000C00AC: expected prev 000D00A2, got 000D00A2 win.c:3051: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3051: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3052: Test succeeded inside todo block: 000A00A4: expected next 00000000, got 00000000 win.c:3052: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected next 000C00AC, got 000C00AC win.c:3053: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected NOT topmost win.c:3059: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3059: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3059: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3065: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3072: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected next 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected NOT topmost
=== debiant (32 bit French report) ===
user32: win.c:3051: Test succeeded inside todo block: 000C00AC: expected prev 000D00A2, got 000D00A2 win.c:3051: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3051: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3052: Test succeeded inside todo block: 000A00A4: expected next 00000000, got 00000000 win.c:3052: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected next 000C00AC, got 000C00AC win.c:3053: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected NOT topmost win.c:3059: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3059: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3059: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3065: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3072: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected next 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected NOT topmost
=== debiant (32 bit Japanese:Japan report) ===
user32: win.c:3051: Test succeeded inside todo block: 000C00AC: expected prev 000D00A2, got 000D00A2 win.c:3051: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3051: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3052: Test succeeded inside todo block: 000A00A4: expected next 00000000, got 00000000 win.c:3052: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected next 000C00AC, got 000C00AC win.c:3053: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected NOT topmost win.c:3059: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3059: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3059: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3065: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3072: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected next 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected NOT topmost
=== debiant (32 bit Chinese:China report) ===
user32: win.c:3051: Test succeeded inside todo block: 000C00AC: expected prev 000D00A2, got 000D00A2 win.c:3051: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3051: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3052: Test succeeded inside todo block: 000A00A4: expected next 00000000, got 00000000 win.c:3052: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected next 000C00AC, got 000C00AC win.c:3053: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected NOT topmost win.c:3059: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3059: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3059: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3065: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3072: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected next 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected NOT topmost
=== debiant (32 bit WoW report) ===
user32: win.c:3051: Test succeeded inside todo block: 000C00AC: expected prev 000D00A2, got 000D00A2 win.c:3051: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3051: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3052: Test succeeded inside todo block: 000A00A4: expected next 00000000, got 00000000 win.c:3052: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected next 000C00AC, got 000C00AC win.c:3053: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected NOT topmost win.c:3059: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3059: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3059: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3065: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3072: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected next 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected NOT topmost
=== debiant (64 bit WoW report) ===
user32: win.c:3051: Test succeeded inside todo block: 000C00AC: expected prev 000D00A2, got 000D00A2 win.c:3051: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3051: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3052: Test succeeded inside todo block: 000A00A4: expected next 00000000, got 00000000 win.c:3052: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected next 000C00AC, got 000C00AC win.c:3053: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3053: Test succeeded inside todo block: 000D00A2: expected NOT topmost win.c:3059: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3059: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3059: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected next 000D00A2, got 000D00A2 win.c:3065: Test succeeded inside todo block: 000A00A4: expected prev 00000000, got 00000000 win.c:3065: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected owner 00000000, got 00000000 win.c:3071: Test succeeded inside todo block: 000C00AC: expected NOT topmost win.c:3072: Test succeeded inside todo block: 000A00A4: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected next 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected owner 00000000, got 00000000 win.c:3073: Test succeeded inside todo block: 000D00A2: expected NOT topmost