PR #7449 added modifier event to make ensure modifer events
where sent to the serializer even if the key stroke was determined
the key stroke did not need seralizing. However, a logic error was made
trying to use the exiting 'Flag' however this was not set in the
!UseCachedHotkeyModifierState case. This change adds helper function
to simply check if the key is a modifier key and send it to the
event seralizer in that case. Separating from the other logic which
is more concerned with handling hotkeys.
Regression introduced in #7661 (17.0 alpha), #7825 (16.0 beta).
When shutting down CEF cleanly, we needed to pause the form destruction
sequence in order for CEF to complete its shutdown tasks. However, for
a dialog form, it will commonly be closed by setting `ModalResult` to a
non-zero value. In our fix, we inadvertently lost any `ModalResult`
value by calling `Close` after CEF was finished, which sets
`ModalResult` to `mrCancel` (value of 2).
This fix caches the `ModalResult` value, and if non-zero, uses it
instead after CEF shuts down, to achieve the same result.
The red colouring of the "Languages:" label was driven by a xml
element which was taken from a registry value whose cache is not
refreshed without restarting the app. The new xml element is
driven by registery languages value that is refreshed straight
away.
The Keyboard layouts tab: When a keyboard is disabled
Just the details text on the right is 'greyed' out. The buttons
on the left our no longer greyed out except for 'Add/remove'
which is now disabled.
Hopefully fixes KEYMAN-WINDOWS-1MR, and probably many related crash
reports. Will monitor on alpha before porting to stable/beta.
This changes the form destruction sequence to make sure that it
doesn't close the form until CEF has been shutdown correctly.
Removes koRunElevatedInVista, koSwitchLanguageForAllApplications,
koSwitchLanguageWithKeyboard, koUnknownLanguage, koTurnOnSurrogates
from localizations and from UI.
These options are no longer relevant, mostly due to improved operating
system support.
Only one option was still visible, koSwitchLanguageForAllApplications,
so this has been hidden in keyman_options.xsl, for future full removal.
This makes it easier to track what is happening for errors where
otherwise we found that exception messages were being cropped; for
example, see KEYMAN-WINDOWS-X.
The error messages were being cropped because the exception handler was
in the exe module, but the exception was being raised in kmcomapi
module. When the exception was handled, the handler tested to see if
the exception object inherited from exemodule.Exception, but it was
inheriting from kmcomapi.Exception instead, and so it did not attempt
to load the message detail.
By adding `safecall` calling convention to `KeymanCustomisation`, we
move responsibility for handling the exception to the
`TKeymanAutoObject.SafeCallException` function, and we get full detail
for the exception.
Adds Sentry breadcrumbs for the following crash reports:
* KEYMAN-WINDOWS-62
* KEYMAN-WINDOWS-6H (? no reports in recent releases, so may be
resolved)
* KEYMAN-WINDOWS-7J
* KEYMAN-WINDOWS-4R
The source of these crashes is hard to pinpoint, so hoping that this
additional data sheds some light.
Fixes#7698.
Due to a `>` instead of a `>=` check, there was a one pixel high box at
the bottom of each list of input methods for each language which would
reuslt in an invalid value for `FNewHoverKeyboard`
(`lang.KeyboardCount`).
As well as fixing this, I changed the result for clicking below the
input method list to the more logical last item in the list rather than
the first.