Commit graph

79 commits

Author SHA1 Message Date
Marc Durdin
facf94df26 chore: address review comments 2020-10-08 13:59:16 +11:00
Marc Durdin
c655c4eaf5 fix(windows): improve version numbers
Release build executables should have 3 component version numbers with
the version tag appended, e.g. keymandesktop-14.0.155-alpha-local.exe.

Coming later, rename keymandesktop-version.exe to keyman-version.exe.
2020-10-08 09:13:48 +11:00
Marc Durdin
258e4b4eff fix(windows): Some registry keys could have incorrect permissions
Fixes #3665.

On some systems, subkeys of HKCU\Software\Keyman could have incorrect
permissions and these would not be corrected with earlier fixes such as
in #2316. This fix resolves the problem by recursively correcting
permissions on all subkeys, rather than just the top two levels.

This issue caused Metro-style applications (Windows Store apps) to fail
to accept Keyman keyboard input.
2020-10-07 11:50:37 +11:00
Marc Durdin
5f59ee08ec chore(windows): make disabled arrows lighter 2020-09-28 15:05:58 +10:00
Marc Durdin
e34478c173 feat(windows): scrollable keyboard menu
Fixes #1843.

If there are so many keyboards installed that the menu would grow larger
than 3/4 of the screen height, then the menu will become scrollable.
2020-09-28 12:17:00 +10:00
Marc Durdin
d56567735e feat(windows): overflow menu for osk toolbar
Fixes #1659.

If there are too many keyboards to fit in the OSK toolbar, the toolbar
will now show a dropdown menu button and excess keyboards will be
visible there.
2020-09-27 13:07:45 +10:00
Marc Durdin
f08fd6090d fix(windows): hint dialog was blank when elevated
Fixes #3110. The hint dialog must be launched unelevated. Refactors
the UCreateProcessAsShellUser unit into the TUtilExecute class.
2020-09-22 20:04:44 +10:00
Marc Durdin
84f0219541 fix(windows): canonicalization
Reworks the BCP 47 tag canonicalization algorithm.
2020-09-01 08:42:56 +10:00
Marc Durdin
2563624810 fix(windows): more i18n cleanup:
* Remove localedef.dtd file and infrastructure
* Remove ftMessages enum value
2020-07-29 08:03:30 +10:00
Marc Durdin
47254cbd0a fix(windows): i18n of strings in Font Helper 2020-07-29 08:02:48 +10:00
Marc Durdin
39edce5986 feat(windows): generate message consts at build time 2020-07-28 13:05:12 +10:00
Marc Durdin
6b748239ed chore(windows): cleanup of i18n
- remove expandidentifiers
- remove messages.txt
- remove desktop.pot
- remove stock message ditor
- stop using captions altogether for translation
2020-07-27 16:54:23 +10:00
Marc Durdin
6eb516f9d9 chore(windows): more cleanup 2020-05-15 12:46:54 +10:00
Marc Durdin
8ee92d1927 fix(windows): add dependency for keyman.dpr 2020-05-15 08:30:58 +10:00
Marc Durdin
5e7df2e051 fix(windows): sentry cef shutdown interactions
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.
2020-05-08 14:42:39 +10:00
Marc Durdin
fed63d4690 feat(windows): sentry integration test points 2020-03-31 16:16:56 +11:00
Marc Durdin
90f4a5109f feat(windows): report process start to sentry
Also handles -sentry-client-test-exception command line parameter
for console apps and tidies up Sentry instantiation.
2020-03-30 12:21:47 +11:00
Marc Durdin
c33199f6db chore(windows): dprojs 2020-03-30 12:07:41 +11:00
Marc Durdin
9779792059 fix(windows): remove errlogpath and cleanup 2020-03-27 11:23:51 +11:00
Marc Durdin
2121f5ea94 feat(windows): consume new sentry api in delphi projects
Updates Delphi projects to use Sentry API instead of legacy
reporting mechanisms, and strips out existing text-based
reports. Not yet complete: reporting from kmcomapi and
hosted web controls, release number. These are flagged
as build hints.
2020-03-18 17:25:38 +11:00
Marc Durdin
c75aab5886 feat(windows): add paths to syms 2020-03-13 12:38:23 +11:00
Marc Durdin
edfbb4c339 feat(windows): add sentry file prep to build 2020-03-10 21:37:30 +11:00
Marc Durdin
7638b32bc8 feat(windows): asynchronous hint window 2020-02-29 20:08:51 +07:00
Marc Durdin
b71858520a feat(windows): reimplement font helper
Reimplements the font helper in pure Delphi controls.
This avoids the issue we had in the past with embedding
a web browser into the OSK component. As a bonus, the
OSK now opens *substantially* faster, making Keyman feel
a whole lot nicer.
2020-02-24 11:39:20 +07:00
Marc Durdin
7c9b154119 feat(windows): remove all web from keyman
We no longer have any web components in keyman.exe.
Note that font helper is incomplete at this point.
2020-02-23 18:57:00 +07:00
Marc Durdin
55daa5b422 refactor(windows): start move of help and hint
Moves help window and hint window out of keyman
and into kmshell, part 1 of making sure we have
no chromium dependencies in keyman.
2020-02-23 17:49:33 +07:00
Marc Durdin
f15634a9ed chore: Merge branch 'master' into windows-use-chromium 2020-02-22 11:52:23 +11:00
Marc Durdin
666fbc9072 fix(developer): touch layout editor character map integration
Fixes #2577.

The touch layout editor was not accepting characters inserted from
character map by double-clicking or using the menu, only by drag+drop.
2020-02-11 09:04:22 +11:00
Marc Durdin
1ebe2f5fa1 fix(windows): Windows touch keyboard would cancel on each keystroke
Fixes #2450. When Keyman serialized input, it would cause the touch keyboard to cancel
because the touch keyboard thought the received event meant the user was touching the
physical keyboard. This resolves that problem, using a watch timer to check the visibility
of the touch input panel.
2020-02-04 16:18:18 +11:00
Marc Durdin
9209adb45d refactor(windows): cleaned up hotkey change code
Just refactoring minor bits and pieces on this PR. Esp: removed the
unnecessary interrogation of TSF (yay!) and cached the debug flag so it
isn't checked on every single keystroke.
2019-11-20 06:47:44 +11:00
Marc Durdin
7321bc4300 chore: restore keyman.dproj; changes not required 2019-11-19 19:51:43 +11:00
Marc Durdin
89e54f5cb4 refactor(windows): Keyman::ProcessHotkeyChange
Remove duplicated code in ProcessProfileChange
2019-11-19 19:47:49 +11:00
Marc Durdin
ecd44063e7 feat(windows): left-only hotkeys
Fixes #364.

Hotkeys in Windows are currently implemented using RegisterHotkey.
However RegisterHotkey does not distinguish between left and right
modifier keys, which means that they override some keyboards' RAlt
combinations.

This feature reimplements hotkey support in the low level keyboard hook,
and adds a feature flag / debug flag Flag_UseRegisterHotkey to return
to the RegisterHotkey model if that is so needed.

I have made minimal refactoring changes to this code, although there
are certainly functions here which could be improved.

I have flagged a couple of potential improvements with TODO.
2019-11-19 17:30:28 +11:00
Marc Durdin
3ebddd9f25 fix(windows): OSK restores to wrong monitor
If the On Screen Keyboard was closed when on a monitor other than the
primary monitor, it would restore to the primary monitor in the top-
left corner instead of the previous location.

This fix allows the OSK to be restored to another monitor, but still
avoids positioning the window off screen if the monitor has been
disconnected.

Fixes #2270.
2019-11-13 08:28:14 +11:00
Marc Durdin
41e87e227f
Merge pull request #2297 from keymanapp/fix/windows/2147-exception-closing-keyman
fix(windows): Keyman was crashing sporadically
2019-11-12 16:38:32 +11:00
Marc Durdin
9073fcdecd fix(windows): Keyman was not working with Skype
Fixes #1680. This issue arose only on some systems where
permissions for Keyman registry keys were not being
set correctly.
2019-11-11 15:27:03 +11:00
Marc Durdin
ccc6498739 fix(windows): Keyman was crashing sporadically
Fixes #2147.

This potentially addresses the issues reported in #2147 where Keyman
would crash due to a race condition as a critical section was not
deleted before attempting to recreate it.

Some logging has been added for debugging these issues.

Also fixes memory leaks and another race on startup relating to loading
the taskbar icon.

There are still some known memory leaks because DLL_THREAD_DETACH is
not called for all threads before keyman32.dll is unloaded, so those
threads don't get the opportunity to clean themsselves up. However, the
key danger with the csGlobals critical section has been addressed.
2019-11-06 17:44:32 +11:00
Marc Durdin
6ddad89f33 [Windows] Fixup manifest.xml validity checks 2019-10-21 07:29:23 +07:00
Marc Durdin
d158648f1d [Windows] Remove further hardcoded version numbers 2019-10-21 07:01:11 +07:00
Marc Durdin
3a90f258da [Windows] Fix version.in file encoding back to Windows-1252 2019-10-21 06:43:13 +07:00
Marc Durdin
0455a945db Merge master 2019-10-04 16:54:09 +10:00
Marc Durdin
16d8970feb [Windows] Change destruction order for Keyman to avoid error reloading. Fixes #6060 2019-10-02 06:44:09 +10:00
Marc Durdin
31df712707 [Windows] If Keyman Desktop 11 and Keyman Developer 12 are installed together, Keyman Desktop will crash on startup. Fixes #2146. 2019-09-30 21:08:44 +10:00
Marc Durdin
692c64f659 Unnecessary file changes (version numbers) 2019-08-12 16:48:08 +10:00
Marc Durdin
b6704eeff5 [Windows] Reorganise UI for Keyman Desktop for FirstVoices; add kmcomapi-win64-host; support custom images etc for oem products 2019-05-13 08:01:11 +10:00
Marc Durdin
836f8805d2 [Windows] 12.0 version files 2019-05-10 10:19:29 +10:00
Marc Durdin
95252c696d [Windows] Report script errors for Chromium; further tidyup 2019-04-13 18:17:21 +07:00
Marc Durdin
0c12305189 [Windows] CEF installation and resizing of window from document 2019-04-11 14:01:14 +07:00
Marc Durdin
f4793297b6 [Windows] Refactor usage of cefBeforeBrowse and 'keyman:' urls 2019-04-09 21:19:55 +07:00
Marc Durdin
9ab9b05548 [Windows] Further tidyup on TChromium integration 2019-04-09 11:36:17 +07:00