| @@ -1044,7 +1044,7 @@ private: | |||||
| const ScopedValueSetter<bool> setter (reentrant, true, false); | const ScopedValueSetter<bool> setter (reentrant, true, false); | ||||
| const bool isActive = isVisible(); | |||||
| auto isActive = isKeyboardVisible(); | |||||
| if (isActive != shouldBeActive) | if (isActive != shouldBeActive) | ||||
| { | { | ||||
| @@ -1061,6 +1061,14 @@ private: | |||||
| } | } | ||||
| bool isVisible() | bool isVisible() | ||||
| { | |||||
| if (auto hwnd = FindWindowEx (NULL, NULL, L"ApplicationFrameWindow", NULL)) | |||||
| return FindWindowEx (hwnd, NULL, L"Windows.UI.Core.CoreWindow", L"Microsoft Text Input Application") != NULL; | |||||
| return false; | |||||
| } | |||||
| bool isVisibleLegacy() | |||||
| { | { | ||||
| if (auto hwnd = FindWindow (L"IPTip_Main_Window", NULL)) | if (auto hwnd = FindWindow (L"IPTip_Main_Window", NULL)) | ||||
| { | { | ||||
| @@ -1071,6 +1079,15 @@ private: | |||||
| return false; | return false; | ||||
| } | } | ||||
| bool isKeyboardVisible() | |||||
| { | |||||
| if (isVisible()) | |||||
| return true; | |||||
| // isVisible() may fail on Win10 versions < 1709 so try the old method too | |||||
| return isVisibleLegacy(); | |||||
| } | |||||
| bool shouldBeActive = false, reentrant = false; | bool shouldBeActive = false, reentrant = false; | ||||
| ComSmartPtr<ITipInvocation> tipInvocation; | ComSmartPtr<ITipInvocation> tipInvocation; | ||||
| }; | }; | ||||