spiegel-keyman/windows/src/engine/keyman/langswitch
Marc Durdin f6872e7919 fix(windows): OSK toolbar sync
As Keyman now monitors the Windows keyboard list from Control Panel, it
is no longer sufficient to refresh the toolbar only when a Keyman
keyboard is updated, as at that point Windows has not refreshed its own
language list in the registry. Instead, we need to monitor changes to
the relevant registry key and then refresh when those changes are
'complete'.

There is a problem: there does not appear to be a good way to monitor
for changes to Windows language settings. WM_SETTINGCHANGE is sent when
a language is added by the user in Settings, but the actual change
happens asynchronously, and we are not notified when the changes are
complete.

We also do not get notifications when languages are added via APIs.

Given the async nature of the language profile changes, this leads to
race conditions when we try to refresh the OSK toolbar. My preferred
solution currently is to monitor the relevant key in a separate thread,
and wait 1 second post-changes to actually do the refresh.
2020-12-17 13:23:05 +11:00
..
LangSwitchManager.pas fix(windows): OSK toolbar sync 2020-12-17 13:23:05 +11:00
langswitchmanager.rc Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
langswitchmanager.res Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
LoadIndirectStringUnit.pas Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
UfrmLanguageSwitch.dfm Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00
UfrmLanguageSwitch.pas feat(windows): scrollable keyboard menu 2020-09-28 12:17:00 +10:00
winkeyboard.bmp Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121) 2017-07-25 10:53:06 +07:00