Font scaling on individual keys would ignore the vertical axis if the
horizontal axis reached the key width threshold, rather than calculating
the minimum of the two axes. This lead to weird effects, such as adding
characters to a key could make the font larger rather than smaller!
Reported by @jmdurdin.
This is a rudimentary start to having unit tests for keyman32.
At present, it will build only in win32/debug and requires you
to manually run make -DDEBUG beforehand. The tests currently
run in Visual Studio and are not integrated.
kmconvert built-in help was missing `-targets`, misspelled
`-full-copyright`, and the parameter checking was skipping the last
parameter (which only mattered if the last parameter was `-nologo`, but
still...).
Fixes#5245.
Interfaces should remain stable between versions of Keyman, so that an
upgraded kmcomapi.dll or keyman32.dll will not crash older clients, even
if they may not behave entirely as expected.
Fixes#5216.
A `<text>` element in the regression text xml which contained only
whitespace would cause the import to crash as this would be ignored by
the XML parser, leading to a `Null` `nodeValue` for that element. To
solve this, we need to:
1. Use `xml:space="preserve"` attribute on `<text>` elements
2. Update the DTD to allow `xml:space` on `<text>` elements
3. While we are at it, move the DTD from `www.tavultesoft.com` to
`api.keyman.com`.
See also:
* keymanapp/tavultesoft.com#4
* keymanapp/api.keyman.com#155
Fixes#5195.
Fixes KEYMAN-WINDOWS-M0.
The splash screen for Keyman would crash on start with the latest
Chromium update. This fix resolves the issue, which related to the
resize-to-content code, by removing the resize-to-content code and
instead hardcoding the window size in the .dfm.
This is a significant simplification of the browser host and I think it
is worthwhile. The only place the resizing code was still used was in
the splash screen.
Fixes#5196.
It is complicated to start a `UIAccess=true` process with
`CreateProcess`, so instead we'll use `ShellExecute`. This means passing
a PID instead of a process handle to keymanx64.
I took the opportunity to refactor slightly the main function in
keymanx64, as the failure modes were pretty WET.
Matches work completed in #5169 for Keyman Core, kmx_file.cpp.
While this code will hopefully disappear in 15.0, it's good to make sure
we aren't diverging beforehand.
Also tidies up a couple of other cases in `CopyKeyboard` in Keyman Core.