Redo of !1857, as suggested, the plan is to split original MR in half, breadcrumbs in first (this) MR, and address edit in another.
The changes are mostly cleanup (formatting, renaming, unused variables, missing free).
Visually, it hasn't changed from original MR, part 1 changes are:
![](/uploads/42fa717ce6f7adb40d6b0dcbbe0878fa/changes-1-3.png)
And part 2:
![](/uploads/cbdaa2d4b5b8945587e1f761a4609a08/changes-2.png)
Part 2 branch can be found [here](https://gitlab.winehq.org/vt/wine/-/commits/fd-navbar-part2).
Requires !2068, otherwise if application doesn't request comctl v6 (e.g. qapitrace), navigation bar will look like this:
![no-comctl-v6](/uploads/03e6a8b6dcf827114157e79640e49fea/no-comctl-v6.png)
Closes:
- https://bugs.winehq.org/show_bug.cgi?id=29912
- https://bugs.winehq.org/show_bug.cgi?id=54812
- https://bugs.winehq.org/show_bug.cgi?id=50338 (partially? fully with address edit?)
MR changes:
- v2
- Changed the gap between buttons to be scaled with DPI
- v3
- DPI scale the gap in layout calculation in breadcrumbs commit
missed it earlier
- remove padding from layout calculation
`GetWindowRect` was unintentionally returning double padding, 4px from `hspacing` in `itemdlg.c:update_layout`, and another 4px from somewhere else
- drop `comdlg32: Keep IExplorerBrowser in IFileDialog focused after Backspace.` hack
- retain IExplorerBrowser view focus in IFileDialog when creating new view
- redirect navigation bar buttons focus back to the previous window
- v4
- rename background to frame
- calculate overflow button width into separate variable, [will come in handy in part 2](https://gitlab.winehq.org/vt/wine/-/commit/998b6987500edda02d6a9177c7da2…
- simplify show-at-least-N-crumbs logic
- drop `comdlg32: Prevent arrow navigation of IFileDialog navigation bar buttons.`
- drop `comdlg32: Don't paint focus rect in IFileDialog navigation bar buttons.`
- add tab navigation
- avoid taking button focus by sending `VK_SPACE` instead
Description edits:
- v2
- Updated the changes image (by splitting it)
- Added MR changes
- v3
- Added description edits
- Updated the changes image again (forgot the overflow button change)
--
v5: comdlg32: Avoid taking focus on LMB click in IFileDialog navigation bar buttons.
comdlg32: Add tab navigation to IFileDialog navigation bar.
comdlg32: Retain IExplorerBrowser view focus in IFileDialog when creating new view.
comdlg32: Add breadcrumb overflow menu to IFileDialog navigation bar.
comdlg32: Add inner border to breadcrumbs in IFileDialog navigation bar.
comdlg32: Always show at least 2 crumbs in IFileDialog navigation bar.
comdlg32: Reuse address breadcrumbs in IFileDialog navigation bar.
comdlg32: Add address breadcrumbs to IFileDialog navigation bar.
comdlg32: Add go up button to IFileDialog navigation bar.
comdlg32: Add IFileDialog navigation bar control.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2993
These replace Wine's 14 copies of debugstr_hstring.
--
v2: wintypes: Replace debugstr_hstring with wine_dbgstr_h.
windows.ui: Replace debugstr_hstring with wine_dbgstr_h.
windows.system.profile.systemmanufacturers: Replace debugstr_hstring with wine_dbgstr_h.
windows.perception.stub: Replace debugstr_hstring with wine_dbgstr_h.
windows.networking: Replace debugstr_hstring with wine_dbgstr_h.
windows.media.speech/tests: Replace debugstr_hstring with debugstr_h.
windows.media.devices: Replace debugstr_hstring with wine_dbgstr_h.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3157
Creating a view with an unaligned offset is legal in d3d and apparently works, both on Windows and Linux, but may violate the Vulkan specification:
VUID-VkBufferViewCreateInfo-offset-00926(ERROR / SPEC): msgNum: -833749292 - Validation Error: [ VUID-VkBufferViewCreateInfo-offset-00926 ] Object 0: handle = 0x3c000000003c, type = VK_OBJECT_TYPE_BUFFER; | MessageID = 0xce4dfed4 | vkCreateBufferView(): VkBufferViewCreateInfo offset (36) must be a multiple of VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment (16). The Vulkan spec states: offset must be a multiple of VkPhysicalDeviceLimits::minTexelBufferOffsetAlignment (https://www.khronos.org/registry/vulkan/specs/1.2-khr-extensions/html/vkspe…)
Without any reason to test unaligned buffer views here, just resolve this by changing the test.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3033