The keyboard editor has a complex edit state machine, which has
grown a lot over time. This is a minimal patch to address one specific
edge case scenario on that state machine, without any attempt to improve
the state machine overall. The biggest change here is bubbling failure
up to the main form so that it can destroy (aka Release, which is an
asynchronous destroy) the editor window if it fails to load completely.
Fixes: #11715
Fixes: KEYMAN-DEVELOPER-1JC
I have not been able to reproduce this problem, so adding some extra
debug logs in an attempt to determine what is causing the assertion
failure.
Relates to: #11706
There were two problems here:
* An undeclared variable `source`
* The `flick` parameter is an array, not an object, so indexing by
direction is invalid
Fixes: #11581
Fixes: KEYMAN-DEVELOPER-1YW
Key selection was left in a corrupted state in `builder.loadState()`, on
first load of the touch layout editor, because the selection was not
restored after calling `prepareLayer()`.
This only happens on first load because after first load, the selection
will have been saved to the state (which is kept in the backend,
associated with the instance of the editor), so pressing F5 to reload
the page will not reproduce the issue.
Fixes: #11573
Fixes: KEYMAN-DEVELOPER-1Z8
Also updates the only other place where a project file is loaded like
this, in the project renderer, and handles it too (this scenario is
less likely to happen because the project file must already have been
loaded in order to be presented in the UI).
Fixes: #11557
Fixes: KEYMAN-DEVELOPER-1Z2
If a relative or otherwise invalid path is given for `default project
path` in .keymandeveloper/options.json, then this will reset the path
to the default of `%Documents%/Keyman Developer/Projects`.
Fixes: #11554
Fixes: KEYMAN-DEVELOPER-1ZB
This arises if `%AppData%/Keyman/Keyman Developer` folder is missing.
It is sporadic because most times, Keyman Developer Server wins a
startup race and creates the folder before this code is ever reached.
Fixes: #11551
Fixes: KEYMAN-DEVELOPER-1MY
The output from Keyman Core changed in #11172 to emit a
`KM_CORE_IT_INVALIDATE_CONTEXT` action when a frame key is pressed, but
the debugger was not catering for this scenario, causing an assertion
failure.
Fixes: #11486
Fixes: KEYMAN-DEVELOPER-1Y4
Now builds from a clean repo:
developer/src/build.sh configure build test publish
* Splits kmbrowserhost into kmdbrowserhost for Developer; this means
that Developer Browser Host now inherits the Developer settings rather
than the Keyman for Windows settings, and simplifies distribution and
management. The only difference between the two is in the startup code
so this seems like a good split.
* Cleanup of various build scripts and dependencies.