Certain characters are considered by GetTextExtentExPointA/W to have no width, even if they have a non-zero width and a shape in the font. This MR attempts to bring Wine's implementation of these functions closer to native behavior, though I was not able to get it anywhere near perfect.
--
v4: win32u: Handle glyphs that are marked by the font as zero-width in GetTextExtentExPoint.
win32u: Handle characters that are hard-coded to have no width in GetTextExtentExPoint.
gdi32/tests: Add test for width of carriage return and line feed.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3876
* Add tests for `FILE_RENAME_IGNORE_READONLY_ATTRIBUTE` and `FILE_LINK_IGNORE_READONLY_ATTRIBUTE`.
* Disallow deletion of read-only files in `File{Rename,Link}Information{,Ex}`.
* Added exception when `FILE_{RENAME,LINK}_IGNORE_READONLY_ATTRIBUTE` is specified.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4020
On Thu Oct 5 09:29:00 2023 +0000, Zebediah Figura wrote:
> I don't think we want this kind of hack in Wine.
> > Allowing for manual configuration outside of wine.
> What does this mean?
Well, as it stands now, if we have an application that relies on wnet API to connect/disconnect remote disks, the application will fail no matter what, as WNetAddConnection() and WNetCancelConnection*() will error out.
(#) If we then go to ~/.wine/dosdevices and setup a new drive sym-linked to some remote FS mounted in ~/.wine/dosdevices/unc/*, we still cannot get around the failures in WNet* api.
While, this sort of work-around is not perfect, in a way it is a success-stub rather than a fail-stub, and at least it allows the application to proceed onto the access phase (read/write/...), and either work (if manual step (#) was completed), or fail unable to do i/o.
It's understood that, the proper way would be to utilize the WNet provider tables and to actually implement a provider that will always succeed on connecting/disconnecting a network drive.
But the latter is a much bigger change, which may be worth it, had there been a need for something more than just a SUCCESS-STUB.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3966#note_47668
A TLS index is allocated for each device object. We could use a global TLS, but that would share caches for all devices. I'm not sure if that's a problem. One index per device means freed indices must be recycled, which requires a global mutex, but a global TLS index would also need a global mutex.
This currently leaks cache memory when a device is freed. To fix this, allocations must be tracked. A global cache is more difficult to free, which is not normally an issue, but it is when using valgrind.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/384
Called by Roon.
I have more patches for this, but I split them up for easier review.
--
v3: windows.media.mediacontrol: Implement some ISystemMediaTransportControls properties.
windows.media.mediacontrol/tests: Add some ISystemMediaTransportControls properties tests.
windows.media.mediacontrol: Implement ISystemMediaTransportControlsInterop::GetForWindow().
windows.media.mediacontrol/tests: Add ISystemMediaTransportControlsInterop::GetForWindow() tests.
windows.media.mediacontrol: Add ISystemMediaTransportControlsInterop stub interface.
include: Add systemmediatransportcontrolsinterop.idl file.
windows.media.mediacontrol: Add stub DLL.
include: Add ISystemMediaTransportControls interface definition.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3993