winemac.drv: Exclude dictation when looking for input methods.

After a recent OS update, the dictation input source remains
"selected" in *all* apps for about 10 minutes after it is activated,
even when it is not in use. There doesn't seem to be any way to
determine whether it's actually active or just lingering, and sending
input to it regardless means that we falsely process input as if it
was going to an IME.
This commit is contained in:
Tim Clem 2024-05-15 13:09:51 -07:00 committed by Alexandre Julliard
parent d6c41f95c0
commit d77006fd5a

View file

@ -2065,9 +2065,7 @@ - (void) tryToActivateIgnoringOtherApps:(BOOL)ignore
static BOOL InputSourceShouldBeIgnored(TISInputSourceRef inputSource)
{
/* Certain system utilities are technically input sources, but we
shouldn't consider them as such for our purposes.
Dictation is its own source too (com.apple.inputmethod.ironwood), but
it should receive keypresses; it cancels input on escape. */
shouldn't consider them as such for our purposes. */
static CFStringRef ignoredIDs[] = {
/* The "Emoji & Symbols" palette. */
CFSTR("com.apple.CharacterPaletteIM"),
@ -2077,6 +2075,11 @@ Dictation is its own source too (com.apple.inputmethod.ironwood), but
CFSTR("com.apple.PressAndHold"),
/* Emoji list on MacBooks with the Touch Bar. */
CFSTR("com.apple.inputmethod.EmojiFunctionRowItem"),
/* Dictation. Ideally this would actually receive key events, since
escape cancels it, but it remains a "selected" input source even
when not active, so we need to ignore it to avoid incorrectly
sending input to it. */
CFSTR("com.apple.inputmethod.ironwood"),
};
CFStringRef sourceID = TISGetInputSourceProperty(inputSource, kTISPropertyInputSourceID);