https://bugs.winehq.org/show_bug.cgi?id=56206
Bug ID: 56206 Summary: Hardwar UIM.06 launcher (Hardman.exe) has shrinked UI tabs Product: Wine Version: 9.0-rc1 Hardware: x86-64 URL: https://archive.org/download/HARDWAR/HARDWAR.zip OS: Linux Status: NEW Keywords: download, regression Severity: minor Priority: P2 Component: comctl32 Assignee: wine-bugs@winehq.org Reporter: gyebro69@gmail.com CC: brendan@redmandi.com Regression SHA1: 39ae8778ca415780e23d0185cb4d5040aca4c789 Distribution: ArchLinux
Created attachment 75919 --> https://bugs.winehq.org/attachment.cgi?id=75919 Hardman.exe launcher screen (before/after)
The launcher for the game Hardwar (Steam) shows tabs in the UI in 2 rows. The second row of tabs in the UI however is not visible, looks like that row is shrinked. Clicking on the upper (visible) row reveals the lower row of tabs (see attached screenshot for comparison).
Reverting commit 39ae8778ca415780e23d0185cb4d5040aca4c789 fixes the problem for me.
Installing native comctl32.dll via winetricks on the other hand doesn't fix the problem.
To reproduce the problem with the non-Steam demo version (after UIM.06 patch is installed): 1. Install the demo located in the URL. Don't launch the game yet. 2. Download and install the UIM.06 patch from http://www.zedo.hardwar.info/HardwarUIM06.zip. 3. Launch Hardman.exe from the game directory.
The problem occurs with the Steam version too (already patched with UIM.06). DRM-free, can be launched without Steam running. https://store.steampowered.com/app/1500540/Hardwar/
wine-9.0-54-g1932c3a2516
https://bugs.winehq.org/show_bug.cgi?id=56206
--- Comment #1 from Rafał Mużyło galtgendo@o2.pl --- Perhaps a WINEDEBUG=tab so we could see the calculations while it fails ?
https://bugs.winehq.org/show_bug.cgi?id=56206
--- Comment #2 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 75921 --> https://bugs.winehq.org/attachment.cgi?id=75921 WINEDEBUG=+tab log
https://bugs.winehq.org/show_bug.cgi?id=56206
--- Comment #3 from Rafał Mużyło galtgendo@o2.pl --- Looking at the commit, combined with that both native comctl32 doesn't help and that TAB_SetMinTabWidth isn't being called, just TAB_SetItemBounds - the later only interested with width (unless tab is vertical) - makes me suspect the commit is actually wrong, the change simply had a side effect (perhaps GetTextMetrics after a font change is triggering some extra internal recalculations ?).
https://bugs.winehq.org/show_bug.cgi?id=56206
Brendan McGrath bmcgrath@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bmcgrath@codeweavers.com
--- Comment #4 from Brendan McGrath bmcgrath@codeweavers.com --- This seems to be a result of the way the game sets up the dialog. It calls TCM_ADJUSTRECT before adding text to the tabs.
With the Tahoma font, the empty tabs fit in the provided space (380 pixels), but after the text is added it doesn't; hence a second row is added.
But because TCM_ADJUSTRECT was called when only one row existed, the app thinks there is only one row and places the dialog over the second row.
If you click one of the tabs, the app calls TCM_ADJUSTRECT again and recognises the second row (hence the problem goes away).
On Windows, the text fits within the space provided, hence there is only ever one row and no problem (but Wine's font is 9 pixels wider).
The application is using the "MS Shell Dlg" font, which is actually a logical font that is redirected to a real font via a registry setting.
As a work-around, you can change this font from Tahoma to 'Microsoft Sans Serif'. This can be done, for example, with the following command: wine reg ADD 'HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes' /v 'MS Shell Dlg' /d 'Microsoft Sans Serif' /f
Or, for just one row: wine reg ADD 'HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes' /v 'MS Shell Dlg' /d 'System' /f
The reason you see this now (and not before 39ae877) is because the widths used in the tabs now reflect the font being used. It's unfortunate that fixing Wine seems to have revealed this applications dependence on Windows sized fonts. But it should really be calling TCM_ADJUSTRECT after the text is added to the tabs.