Rename ProcessActionsTestParse to NonUpdatable parse. It does
more then just test. Add handling for the invalidate context action
to this parse, so that if we emit a keystroke we invalidate the context
Remove the saving of context and keyboard options
on the non updateable call to process hook.
The windows Text Input Processor calls twice one call
is not updateable. With the core integeration we run
the processor only once, preserving the actions and
context to be applied on the updatable call.
Fixes#7030.
Prevents a stack overflow / loop when the web target is removed from a
keyboard and it has already been tested on web, and the user presses the
Compile button.
Picked up while reviewing code for conversion to C++. The compiler
could, in some circumstances emit garbage code for readonly groups
because we weren't testing all scenarios correctly. In practice, this
would have been rare as readonly groups don't emit characters, but it
should be fixed!
If Server is shut down, Keyman Developer now handles this better
and offers to restart it in UI interactions, and backs out quietly
in non-UI processes.
Fixes#6799.
For KeymanWeb compiled keyboards, readonly groups should never emit any
output. Rules in these groups permitted only to:
* `use` other readonly groups
* `call` external functions (which MUST NOT emit output)
* `set`, `reset` or `save` store values
The base kmx compiler does emit output for rules in readonly groups.
Thus, the KeymanWeb compiler, when it transpiles from the generated
.kmx, needs to omit output for any readonly group, while avoiding any
other potential change in behaviour.
The BCP47tag is canonicalized in GetUserDefaultLanguage.
Comments updated for the function to make developer aware.
Comments added to GetKeyboardLanguage to make clear that it
can actuall Add/Set a langague in the com object.
Fixes a race condition when compiling multiple packages, where the
temp path may be re-used before the compiler has finished with it.
To take advantage of this fix, I wanted to make sure I was using the
right kmcomp.exe when building unit tests for Keyman Core. This
uncovered a couple of other things:
* Updates Keyman Core build infrastructure to use the current kmcomp.exe
rather than a system-installed one.
* Corrects a bug that was identified by the 15.0 version of kmcomp in
one unit test (duplicate `&NAME` stores -- the meson test script
prepends a `&NAME` store to each source file during build).
@keymanapp-test-bot skip
We can not set the InstallDefalults flag entirely in the
bootstrapmain.pas. Because we do not yet have the Msi Version info.
So we need to do that in RunTools.pas. However, we need to know
if this is continuing set up after a reboot, as we don't look at
previous version info if it is, as it would have been removed.
This is why the ContinueSetup flag has been made available to Runtools
The install defaults flag will set the registry values
to their default values.
This flag can also be used by the installer itself when it needs to
do a restart to continue installing. It can check to see if this is
a fresh install or an upgrade and set the flag accordingly.