mirror of https://github.com/encounter/SDL.git
Fixed bug #4843 - Can not get the ime candidatelist like chinese/japaness input method
This commit is contained in:
parent
7fb4364391
commit
ccb12457f9
|
@ -102,6 +102,8 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||
/** If shared libraries (e.g. SDL or the native application) could not be loaded. */
|
||||
public static boolean mBrokenLibraries = true;
|
||||
|
||||
public static int mInputType = 1;
|
||||
|
||||
// Main components
|
||||
protected static SDLActivity mSingleton;
|
||||
protected static SDLSurface mSurface;
|
||||
|
@ -1184,6 +1186,14 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
|
|||
return event.isPrintingKey() || event.getKeyCode() == KeyEvent.KEYCODE_SPACE;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
public static int setInputType(int type) {
|
||||
mInputType = type;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by SDL using JNI.
|
||||
*/
|
||||
|
@ -2182,7 +2192,14 @@ class DummyEdit extends View implements View.OnKeyListener {
|
|||
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
|
||||
ic = new SDLInputConnection(this, true);
|
||||
|
||||
if (SDLActivity.mInputType == 0) {
|
||||
/* 0 normal: use input method */
|
||||
outAttrs.inputType = InputType.TYPE_CLASS_TEXT;
|
||||
} else {
|
||||
/* 1 password (default): can not use input method,just use english */
|
||||
outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
|
||||
}
|
||||
|
||||
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI
|
||||
| EditorInfo.IME_FLAG_NO_FULLSCREEN /* API 11 */;
|
||||
|
||||
|
|
|
@ -395,6 +395,17 @@ extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permis
|
|||
*/
|
||||
extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset);
|
||||
|
||||
/* Set Android IME Input Type
|
||||
* Call this method before calling SDL_StartTextInput()
|
||||
*
|
||||
* \param type
|
||||
* 0 normal: use input method
|
||||
* 1 password (default): can not use input method,just use english
|
||||
*
|
||||
* \returns 0 if success, -1 if any error occurs.
|
||||
*/
|
||||
extern DECLSPEC int SDLCALL SDL_AndroidSetInputType(int type);
|
||||
|
||||
#endif /* __ANDROID__ */
|
||||
|
||||
/* Platform specific functions for WinRT */
|
||||
|
|
|
@ -316,6 +316,7 @@ static jmethodID midShowToast;
|
|||
static jmethodID midSendMessage;
|
||||
static jmethodID midSetActivityTitle;
|
||||
static jmethodID midSetCustomCursor;
|
||||
static jmethodID midSetInputType;
|
||||
static jmethodID midSetOrientation;
|
||||
static jmethodID midSetRelativeMouseEnabled;
|
||||
static jmethodID midSetSystemCursor;
|
||||
|
@ -595,6 +596,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv *env, jclass cl
|
|||
midSendMessage = (*env)->GetStaticMethodID(env, mActivityClass, "sendMessage", "(II)Z");
|
||||
midSetActivityTitle = (*env)->GetStaticMethodID(env, mActivityClass, "setActivityTitle","(Ljava/lang/String;)Z");
|
||||
midSetCustomCursor = (*env)->GetStaticMethodID(env, mActivityClass, "setCustomCursor", "(I)Z");
|
||||
midSetInputType = (*env)->GetStaticMethodID(env, mActivityClass, "setInputType", "(I)I");
|
||||
midSetOrientation = (*env)->GetStaticMethodID(env, mActivityClass, "setOrientation","(IIZLjava/lang/String;)V");
|
||||
midSetRelativeMouseEnabled = (*env)->GetStaticMethodID(env, mActivityClass, "setRelativeMouseEnabled", "(Z)Z");
|
||||
midSetSystemCursor = (*env)->GetStaticMethodID(env, mActivityClass, "setSystemCursor", "(I)Z");
|
||||
|
@ -625,6 +627,7 @@ JNIEXPORT void JNICALL SDL_JAVA_INTERFACE(nativeSetupJNI)(JNIEnv *env, jclass cl
|
|||
!midSendMessage ||
|
||||
!midSetActivityTitle ||
|
||||
!midSetCustomCursor ||
|
||||
!midSetInputType ||
|
||||
!midSetOrientation ||
|
||||
!midSetRelativeMouseEnabled ||
|
||||
!midSetSystemCursor ||
|
||||
|
@ -2453,6 +2456,14 @@ int SDL_AndroidShowToast(const char* message, int duration, int gravity, int xOf
|
|||
return Android_JNI_ShowToast(message, duration, gravity, xOffset, yOffset);
|
||||
}
|
||||
|
||||
int SDL_AndroidSetInputType(int type)
|
||||
{
|
||||
int result = 0;
|
||||
JNIEnv *env = Android_JNI_GetEnv();
|
||||
result = (*env)->CallStaticIntMethod(env, mActivityClass, midSetInputType, type);
|
||||
return result;
|
||||
}
|
||||
|
||||
void Android_JNI_GetManifestEnvironmentVariables(void)
|
||||
{
|
||||
if (!mActivityClass || !midGetManifestEnvironmentVariables) {
|
||||
|
|
Loading…
Reference in New Issue