SDL_IsScreenKeyboardShown() will work with SDL_ANDROID_ToggleScreenKeyboardWithoutTextInput()

This commit is contained in:
Sergii Pylypenko
2015-06-05 23:28:33 +03:00
parent c4ae6ca2f5
commit adc8a27440
3 changed files with 28 additions and 29 deletions

View File

@@ -487,18 +487,31 @@ public class MainActivity extends Activity
if( !keyboardWithoutTextInputShown ) if( !keyboardWithoutTextInputShown )
{ {
keyboardWithoutTextInputShown = true; keyboardWithoutTextInputShown = true;
_inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); runOnUiThread(new Runnable()
_inputManager.showSoftInput(mGLView, InputMethodManager.SHOW_FORCED); {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); public void run()
{
_inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
_inputManager.showSoftInput(mGLView, InputMethodManager.SHOW_FORCED);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
});
} }
else else
{ {
keyboardWithoutTextInputShown = false; keyboardWithoutTextInputShown = false;
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); runOnUiThread(new Runnable()
_inputManager.hideSoftInputFromWindow(mGLView.getWindowToken(), 0); {
DimSystemStatusBar.get().dim(_videoLayout); public void run()
//DimSystemStatusBar.get().dim(mGLView); {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
_inputManager.hideSoftInputFromWindow(mGLView.getWindowToken(), 0);
DimSystemStatusBar.get().dim(_videoLayout);
//DimSystemStatusBar.get().dim(mGLView);
}
});
} }
mGLView.nativeScreenKeyboardShown( keyboardWithoutTextInputShown ? 1 : 0 );
} }
public void showScreenKeyboard(final String oldText) public void showScreenKeyboard(final String oldText)

View File

@@ -759,17 +759,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
public void showScreenKeyboardWithoutTextInputField() // Called from native code public void showScreenKeyboardWithoutTextInputField() // Called from native code
{ {
class Callback implements Runnable context.showScreenKeyboardWithoutTextInputField();
{
public MainActivity parent;
public void run()
{
parent.showScreenKeyboardWithoutTextInputField();
}
}
Callback cb = new Callback();
cb.parent = context;
context.runOnUiThread(cb);
} }
public void showScreenKeyboard(final String oldText, int unused) // Called from native code public void showScreenKeyboard(final String oldText, int unused) // Called from native code
@@ -1067,4 +1057,5 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
public static native void nativeMouseWheel( int scrollX, int scrollY ); public static native void nativeMouseWheel( int scrollX, int scrollY );
public static native void nativeGamepadAnalogJoystickInput( float stick1x, float stick1y, float stick2x, float stick2y, float ltrigger, float rtrigger, int usingHat ); public static native void nativeGamepadAnalogJoystickInput( float stick1x, float stick1y, float stick2x, float stick2y, float ltrigger, float rtrigger, int usingHat );
public static native void nativeScreenVisibleRect( int x, int y, int w, int h ); public static native void nativeScreenVisibleRect( int x, int y, int w, int h );
public static native void nativeScreenKeyboardShown( int shown );
} }

View File

@@ -298,20 +298,15 @@ void SDL_ANDROID_CallJavaHideScreenKeyboard()
int SDL_ANDROID_IsScreenKeyboardShown() int SDL_ANDROID_IsScreenKeyboardShown()
{ {
/*
// Efficient implementation sometimes fails for no real reason, so poll Java from time to time
// Or maybe not, this was when I've added some debug code, not observed anymore
static int safetyCounter = 0;
if( safetyCounter >= 60 ) {
safetyCounter = 0;
SDL_ANDROID_IsScreenKeyboardShownFlag = (*JavaEnv)->CallIntMethod( JavaEnv, JavaRenderer, JavaIsScreenKeyboardShown );
}
safetyCounter ++;
*/
return SDL_ANDROID_IsScreenKeyboardShownFlag; return SDL_ANDROID_IsScreenKeyboardShownFlag;
} }
JNIEXPORT void JNICALL
JAVA_EXPORT_NAME(DemoGLSurfaceView_nativeScreenKeyboardShown) ( JNIEnv* env, jobject thiz, jint shown )
{
SDL_ANDROID_IsScreenKeyboardShownFlag = shown;
}
void SDL_ANDROID_CallJavaSetScreenKeyboardHintMessage(const char *hint) void SDL_ANDROID_CallJavaSetScreenKeyboardHintMessage(const char *hint)
{ {
(*JavaEnv)->PushLocalFrame(JavaEnv, 1); (*JavaEnv)->PushLocalFrame(JavaEnv, 1);