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 )
{
keyboardWithoutTextInputShown = true;
_inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
_inputManager.showSoftInput(mGLView, InputMethodManager.SHOW_FORCED);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
runOnUiThread(new Runnable()
{
public void run()
{
_inputManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
_inputManager.showSoftInput(mGLView, InputMethodManager.SHOW_FORCED);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
}
});
}
else
{
keyboardWithoutTextInputShown = false;
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
_inputManager.hideSoftInputFromWindow(mGLView.getWindowToken(), 0);
DimSystemStatusBar.get().dim(_videoLayout);
//DimSystemStatusBar.get().dim(mGLView);
runOnUiThread(new Runnable()
{
public void run()
{
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)

View File

@@ -759,17 +759,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
public void showScreenKeyboardWithoutTextInputField() // Called from native code
{
class Callback implements Runnable
{
public MainActivity parent;
public void run()
{
parent.showScreenKeyboardWithoutTextInputField();
}
}
Callback cb = new Callback();
cb.parent = context;
context.runOnUiThread(cb);
context.showScreenKeyboardWithoutTextInputField();
}
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 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 nativeScreenKeyboardShown( int shown );
}

View File

@@ -298,20 +298,15 @@ void SDL_ANDROID_CallJavaHideScreenKeyboard()
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;
}
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)
{
(*JavaEnv)->PushLocalFrame(JavaEnv, 1);