Просмотр исходного кода

Send SDL_EVENT_SCREEN_KEYBOARD_HIDDEN when the keyboard is hidden on Android

(cherry picked from commit fc2f4fcc225d0c61eb8155245b05fe8c0a01454b)
Sam Lantinga 1 день назад
Родитель
Сommit
ce3cc80aca

+ 6 - 0
android-project/app/src/main/java/org/libsdl/app/SDLSurface.java

@@ -208,6 +208,12 @@ public class SDLSurface extends SurfaceView implements SurfaceHolder.Callback,
                                                WindowInsets.Type.displayCutout());
 
             SDLActivity.onNativeInsetsChanged(combined.left, combined.right, combined.top, combined.bottom);
+
+            if (insets.isVisible(WindowInsets.Type.ime())) {
+                SDLActivity.onNativeScreenKeyboardShown();
+            } else {
+                SDLActivity.onNativeScreenKeyboardHidden();
+            }
         }
 
         // Pass these to any child views in case they need them

+ 2 - 2
src/video/SDL_video.c

@@ -5913,7 +5913,7 @@ bool SDL_ScreenKeyboardShown(SDL_Window *window)
 
 void SDL_SendScreenKeyboardShown(void)
 {
-    if (_this->screen_keyboard_shown) {
+    if (!_this || _this->screen_keyboard_shown) {
         return;
     }
 
@@ -5929,7 +5929,7 @@ void SDL_SendScreenKeyboardShown(void)
 
 void SDL_SendScreenKeyboardHidden(void)
 {
-    if (!_this->screen_keyboard_shown) {
+    if (!_this || !_this->screen_keyboard_shown) {
         return;
     }