| Index: ui/base/win/osk_display_manager.cc
|
| diff --git a/ui/base/win/osk_display_manager.cc b/ui/base/win/osk_display_manager.cc
|
| index 0373b48bdd39f79b4f04d4ea45d1326c68a7e48f..5d9e7c3ecb42e6319b72017d16d3e2e97dccf2bb 100644
|
| --- a/ui/base/win/osk_display_manager.cc
|
| +++ b/ui/base/win/osk_display_manager.cc
|
| @@ -63,6 +63,9 @@ class OnScreenKeyboardDetector {
|
| void AddObserver(OnScreenKeyboardObserver* observer);
|
| void RemoveObserver(OnScreenKeyboardObserver* observer);
|
|
|
| + // Returns true if the osk is visible. Sets osk bounding rect if non-null
|
| + static bool IsKeyboardVisible(gfx::Rect* osk_bounding_rect);
|
| +
|
| private:
|
| // Executes as a task and detects if the on screen keyboard is displayed.
|
| // Once the keyboard is displayed it schedules the HideIfNecessary() task to
|
| @@ -166,15 +169,21 @@ void OnScreenKeyboardDetector::RemoveObserver(
|
| observers_.RemoveObserver(observer);
|
| }
|
|
|
| -void OnScreenKeyboardDetector::CheckIfKeyboardVisible() {
|
| +// static
|
| +bool OnScreenKeyboardDetector::IsKeyboardVisible(gfx::Rect* osk_bounding_rect) {
|
| HWND osk = ::FindWindow(kOSKClassName, nullptr);
|
| if (!::IsWindow(osk))
|
| - return;
|
| + return false;
|
| + if (osk_bounding_rect) {
|
| + RECT osk_rect = {};
|
| + ::GetWindowRect(osk, &osk_rect);
|
| + *osk_bounding_rect = gfx::Rect(osk_rect);
|
| + }
|
| + return ::IsWindowVisible(osk) && ::IsWindowEnabled(osk);
|
| +}
|
|
|
| - RECT osk_rect = {};
|
| - ::GetWindowRect(osk, &osk_rect);
|
| - osk_rect_pixels_ = gfx::Rect(osk_rect);
|
| - if (::IsWindowVisible(osk) && ::IsWindowEnabled(osk)) {
|
| +void OnScreenKeyboardDetector::CheckIfKeyboardVisible() {
|
| + if (IsKeyboardVisible(&osk_rect_pixels_)) {
|
| if (!osk_visible_notification_received_)
|
| HandleKeyboardVisible();
|
| } else {
|
| @@ -360,4 +369,8 @@ bool OnScreenKeyboardDisplayManager::GetOSKPath(base::string16* osk_path) {
|
| return !osk_path->empty();
|
| }
|
|
|
| +bool OnScreenKeyboardDisplayManager::IsKeyboardVisible() const {
|
| + return OnScreenKeyboardDetector::IsKeyboardVisible(nullptr);
|
| +}
|
| +
|
| } // namespace ui
|
|
|