* kmcmplib messages need to use a standard pattern for parameters, which
cannot be named. Several of the messages had the wrong pattern
* Tidy up the kmn-compiler-messages module and make it more consistent
to reduce risk of this happening in the future
* Add a unit test to further verify the structure of the module as far
as possible
Fixes: #16492
Test-bot: skip
chore(android): upload webview source map during android and ios build
Previously we uploaded the webview source map during a web build. This can lead to problems because that is not the actual artifact used for Android and iOS.
This change therefore moves uploading the webview source map to Sentry to the android and ios builds.
The underlying issue may be in the node-hide-console-window component.
This fix is adequate in my view, for a low-use code path.
Fixes: #9694
Test-bot: skip
When TIKE deactivates, any undocked tool windows retain their
WS_EX_TOPMOST exstyle, which means they stay on top of other
applications. To be polite, remove the topmost style when Keyman
Developer is deactivated - and set it on again when Keyman Developer is
reactivated, so that the windows continue to behave as expected
otherwise.
Fixes: #10562
Test-bot: skip
Printing has not been supported from Keyman Developer for quite some
time. This does not appear to have been raised as a user issue. Remove
printing support, and cleanup user interface. As a side-effect, this
will fix#11249, as Delphi's printer support will no longer poll for
default printer on start.
Fixes: #11249
Server lacks tests at present. Removing version-data tests as no longer
relevant meant that there were no tests! So, added environment tests
which relate to changes in #16476.
The Character Map scroll will now scroll from current scroll position
when the scroll wheel is used, one row at a time, rather than moving the
currently selected cell. This behavior is more natural and allows mixed
use of the scrollbar and the scrollwheel.
Fixes: #14159
Test-bot: skip
Previously we uploaded the webview source map during a web build. This
can lead to problems because that is not the actual artifact used for
Android and iOS.
This change therefore moves uploading the webview source map to Sentry
to the android and ios builds.
Build-bot: skip build:web,android,ios
Test-bot: skip
A string with leading delimiters passed into `u16tok()` would not skip
those delimiters. This impacted `&targets` store and other locations.
Note that this tightens input parameter checks for delimiters and
context as well.
Fixes: #13721
Test-bot: skip
* Remove references to `koSwitchLanguageForAllApplications` and
`koAutoSwitchOSKPages` options, translated strings for them, and
related `GlobalKeyboardChangeManager` -- no longer required since
Win8.
* Remove Windows Vista-, 7-, and 8-specific code paths - except for the
one user-facing setting for installing keyboards on downlevel
operating systems.
* Remove commented code
Fixes: #16433
Test-bot: skip
Change the manifest trustinfo to asInvoker from requireAdminstrator.
This was causing the preuninstaller to fail as it couldn't elevate.
This also adds the manifest back into the build as it was previously
removed.
fixes: 15187
Cleanup of unused `wm_keyman_control` and `wm_keyman_refresh` values,
and some other unused messages, which were making the implementation
harder to understand.
Relates-to: #15333
Follows: #16435
Clean up the keyboard refresh process. Keyman COM API will post a
`wm_keyman_refresh`, `KR_REQUEST_REFRESH` message when changes have been
made to the list of installed keyboards (or some other keyboard-related
settings change).
Keyman Engine (any arch) will handle this message, in any process, and
post a message to the master controller (keyman.exe, TfrmKeyman7Main),
`wm_keyman_refresh`, `KR_PRE_REFRESH`.
Keyman Engine (keyman32) will handle _this_ message in the master
controller thread context, and increment the global refresh tag. It also
asks the other architecture host process(es) to update their global
refresh counter to the same value (by posting `wm_keyman_refresh`,
`KM_PRE_REFRESH` to those process(es).)
This refresh tag is then compared on-demand in each thread to the
thread's current refresh tag value, when a keyboard activation is
received, on set focus, or on a keystroke, and the keyboard list is
refreshed at that point.
This means that keyboard installation no longer triggers a large amount
of activity reloading all the keyboards on all windowed threads, but
rather they will gradually reload as the user interacts with them. It
also fixes#15333, which related to having threads with only child
windows -- that is, that were parented by top-level windows from other
threads -- which thus never received the global broadcast in the earlier
design. For example, VSCode, Notepad in Win11, Chrome.
Fixes: #15333