Commit graph

27 commits

Author SHA1 Message Date
Marc Durdin
3dbd11939f
Merge pull request #7650 from keymanapp/fix/core/7649-emit-keystroke-writing-action-to-wrong-queue
fix(core): emit keystroke was writing to wrong queue
2022-11-09 20:24:26 +11:00
Marc Durdin
03ae8582db fix(developer): handle shutdown cleanup more cleanly
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.
2022-11-09 08:18:41 +11:00
Marc Durdin
42a9f2ca72 fix(core): emit keystroke was writing to wrong queue
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.
2022-11-08 16:31:30 +11:00
Marc Durdin
8286e8a85c fix(developer): handle EEncodingError loading text file
Fixes #7634.
2022-11-06 05:43:52 +11:00
Marc Durdin
4be2dcc9e4 fix(developer): avoid reformatting unchanged system stores
Fixes #298.
2022-11-01 16:33:10 +11:00
Marc Durdin
24ba21abab fix(developer): handle LControl being set by Windows when AltGr pressed
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.
2022-10-26 09:37:36 +11:00
Marc Durdin
3c14a8312f
Merge pull request #7431 from keymanapp/fix/developer/7419-handle-invalid-graphics-in-ico-editor
fix(developer): Handle invalid graphics in icon editor
2022-10-21 09:57:01 +11:00
Marc Durdin
08c9cd6239
Merge pull request #7430 from keymanapp/fix/developer/7425-ctrl-key-press-release
fix(developer): Ctrl key to select key was conflicting with shortcuts
2022-10-19 06:19:48 +11:00
Marc Durdin
6b52b439bb fix(developer): address ico validity during assignment 2022-10-14 16:49:17 +11:00
Marc Durdin
f054b06014 chore(developer): minor tweaks for usability
move Clear All button in read-only view
don't show a dialog for invalid graphics
2022-10-11 07:29:46 +11:00
Marc Durdin
bf8f636a14 fix(developer): Handle invalid graphics in icon editor
Fixes #7419.

If the user attempts to add an invalid graphic (e.g. a .png file saved
with a .ico extension), Keyman Developer will no longer crash when
trying to load the file.

Note that while the keyboard will still compile with an invalid graphic,
Keyman for Windows will refuse to install it. I have not tested other
platform handling of such a situation.
2022-10-11 07:18:09 +11:00
Marc Durdin
51a3679a90 fix(developer): Ctrl key to select key was conflicting with shortcuts
Fixes #7425.

In the layout editor, the "Select Key" dialog was being shown sometimes
when using shortcuts such as Ctrl+V. The reason this happened was that
the shortcut handler in Delphi was capturing the keydown of the V key,
so the Ctrl event handler never saw it. Then, if you pressed Ctrl+V, and
released the Ctrl key before releasing the V key (which often happens
when you press a shortcut rapidly), the Ctrl event handler would receive
notification of the Ctrl key release and trigger the "Select Key"
dialog.

This fix shifts the Ctrl key event handler out of the keyboard editor
and into the top-level application events handler -- this is the best
place where we can preview key events before they are passed to the
shortcut handler and controls for processing.

This necessitated adding a general `ControlKeyPressedAndReleased` event
function to the TIKE editor base class. This is currently only used by
`UfrmKeymanWizard` and `UfrmOSKEditor`.

I noted that the OSK editor did not currently support the Ctrl key
event to select a new key. As a part of this fix, I added support for
this, to bring it into line with the Layout Editor and the Touch Layout
Editor.
2022-10-11 06:39:38 +11:00
Marc Durdin
7a819598e7 fix(developer): Handle hints and warnings cleanly
Relates to #4324 (but slightly orthogonal.)

We wanted some message classes to be handled in the lexical model editor
more cleanly, including drill-down to line of error. A few changes
required to make this work well:

1. Parse error messages from kmlmc. This is not perfect but works while
   the two projects are kept in sync, which they always are for Keyman
   Developer. Note that at this stage, .ts warnings are not captured in
   this parser, as they are generated by tsc.
2. Drill-down in Wordlist Editor Frame to find line of error
3. Model editor reports ownership of .tsv files so they can be loaded
4. In case of model editor not open (e.g. building from project view),
   the TSV standalone editor was not displaying the frame, so it never
   actually worked.
5. If the text editor had never loaded, then FindError was effectively
   a no-op; adds code to seek to error line after page load finishes.
6. Ensures that if we attempt to seek an error in a sub-file owned by
   an editor (e.g. .tsv owned by .model.ts, .kvks owned by .kmn), that
   the parent editor will be focused first. Does not verify all paths
   here, just the tsv one.
2022-09-28 20:17:44 +10:00
Marc Durdin
4d80760ad9 feat(developer): add languageUsesCasing to Model Editor
Fixes #7007.
2022-07-28 14:55:10 +10:00
Marc Durdin
5895d26e64
Merge pull request #6884 from keymanapp/feat/developer/touch-layout-editor-flick-and-multitap
feat(developer): Rework Touch Layout Editor to support flick and multitap 🙊
2022-07-26 07:14:02 +10:00
Marc Durdin
0d7e998bb6
Merge pull request #6943 from keymanapp/fix/developer/6897-timeouts-when-server-shutdown
fix(developer): reduce timeouts if server shut down 🎾
2022-07-22 16:42:50 +10:00
Marc Durdin
45f97988cf fix(developer): reduce timeouts if server shut down
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.
2022-07-14 16:28:39 +10:00
Marc Durdin
1659dde17a fix(developer): crash on exit when checking for updates
Fixes #6928.
2022-07-14 16:22:36 +10:00
Marc Durdin
268ba98219 feat(developer): Support new touch layout definitions in Delphi
Also minor tweaks to allow jquery-ui images to load, fixup for broken
file path for node.exe.
2022-07-14 10:55:01 +10:00
Marc Durdin
4f36c3c2df chore(developer): Merge branch 'master' into chore/developer/js-to-lmc 2022-06-25 05:48:57 +10:00
Marc Durdin
393083509a chore(windows): move tike files from global to developer
These files used only by TIKE so moved into that project.

Noticed obsolete refs to UMD5Hash and removed those at the same time.
2022-06-23 09:34:03 +10:00
Marc Durdin
a295cfc8f0 chore(developer): move KMDActions component
Note this also drags TextFileFormat.pas and KMDActionInterfaces.pas into
the package so have moved those into general and components folders
respectively, alongside KMDActions.pas and updated corresponding
project includes.
2022-06-18 14:28:44 +10:00
Marc Durdin
36b70758a9 chore(windows): remove unused OnlineConstants 2022-06-12 14:26:53 +10:00
Marc Durdin
8cf568474d chore(developer): move qrcode component to Developer 2022-06-06 14:07:34 +10:00
Marc Durdin
3edfb314df chore(developer): fixup server paths and build 2022-05-23 12:39:30 +10:00
Marc Durdin
433c655c47 chore(developer): additional moves of developer scripts 2022-05-22 07:59:54 +10:00
Marc Durdin
a160a5c709 chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00