Fixed Android text input
This commit is contained in:
@@ -30,6 +30,10 @@
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#include <SDL_screenkeyboard.h>
|
||||
#endif
|
||||
|
||||
/** Method to open the OSK. */
|
||||
enum OskActivation {
|
||||
OSKA_DISABLED, ///< The OSK shall not be activated at all.
|
||||
@@ -924,6 +928,15 @@ void QueryString::ClickEditBox(Window *w, Point pt, int wid, int click_count, bo
|
||||
/* Open the OSK window */
|
||||
ShowOnScreenKeyboard(w, wid);
|
||||
}
|
||||
#ifdef __ANDROID__
|
||||
char text[512];
|
||||
strncpy(text, this->text.buf, sizeof(text) - 1);
|
||||
text[sizeof(text) - 1] = 0;
|
||||
this->text.DeleteAll();
|
||||
SDL_ANDROID_GetScreenKeyboardTextInput(text, sizeof(text) - 1); /* Invoke Android built-in screen keyboard */
|
||||
this->text.Assign(text);
|
||||
w->OnEditboxChanged(wid);
|
||||
#endif
|
||||
}
|
||||
|
||||
/** Class for the string query window. */
|
||||
|
||||
@@ -22,9 +22,6 @@
|
||||
|
||||
#include "table/sprites.h"
|
||||
#include "table/strings.h"
|
||||
#ifdef __ANDROID__
|
||||
#include <SDL_screenkeyboard.h>
|
||||
#endif
|
||||
|
||||
char _keyboard_opt[2][OSK_KEYBOARD_ENTRIES * 4 + 1];
|
||||
static WChar _keyboard[2][OSK_KEYBOARD_ENTRIES];
|
||||
@@ -417,16 +414,6 @@ void ShowOnScreenKeyboard(Window *parent, int button)
|
||||
|
||||
GetKeyboardLayout();
|
||||
new OskWindow(&_osk_desc, parent, button);
|
||||
#ifdef __ANDROID__
|
||||
char text[256];
|
||||
SDL_ANDROID_GetScreenKeyboardTextInput(text, sizeof(text) - 1); /* Invoke Android built-in screen keyboard */
|
||||
OskWindow *osk = dynamic_cast<OskWindow *>(FindWindowById(WC_OSK, 0));
|
||||
osk->qs->text.Assign(text);
|
||||
free(osk->orig_str_buf);
|
||||
osk->orig_str_buf = strdup(osk->qs->text.buf);
|
||||
|
||||
osk->SetDirty();
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user