69 lines
2.6 KiB
Java
69 lines
2.6 KiB
Java
package org.supertuxkart.stk_dbg;
|
|
|
|
import org.supertuxkart.stk_dbg.STKEditText;
|
|
|
|
import android.view.inputmethod.InputConnection;
|
|
import android.view.inputmethod.InputConnectionWrapper;
|
|
|
|
public class STKInputConnection extends InputConnectionWrapper
|
|
{
|
|
/* The global edittext which will be "copied" to the current focused STK
|
|
* box. */
|
|
final private STKEditText m_stk_edittext;
|
|
|
|
// ------------------------------------------------------------------------
|
|
public STKInputConnection(InputConnection target, STKEditText stk_edittext)
|
|
{
|
|
super(target, true/*mutable*/);
|
|
m_stk_edittext = stk_edittext;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
@Override
|
|
public boolean setComposingText(CharSequence text, int new_cursor_position)
|
|
{
|
|
boolean ret = super.setComposingText(text, new_cursor_position);
|
|
String composing_text = text.toString();
|
|
String new_text = m_stk_edittext.getText().toString();
|
|
int composing_start = 0;
|
|
int composing_end = 0;
|
|
// Test last char
|
|
if (!composing_text.isEmpty() && !new_text.isEmpty() &&
|
|
composing_text.charAt(composing_text.length() - 1) ==
|
|
new_text.charAt(new_text.length() - 1))
|
|
{
|
|
composing_start = new_text.length() - composing_text.length();
|
|
composing_end = composing_start + composing_text.length();
|
|
}
|
|
m_stk_edittext.setComposingRegion(composing_start, composing_end);
|
|
m_stk_edittext.updateSTKEditBox();
|
|
return ret;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
@Override
|
|
public boolean finishComposingText()
|
|
{
|
|
m_stk_edittext.setComposingRegion(0, 0);
|
|
m_stk_edittext.updateSTKEditBox();
|
|
return super.finishComposingText();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
@Override
|
|
public boolean setComposingRegion(int start, int end)
|
|
{
|
|
m_stk_edittext.setComposingRegion(start, end);
|
|
m_stk_edittext.updateSTKEditBox();
|
|
return super.setComposingRegion(start, end);
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
@Override
|
|
public boolean commitText(CharSequence text, int new_cursor_position)
|
|
{
|
|
// Usually only a single character, so dismiss composing region
|
|
boolean ret = super.commitText(text, new_cursor_position);
|
|
m_stk_edittext.setComposingRegion(0, 0);
|
|
m_stk_edittext.updateSTKEditBox();
|
|
return ret;
|
|
}
|
|
|
|
}
|