Do not send Backspace keycode for text input invoked with SDL_ANDROID_GetScreenKeyboardTextInput()

This commit is contained in:
pelya
2011-02-28 11:16:47 +00:00
parent 97bddb8179
commit 418ab79db8
5 changed files with 19 additions and 18 deletions

View File

@@ -250,32 +250,26 @@ public class MainActivity extends Activity {
mGLView.requestFocus();
};
public void showScreenKeyboard(final String oldText)
public void showScreenKeyboard(final String oldText, boolean sendBackspace)
{
if(_screenKeyboard != null)
return;
class myKeyListener implements OnKeyListener
{
MainActivity _parent;
myKeyListener(MainActivity parent) { _parent = parent; };
boolean sendBackspace;
myKeyListener(MainActivity parent, boolean sendBackspace) { _parent = parent; this.sendBackspace = sendBackspace; };
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if ((event.getAction() == KeyEvent.ACTION_UP) && ((keyCode == KeyEvent.KEYCODE_ENTER) || (keyCode == KeyEvent.KEYCODE_BACK)))
{
_parent.hideScreenKeyboard();
if(keyCode == KeyEvent.KEYCODE_ENTER)
{
synchronized(textInput)
{
//DemoRenderer.nativeTextInput( 13, 13 ); // send return
}
}
return true;
}
if ((event.getAction() == KeyEvent.ACTION_UP) && (keyCode == KeyEvent.KEYCODE_DEL || keyCode == KeyEvent.KEYCODE_CLEAR))
if ((sendBackspace && event.getAction() == KeyEvent.ACTION_UP) && (keyCode == KeyEvent.KEYCODE_DEL || keyCode == KeyEvent.KEYCODE_CLEAR))
{
synchronized(textInput) {
DemoRenderer.nativeTextInput( 8, 8 );
DemoRenderer.nativeTextInput( 8, 8 ); // Send backspace to native code
}
return false; // and proceed to delete text in keyboard input field
}
@@ -283,7 +277,7 @@ public class MainActivity extends Activity {
}
};
_screenKeyboard = new EditText(this);
_screenKeyboard.setOnKeyListener(new myKeyListener(this));
_screenKeyboard.setOnKeyListener(new myKeyListener(this, sendBackspace));
_screenKeyboard.setHint(R.string.text_edit_click_here);
_screenKeyboard.setText(oldText);
_videoLayout.addView(_screenKeyboard);

View File

@@ -253,20 +253,22 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer {
return 1;
}
public void showScreenKeyboard(final String oldText) // Called from native code
public void showScreenKeyboard(final String oldText, int sendBackspace) // Called from native code
{
class Callback implements Runnable
{
public MainActivity parent;
public String oldText;
public boolean sendBackspace;
public void run()
{
parent.showScreenKeyboard(oldText);
parent.showScreenKeyboard(oldText, sendBackspace);
}
}
Callback cb = new Callback();
cb.parent = context;
cb.oldText = oldText;
cb.sendBackspace = (sendBackspace != 0);
context.runOnUiThread(cb);
}