mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-01-25 18:21:11 +00:00
Provide the correct state of the on-screen keyboard to the API (patch from Sylvain)
This commit is contained in:
parent
6ee661398d
commit
e54eede265
|
@ -59,6 +59,7 @@ public class SDLActivity extends Activity {
|
||||||
protected static SDLActivity mSingleton;
|
protected static SDLActivity mSingleton;
|
||||||
protected static SDLSurface mSurface;
|
protected static SDLSurface mSurface;
|
||||||
protected static View mTextEdit;
|
protected static View mTextEdit;
|
||||||
|
protected static boolean mScreenKeyboardShown;
|
||||||
protected static ViewGroup mLayout;
|
protected static ViewGroup mLayout;
|
||||||
protected static SDLJoystickHandler mJoystickHandler;
|
protected static SDLJoystickHandler mJoystickHandler;
|
||||||
protected static SDLHapticHandler mHapticHandler;
|
protected static SDLHapticHandler mHapticHandler;
|
||||||
|
@ -440,6 +441,8 @@ public class SDLActivity extends Activity {
|
||||||
|
|
||||||
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0);
|
||||||
|
|
||||||
|
mScreenKeyboardShown = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case COMMAND_SET_KEEP_SCREEN_ON:
|
case COMMAND_SET_KEEP_SCREEN_ON:
|
||||||
|
@ -568,6 +571,45 @@ public class SDLActivity extends Activity {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by SDL using JNI.
|
||||||
|
*/
|
||||||
|
public static boolean isScreenKeyboardShown()
|
||||||
|
{
|
||||||
|
if (mTextEdit == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mScreenKeyboardShown == false) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
if (imm.isAcceptingText()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by SDL using JNI.
|
||||||
|
*/
|
||||||
|
public static int openURL(String url)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Intent i = new Intent(Intent.ACTION_VIEW);
|
||||||
|
i.setData(Uri.parse(url));
|
||||||
|
mSingleton.startActivity(i);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called by SDL using JNI.
|
* This method is called by SDL using JNI.
|
||||||
*/
|
*/
|
||||||
|
@ -647,6 +689,8 @@ public class SDLActivity extends Activity {
|
||||||
|
|
||||||
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
imm.showSoftInput(mTextEdit, 0);
|
imm.showSoftInput(mTextEdit, 0);
|
||||||
|
|
||||||
|
mScreenKeyboardShown = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1684,6 +1684,20 @@ void Android_JNI_HideTextInput(void)
|
||||||
Android_JNI_SendMessage(COMMAND_TEXTEDIT_HIDE, 0);
|
Android_JNI_SendMessage(COMMAND_TEXTEDIT_HIDE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_bool Android_JNI_IsScreenKeyboardShown()
|
||||||
|
{
|
||||||
|
jmethodID mid;
|
||||||
|
jboolean is_shown = 0;
|
||||||
|
JNIEnv *mEnv = Android_JNI_GetEnv();
|
||||||
|
mid = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,"isScreenKeyboardShown","()Z");
|
||||||
|
if (mid) {
|
||||||
|
is_shown = (*mEnv)->CallStaticBooleanMethod(mEnv, mActivityClass, mid);
|
||||||
|
}
|
||||||
|
|
||||||
|
return is_shown;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int Android_JNI_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
|
int Android_JNI_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
|
||||||
{
|
{
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
|
|
|
@ -38,6 +38,7 @@ extern void Android_JNI_SetOrientation(int w, int h, int resizable, const char *
|
||||||
extern SDL_bool Android_JNI_GetAccelerometerValues(float values[3]);
|
extern SDL_bool Android_JNI_GetAccelerometerValues(float values[3]);
|
||||||
extern void Android_JNI_ShowTextInput(SDL_Rect *inputRect);
|
extern void Android_JNI_ShowTextInput(SDL_Rect *inputRect);
|
||||||
extern void Android_JNI_HideTextInput(void);
|
extern void Android_JNI_HideTextInput(void);
|
||||||
|
extern SDL_bool Android_JNI_IsScreenKeyboardShown(void);
|
||||||
extern ANativeWindow* Android_JNI_GetNativeWindow(void);
|
extern ANativeWindow* Android_JNI_GetNativeWindow(void);
|
||||||
|
|
||||||
/* Audio support */
|
/* Audio support */
|
||||||
|
|
|
@ -357,7 +357,7 @@ Android_HasScreenKeyboardSupport(_THIS)
|
||||||
SDL_bool
|
SDL_bool
|
||||||
Android_IsScreenKeyboardShown(_THIS, SDL_Window * window)
|
Android_IsScreenKeyboardShown(_THIS, SDL_Window * window)
|
||||||
{
|
{
|
||||||
return SDL_IsTextInputActive();
|
return Android_JNI_IsScreenKeyboardShown();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Reference in a new issue