Works around #119 on the compiler side. This normalises the touch layout file in the
compile phase, fixing integers which should be strings, etc. This means that
we no longer need to correct the issue in the Engine; a rebuild of affected
keyboards is sufficient (although of course we'll need a version bump in order
for them to be distributed.
Start moving data from forms to models/controllers for
onlineupdate and establish a shared data pattern for
transitional refactoring. Also establish a TLocaleStrings
class which has no global variable dependency.
Serve all Keyman Configuration dialogs over a local http server
instead of over file protocol. This is more secure and allows for
a bunch of things in the future, including simple online integration
and stable reporting.
kmshell had no application.title set and this gave incorrect
results for crash report dialog.
kmbrowserhost was acting as a VCL app but it isn't, and the
sentry integration was pulling in all the VCL dependencies which
was a bad outcome. This removes those and handles crashes as a
non-VCL app.
When Sentry is trying to shutdown an app which has CEF windows active,
the main process can hang waiting for the CEF renderer etc processes to
shutdown. Instead, we now rely on the child (CEF renderer etc) processes
to shutdown when their parent process aborts, with a watchdog thread, and
then abandon everything in the parent process with ExitProcess. This is
more reliable, especially with nastier crashes like memory corruption or
stack corruption.
If a keyboard emits some actions but then requests that the
default keystroke also be emitted, Keyman was failing to
emit the queued actions. Fixes#2759.
Sentry caches the module list so it doesn't need to
rebuild on every event. That's fine for most cases
but when we have an exception we want as much accuracy
as possible, so flush it first