Fixes#7658.
When manipulating text that contains an unpaired surrogate, the text
editor could throw an exception trying to encode the text to send
through to the token command. This simply masks that error.
Fixes#4757.
Fixes#6928.
Three separate ways shutdown is more robust:
1. Destroy main form before web server -- this ensures that all main
form routines have deregistered app sources from web server.
2. In some situations, `FormClose` can be skipped by shutdown routines,
for example, if you call `Application.Terminate`. This change ensures
that we get a second chance to cleanup in the form destructor with
`DoCloseCleanup`.
3. In the Online Update Check, instead of `Application.Terminate`, we
now use `Application.MainForm.Close`, which is much more polite, as
it ensures that changed files are saved, etc, and does proper
cleanup. This particular change may make the other two somewhat
irrelevant but they are still sensible as they will cover us for
other potential form destruction sequences.
Relates to #6928 and KEYMAN-DEVELOPER-74.
Fixes one more potential pathway for assertions being raised, and adds
some extra debugging in case there are additional pathways we are not
capturing.
Fixes#7649.
emit_keystroke code path in kmx processor was writing directly to the
core queue instead of to the internal kmx processor queue. This caused
it to be out-of-order in the actions sent to the engine/debugger.
Engines didn't really care but it broke the debugger, for example if
only a deadkey was in the buffer and backspace was pressed, Developer
would assert as it would get unexpected context for the deletions.
Fixes#7641.
If you close the active project and have the Welcome window visible, it
was possible for the Compile action to still be enabled, even though
there was nothing to compile.
Fixes#7628.
Indy components do not treat URLs as UTF-8. Our legacy EncodeURL
function (sourced from Indy components) was the same. Discovered we
needed to fixup the parsing of URLs as well as the construction of them;
there may be other places we need to fix, although I did do a search for
the relevant types in TIKE source.
Updates Monaco editor from 0.14.3 to 0.15.6, incorporating
microsoft/vscode#57617 to fix#7625.
The changes to editor.js are required because `editor.model` was not a
public property and we should have been using `editor.getModel()` all
along.
I have not updated to the latest version of monaco (0.35.1 at time of
writing this), as I wish to minimize the changeset during beta.
While I prefer not to update dependencies in beta, this seems to be a
fairly clean update. Will monitor and can roll back if it leads to
instability.
Fixes#7616.
Fixes a crash when attempting to infer key cap text from key id, and
cleans up the support for inferred key text so that it works correctly
in the designer.
Also adds a safeguard to KMW to stop invalid key ids causing a crash.
Fixes#7582.
Because of https://github.com/npm/cli/issues/3466, we must publish our
internal dependency @keymanapp/keyman-version. This change adds a common
builder function builder_publish_to_npm in build-utils-ci.inc.sh to help
with that task, which should be adopted by other scripts that need to
publish to npm, in the future.
For now, responsibility for publishing keyman-version is delegated to
kmlmc. In the future, we will move this to a single top-level build
action that publishes all npm modules across the entire repo for the
given version.
Fixes#6974.
GIF images were not supported in the Details tab, Image file, because we
didn't link in GIF file support. After linking it in, we also needed to
change over the picture rendering to have an intermediate render step,
as the existing model only worked with .bmp images.
At the same time, added warnings for wrongly-sized images to the image
size information.
Fixes#5238.
The Details and Build tabs have fixed positional content in the Keyboard
Editor, Model Editor, and Package Editor. Sizing the window too small
can cause content to be outside the bounds of the tab. This patch moves
these tabs into scrollboxes (except for Details tabs on Keyboard and
Model editors, which were already in scrollboxes). The remaining tabs
have resizable content. The tabs will still become fairly unusable if
they become too small, but this should be less of a problem than before.
The sample keyboards included with Keyman Developer were decidedly
unhelpful. Removing them and instead we should point users to the
Keyboards repo in the future.
Fixes#6363.
Fixes#2803.
The new basic project template will now include a default icon,
generated either from the first BCP 47 tag, or else from the first 3
letters of the filename of the keyboard.
The icon will not be included if the keyboard does not target desktop
platforms, as web/touch do not currently support the icon.
Fixes#4719.
kmlmp no longer assumes '../source/' for paths. It works with paths
relative to the source file. This makes it more compatible with any
valid source .kps file, as well as making current working directory
irrelevant.
Also adds corresponding tests for building .kmp and verifying file
layout.
Fixes#7529.
We must always use the US base layout for the debugger, as positional
keyboards are not affected by the active Windows system keyboard. This
fix ensures that the behaviour in the debugger matches what the user
experiences in Keyman for Windows.
Note that this does not address support for mnemonic layouts, tracked in
issue #1074.
Fixes#7506.
In the keyboard debugger, we need to mask out LControl when AltGr is
pressed by the user, because Windows will generate LControl + AltGr for
European layouts.
Note: have also hidden the System Keyboard debug setting in this commit,
given it is not currently implemented; see #1225.
A follow-up issue is #7529.