diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl index 58a6a5e788031..2b73c14540d50 100644 --- a/core/java/android/view/IWindowManager.aidl +++ b/core/java/android/view/IWindowManager.aidl @@ -29,6 +29,7 @@ import android.graphics.Bitmap; import android.graphics.GraphicBuffer; import android.graphics.Point; import android.graphics.Rect; +import android.graphics.Region; import android.os.Bundle; import android.os.IRemoteCallback; import android.os.ParcelFileDescriptor; @@ -377,4 +378,9 @@ interface IWindowManager * associated with that InputConsumer. */ boolean destroyInputConsumer(String name); + + /** + * Return the touch region for the current IME window, or an empty region if there is none. + */ + Region getCurrentImeTouchRegion(); } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 9d1b3d9ed81aa..f19994b872f28 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -6168,6 +6168,17 @@ public class WindowManagerService extends IWindowManager.Stub } } + @Override + public Region getCurrentImeTouchRegion() { + synchronized (mWindowMap) { + final Region r = new Region(); + if (mInputMethodWindow != null) { + mInputMethodWindow.getTouchableRegion(r); + } + return r; + } + } + @Override public boolean hasNavigationBar() { return mPolicy.hasNavigationBar();