Manipulating the font size results in the script_cache going stale. From MSDN[1]
`The application should never pass the same handle for different fonts or different sizes.`
This is however exactly what happens when the font size changes as a result of zooming(both in and out). ScriptShape and relative functions will only inspect the hardware device context only if the required data is not cached[2] and hence the data from a previous call to these functions is retrieved even though the font size has changed hence the bug where text both doesn't wrap and doesn't paint as it should.
In patch one, I have tried to keep track of the script_cache objects alongside the relevant font.
Patch two fixes an issue where the cursor doesn't scale after zooming until after one interacts with the editor.
Signed-off-by: David Kahurani <k.kahurani(a)gmail.com>
1. https://docs.microsoft.com/en-us/windows/win32/intl/caching
2. https://docs.microsoft.com/en-us/windows/win32/intl/script-cache
--
v3: riched20: update caret on zooming
riched20: Cache script_cache alongside font cache
https://gitlab.winehq.org/wine/wine/-/merge_requests/626
There are times when it is useful to test changes on the Windows XP and 2003 VMs, but the direct use of functions not on those platforms makes this impossible.
--
v2: kernel32/tests: Call CompareStringEx via function address (locale.c)
kernel32/tests: Call LCIDToLocaleName via function address (locale.c)
kernel32/tests: Call LCMapStringEx via function address (locale.c)
https://gitlab.winehq.org/wine/wine/-/merge_requests/1897
This is in preparation of implementing all logic from the server in kernelbase, which is needed because Nt*Key ignores KEY_WOW64_32KEY. Unfortunately this requires a lot of server calls.
The full branch can be found here
https://gitlab.winehq.org/sbaars/wine/-/tree/shared-classes-new
The old approach that doesn't duplicate code to kernelbase can be found here
https://gitlab.winehq.org/sbaars/wine/-/tree/shared-classes-old
I ran make_requests by the way, not sure if we should still leave that out with the gitlab workflow.
--
v14: kernelbase: Restructure the create_key() loop.
kernelbase: Add a fast path to create_key().
kernelbase: Move create_key() below open_key().
kernelbase: Factor opening a subkey out of open_key().
kernelbase: Always try to open the Wow6432Node in open_key().
kernelbase: Restructure the open_key() loop.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1445
FFXIV depends on this. It calls SetFullscreenState when it receives WM_WINDOWPOSCHANGED. Through luck the recursion aborts after two calls. The user-visible bug is that after leaving fullscreen, the game's window is still TOPMOST because we overwrite the stored pre-fullscreen window flags.
--
v3: dxgi/tests: Test nested SetFullscreenState from the same thread.
dxgi/tests: Test nested fullscreen application from different thread.
dxgi: Catch nested SetFullscreenState invocations.
dxgi: Unlock the wined3d mutex after storing the new target.
dxgi/tests: Run test_swapchain_window_messages on d3d12.
dxgi/tests: Run test_resize_target_wndproc on d3d12 too.
dxgi/tests: Fix UnregisterClass call in test_resize_target_wndproc.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1964
--
v5: dxgi: Reset the back buffer index to zero on ResizeBuffers().
dxgi/tests: Test that ResizeBuffers() resets the back buffer index to zero.
dxgi: Always assume that a D3D12 swapchain always uses user images.
dxgi: Immediately error out when creating a D3D12 swapchain on a non-immediate queue.
d3d12/tests: Test that D3D12 swapchains can only be created on direct command queues.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2296
A couple of tests (ntdll, psapi, dbghelp) were failing when running
on Windows 11 platform.
These tests were creating a new process out of
c:\windows\syswow64\notepad.exe and expecting a wow64 32bit child
process.
Under Windows 11, notepad has been migrated into the UWP framework
and the operation above creates a 64bit process.
This series replace all the cases above with msinfo32.exe which
still have the properties we expected for such an application.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2252
The idea I have is to use this module to declare class stubs until there is a good reason to split them to dedicated modules. WinRT modules aren't usually loaded directly, and instead the registry is queried to figure which module to load for which class.
This would help avoiding unnecessary proliferation of stub WinRT modules, while at the same time allowing to factor WinRT foundation code (such as vector / async, etc...) between the modules that seem to deserve to be implemented separately.
The relevant classes could then be split out to dedicated modules on a as-needed basis, when they get fleshed out.
--
v2: winewinrt: Move Vector<HSTRING> from windows.media.speech.
windows.media.speech: Use Vector<IInspectable> from winewinrt.
winewinrt: Rename Vector<IInspectable> structs and methods.
winewinrt: Move Vector<IInspectable> from windows.gaming.input.
winewinrt: Introduce new WinRT common module.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2298
--
v5: winegstreamer: Implement ProcessInput and ProcessOutput for WMV decoder DMO.
winegstreamer: Create wg_transform for WMV decoder.
winegstreamer: Better handle framerate.
winegstreamer: Add format field to wmv wg_format.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2258
Needed by the VR games Forewarned and Überlaüfer.
I had to put the parameters of the header functions on newlines because they're too long. Did the same for the other headers for consistency. windows.security.cryptography.idl uses a similar style.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2292