[Bug 27403] New: Collapsable section headers in Solidworks property manager are overdrawn, thus unusable
http://bugs.winehq.org/show_bug.cgi?id=27403 Summary: Collapsable section headers in Solidworks property manager are overdrawn, thus unusable Product: Wine Version: 1.3.21 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: gdi32 AssignedTo: wine-bugs(a)winehq.org ReportedBy: mpartap(a)gmx.net The problem can be seen in the attached video: headers on the first tab are first displayed correctly (and are clickable), then they get overdrawn slowly which makes them non-clickable. Usually, the second tab does not have this problem, and some actions trigger the header buttons to be redrawn, but they get overdrawn again at once. I tried to nail down the problem by vastly expanding RelayExclude to the 500 topmost function calls, an excerpt of the resulting log is also attached. No fixmes or warnings come up. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #1 from Marcel Partap <mpartap(a)gmx.net> 2011-06-06 05:02:25 CDT --- Created an attachment (id=35043) --> (http://bugs.winehq.org/attachment.cgi?id=35043) reduced relay log the video (2.5MiB) can be found @ http://tinyurl.com/solidworks-propertymanager-ogv -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #2 from Marcel Partap <mpartap(a)gmx.net> 2011-06-06 05:03:33 CDT --- Created an attachment (id=35044) --> (http://bugs.winehq.org/attachment.cgi?id=35044) RelayExclude.reg setting -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 Markus Amsler <markus.amsler(a)oribi.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |markus.amsler(a)oribi.org Ever Confirmed|0 |1 --- Comment #3 from Markus Amsler <markus.amsler(a)oribi.org> 2011-06-13 16:23:25 CDT --- I also see this bug. mfc80u repeatedly calls SetWindowPos and makes the section header window each time 5 pixel smaller until its gone. -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #4 from Marcel Partap <mpartap(a)gmx.net> 2011-06-15 19:56:06 CDT ---
mfc80u repeatedly calls SetWindowPos and makes the section header window each time 5 pixel smaller until its gone. Mhh. What is that good for. Can it be stopped?
-- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #5 from Markus Amsler <markus.amsler(a)oribi.org> 2011-06-16 06:52:54 CDT ---
Mhh. What is that good for. Can it be stopped? That's just a sympton of the bug. I still don't know whats causing mfc80u to go haywire. In fact I'm still not even sure if its a comctl32 or user32 windowing issue.
-- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 Maarten Bezemer <maarten.bezemer(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |maarten.bezemer(a)gmail.com --- Comment #6 from Maarten Bezemer <maarten.bezemer(a)gmail.com> 2012-02-01 03:19:38 CST --- Duplicate of bug #24621 -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #7 from Austin English <austinenglish(a)gmail.com> --- This is your friendly reminder that there has been no bug activity for 2 years. Is this still an issue in current (1.7.16 or newer) wine? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #8 from Maarten Bezemer <maarten.bezemer(a)gmail.com> --- It is still an issue with wine-1.7.15 (on Kubuntu 13.10, 64-bit) Although, I do not precisely know whether it is overdrawn or not. But all headers briefly show their content (texts) and then this content disappears, making the header unusable. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 Sylvain Petreolle <spetreolle(a)yahoo.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |spetreolle(a)yahoo.fr -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 Funkster <wine-bugs(a)funkster.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |wine-bugs(a)funkster.org -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #9 from Funkster <wine-bugs(a)funkster.org> --- This is still an issue with wine-1.7.28 (on Fedora 20, 64-bit). Has anyone had any ideas on the cause? Or at least a way to make the headers remain clickable even if they get overwritten? This is really the last bug that's stopping me using all the features of this product. Thanks! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 Sebastian Lackner <sebastian(a)fds-team.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |sebastian(a)fds-team.de -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 denis bonnenfant <denis.bonnenfant(a)diderot.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |denis.bonnenfant(a)diderot.or | |g --- Comment #10 from denis bonnenfant <denis.bonnenfant(a)diderot.org> --- The issue is still there with SW2014, but redraws are faster, and most of the dialogs are now useable. A workaround for unclickable tabs is to undock the property manager, and to resize it, then to click quickly on the tabs before redraw ! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #11 from Maarten Bezemer <maarten.bezemer(a)gmail.com> --- This is still an issue for SolidWorks 2010 (wine-1.7.34, WINEARCH=win32, Kubuntu 14.10, 64-bit) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #12 from denis bonnenfant <denis.bonnenfant(a)diderot.org> --- This bug is still present in 1.7.51, and it is now the last one to solve for give gold status to SolidWorks ! -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #13 from Marcel Partap <mpartap(a)gmx.net> --- (In reply to Markus Amsler from comment #3)
mfc80u repeatedly calls SetWindowPos and makes the section header window each time 5 pixel smaller until its gone. ...mmh.. is there any possibility to hook insert a SetWindowPos() call to revert the effect? How did you find this?
-- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 Sylvain Petreolle <spetreolle(a)yahoo.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- CC|spetreolle(a)yahoo.fr | -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #14 from Funkster <wine-bugs(a)funkster.org> --- This is still an issue with SolidWorks 2013 / wine 1.9.12 / WINEARCH=win32 / fedora 23 64bit. Is it of any interest that SolidWorks 2008 is not affected by this bug? The headers look the same, but I guess they're being drawn in a different way? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 Dmitry <windes(a)rambler.ru> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |windes(a)rambler.ru --- Comment #15 from Dmitry <windes(a)rambler.ru> --- This is still a problem on Wine x64 (tested on 6.0, 6.23, 7.0, 7.4, 7.5, 7.6, 7.9, 7.10, 7.11, 7.12) on SolidWorks 2014, 207, 2020 and 2022. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 Dimitris Zervas <dzervas(a)dzervas.gr> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dzervas(a)dzervas.gr --- Comment #16 from Dimitris Zervas <dzervas(a)dzervas.gr> --- This is still a problem in SW 2024 with wine staging 9.8-6 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #17 from Dimitris Zervas <dzervas(a)dzervas.gr> --- The video URL is now dead, here's the bug in SW 2024: https://youtu.be/TacxaKBvlY0 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #18 from Dimitris Zervas <dzervas(a)dzervas.gr> --- Created attachment 76452 --> https://bugs.winehq.org/attachment.cgi?id=76452 WineVSWindows_SetUserPos.log I added some code to log all NtUserSetWindowPos to wine and I understood the following: The problematic code calls SetWindowPos many times with flag=0 and after=HWND_TOPMOST I ran the program under a Windows VM (which runs fine) and using API Monitor I logged all the SetWindowPos calls I found that the calls where not nearly as many and the X and CX arguments where not counted down although that's true in wine - thus the "animation" of deleting the text I'm attaching the wine logs vs the windows logs (WineVSWindows_SetUserPos.log) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #19 from Dimitris Zervas <dzervas(a)dzervas.gr> --- I got the text to stop vanishing but some menus (mostly checkboxes) are still missing Also my "fix" is quite bad and will probably cause problems to other apps - though seems to be working for solidworks (commit 79fb59e21ed): diff --git a/dlls/win32u/window.c b/dlls/win32u/window.c index 13dd1c8d80a..22c0738d840 100644 --- -hdlls/win32u/window.c +++ b/dlls/win32u/window.c @@ -3520,6 +3520,12 @@ BOOL WINAPI NtUserSetWindowPos( HWND hwnd, HWND after, INT x, INT y, INT cx, INT { WINDOWPOS winpos; + if (flags == 0 && after == HWND_TOPMOST) + { + printf("Here => NtUserSetWindowPos x: %d y: %d cx: %d cy: %d, flags: %08X\n", x, y, cx, cy, flags); + return TRUE; + } + TRACE( "hwnd %p, after %p, %d,%d (%dx%d), flags %08x\n", hwnd, after, x, y, cx, cy, flags ); if(TRACE_ON(win)) dump_winpos_flags(flags); -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #20 from denis bonnenfant <denis.bonnenfant(a)diderot.org> --- Nice to see that the resolution of this 15 years old bug is not dead ! I will compile wine with this patch, and give you my results. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #21 from denis bonnenfant <denis.bonnenfant@diderot.org> --- I compiled the last patch against Wine11.0.0, and i confirm that it mostly works. as far as i understand it, the patch is just giving up when inconsistent windows redraw is called. So it is not a real fix, as some inconsistent window adressing is still present. Only left properties panel is affected So there are still some issues : - validation checkboxes on the top of left panel are clickable, but have no effect. - some numeric inputs behave strangely : only one digit can be typed, and then focus is lost. Maybe a clue about redraw mismatches : - bottom corners of main window are defined as upper ones for window manager : when mouse is on top of them, top left or right corner arrow icons are displayed -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #22 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81196 --> http://bugs.winehq.org/attachment.cgi?id=81196 [PATCH] win32u: Don't send WM_CAPTURECHANGED when the capture window doesn't change. When SetCapture() is called on a window that already owns the mouse capture, Windows does not send WM_CAPTURECHANGED to that window. Wine was incorrectly sending WM_CAPTURECHANGED(lParam=hwnd) to the window itself, which can confuse subclass procedures that call ReleaseCapture() in response to WM_CAPTURECHANGED. This caused a bug with SolidWorks: when the PropertyManager close button (a subclassed BUTTON control that holds mouse capture for hover tracking) received WM_LBUTTONDOWN, the comctl32 button procedure called SetCapture() while already being the capture owner. Wine sent the spurious WM_CAPTURECHANGED(lParam=self), the SolidWorks subclass procedure responded with ReleaseCapture(), and the resulting WM_CAPTURECHANGED(lParam=0) cleared BUTTON_BTNPRESSED before WM_LBUTTONUP was processed, preventing BN_CLICKED from being sent and making the close button appear to do nothing. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27403 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #23 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81197 --> http://bugs.winehq.org/attachment.cgi?id=81197 [PATCH 1/2] winex11.drv: Don't send WM_CANCELMODE for intra-process focus changes. On Windows, WM_CANCELMODE is sent to the foreground window when it loses focus to another application, not when focus moves to another window within the same process. Wine was sending WM_CANCELMODE whenever any X11 FocusOut event arrived for the foreground window, including intra-process focus changes (e.g. when the application itself calls SetActiveWindow on a different window it owns). This caused applications that use WM_CANCELMODE to dismiss popup windows or abort drag operations to incorrectly react to purely internal focus changes. Fix by guarding the WM_CANCELMODE send with is_current_process_focused(): only send it when Wine has actually lost focus to another X11 client. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #24 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81198 --> http://bugs.winehq.org/attachment.cgi?id=81198 [PATCH 2/2] winex11.drv: Suppress spurious foreground changes from transient _NET_ACTIVE_WINDOW states When an application rapidly calls SetActiveWindow(A) followed by SetActiveWindow(B), Wine sends two _NET_ACTIVE_WINDOW ClientMessages to the window manager. The WM processes these asynchronously; Wine may receive the PropertyNotify confirmation for A before its request for B has reached the WM, or before it has been processed. Multiple Wine threads independently receive the same root-window PropertyNotify. A thread that did not initiate the request has no pending serial and treats the PropertyNotify as an "unexpected" update, potentially triggering a spurious Win32 foreground change to A even though the intended final state is B. A concrete case occurs with SolidWorks PropertyManager: when the user types a digit in a numeric input field, SolidWorks creates a suggestion popup window (P). SetActiveWindow(P) is called (to show it), then immediately SetActiveWindow(field) is called to return focus. X11DRV_ActivateWindow for P calls set_input_focus() directly (P is not WM-managed), causing the WM to update _NET_ACTIVE_WINDOW to P's X11 window. Wine threads process this PropertyNotify and change the Win32 foreground to P, which sends WM_ACTIVATE(deactivate) to the input field, causing it to lose focus and discard the typed digit. Fix by tracking the last _NET_ACTIVE_WINDOW target requested by any thread in a process-wide volatile variable (process_last_nav_request). This variable is updated in set_net_active_window() before the deduplication guard, so it reflects the intended final state even when no new X11 request is actually sent (because the pending state already matches the target). When GetWindowStateUpdates() would change the Win32 foreground based on a PropertyNotify, it first checks whether the notified X11 window matches the last requested target; if not, the PropertyNotify reflects an intermediate transient state and the foreground change is suppressed. Additionally, in net_active_window_notify(), when the requesting thread receives a PropertyNotify that mismatches its pending target (the WM confirmed an intermediate request before the final one arrived), the desired/pending state is restored to the final target and a non-zero sentinel is placed in expect_serial to continue blocking GetWindowStateUpdates on that thread until the final confirmation arrives. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #25 from Marcel Partap <mpartap@gmx.net> --- Created attachment 81199 --> http://bugs.winehq.org/attachment.cgi?id=81199 2011-06-06 solidworks-propertymanager-glitch.ogv Noticed that tinyurl link I posted 15 years ago broke and winezilla now allows larger attachments, so here's the original glitch video from 2011-06-06 again for comparison ; ) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #26 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81202 --> http://bugs.winehq.org/attachment.cgi?id=81202 skip HWND_TOPMOST Z order changes fos child window Solves the original bug (collapsable headers) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 denis bonnenfant <denis.bonnenfant@diderot.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #81196|0 |1 is obsolete| | --- Comment #27 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81203 --> http://bugs.winehq.org/attachment.cgi?id=81203 replace 81196 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 denis bonnenfant <denis.bonnenfant@diderot.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #81197|0 |1 is obsolete| | --- Comment #28 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81204 --> http://bugs.winehq.org/attachment.cgi?id=81204 Don't send WM_CANCELMODE for intra-process focus changes. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 denis bonnenfant <denis.bonnenfant@diderot.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #81198|0 |1 is obsolete| | --- Comment #29 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81205 --> http://bugs.winehq.org/attachment.cgi?id=81205 winex11.drv: Suppress spurious foreground changes from transient _NET_ACTIVE_WINDOW states -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #30 from denis bonnenfant <denis.bonnenfant@diderot.org> --- With these 4 patches, property panel behaves as expected. There is still a bug : controls in "options" panel are not drawn (typically construction line checkbox and infinite line), but clicking is active. It's an independent bug, drawing is made out of the bounds of parent window. On Windows, compositor renders correctly the controls regardless of dimensions, but in Wine some internal logic is needed for managing this particular case. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=27403 --- Comment #31 from denis bonnenfant <denis.bonnenfant@diderot.org> --- Created attachment 81231 --> http://bugs.winehq.org/attachment.cgi?id=81231 win32u: Don't disable cache DCs on release. The bug is fully fixed with this serie of patches. Cache DCs should remain valid after EndPaint/ReleaseDC until they are reacquired for a different window, matching Windows behaviour. Disabling them immediately prevents applications that use the HDC after EndPaint from working correctly, e.g. SolidWorks calling DrawThemeTextEx with the BeginPaint HDC after EndPaint, resulting in invisible checkbox labels in the PropertyManager panel. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (3)
-
wine-bugs@winehq.org -
WineHQ Bugzilla -
WineHQ Bugzilla