瀏覽代碼

Fixed reporting backspace key if there is no text in the edit buffer (thanks @312937!)

This workaround isn't necessary at API 30 and above.

Fixes https://github.com/libsdl-org/SDL/issues/7039

(cherry picked from commit c971795954bc85086cd20cfc71b45a311b7ba0d1)
Sam Lantinga 1 年之前
父節點
當前提交
b6d051e226
共有 1 個文件被更改,包括 12 次插入0 次删除
  1. 12 0
      android-project/app/src/main/java/org/libsdl/app/SDLActivity.java

+ 12 - 0
android-project/app/src/main/java/org/libsdl/app/SDLActivity.java

@@ -2007,6 +2007,18 @@ class SDLInputConnection extends BaseInputConnection {
 
     @Override
     public boolean deleteSurroundingText(int beforeLength, int afterLength) {
+        if (Build.VERSION.SDK_INT <= 29) {
+            // Workaround to capture backspace key. Ref: http://stackoverflow.com/questions>/14560344/android-backspace-in-webview-baseinputconnection
+            // and https://bugzilla.libsdl.org/show_bug.cgi?id=2265
+            if (beforeLength > 0 && afterLength == 0) {
+                // backspace(s)
+                while (beforeLength-- > 0) {
+                    nativeGenerateScancodeForUnichar('\b');
+                }
+                return true;
+           }
+        }
+
         if (!super.deleteSurroundingText(beforeLength, afterLength)) {
             return false;
         }