Bug 805162 - b. Redefine Java to Gecko IME events to align with Android IME design; r=blassey

This commit is contained in:
Jim Chen 2012-11-01 16:11:02 -04:00
Родитель 3ec7856ec9
Коммит 1ca53980b0
3 изменённых файлов: 66 добавлений и 58 удалений

Просмотреть файл

@ -80,14 +80,12 @@ public class GeckoEvent {
private static final int DOM_KEY_LOCATION_MOBILE = 4;
private static final int DOM_KEY_LOCATION_JOYSTICK = 5;
public static final int IME_COMPOSITION_END = 0;
public static final int IME_COMPOSITION_BEGIN = 1;
public static final int IME_SET_TEXT = 2;
public static final int IME_GET_TEXT = 3;
public static final int IME_DELETE_TEXT = 4;
public static final int IME_SET_SELECTION = 5;
public static final int IME_GET_SELECTION = 6;
public static final int IME_ADD_RANGE = 7;
public static final int IME_SYNCHRONIZE = 0;
public static final int IME_REPLACE_TEXT = 1;
public static final int IME_SET_SELECTION = 2;
public static final int IME_ADD_COMPOSITION_RANGE = 3;
public static final int IME_UPDATE_COMPOSITION = 4;
public static final int IME_REMOVE_COMPOSITION = 5;
public static final int IME_RANGE_CARETPOSITION = 1;
public static final int IME_RANGE_RAWINPUT = 2;
@ -118,7 +116,8 @@ public class GeckoEvent {
public int mMetaState, mFlags;
public int mKeyCode, mUnicodeChar;
public int mRepeatCount;
public int mOffset, mCount;
public int mCount;
public int mStart, mEnd;
public String mCharacters, mCharactersExtra;
public int mRangeType, mRangeStyles;
public int mRangeForeColor, mRangeBackColor;
@ -459,44 +458,51 @@ public class GeckoEvent {
return event;
}
public static GeckoEvent createIMEEvent(int imeAction, int offset, int count) {
public static GeckoEvent createIMEEvent(int action) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = imeAction;
event.mOffset = offset;
event.mCount = count;
event.mAction = action;
return event;
}
private void InitIMERange(int action, int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor) {
mAction = action;
mOffset = offset;
mCount = count;
mRangeType = rangeType;
mRangeStyles = rangeStyles;
mRangeForeColor = rangeForeColor;
mRangeBackColor = rangeBackColor;
return;
}
public static GeckoEvent createIMERangeEvent(int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor,
String text) {
public static GeckoEvent createIMEReplaceEvent(int start, int end,
String text) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.InitIMERange(IME_SET_TEXT, offset, count, rangeType, rangeStyles,
rangeForeColor, rangeBackColor);
event.mAction = IME_REPLACE_TEXT;
event.mStart = start;
event.mEnd = end;
event.mCharacters = text;
return event;
}
public static GeckoEvent createIMERangeEvent(int offset, int count,
int rangeType, int rangeStyles,
int rangeForeColor, int rangeBackColor) {
public static GeckoEvent createIMESelectEvent(int start, int end) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.InitIMERange(IME_ADD_RANGE, offset, count, rangeType, rangeStyles,
rangeForeColor, rangeBackColor);
event.mAction = IME_SET_SELECTION;
event.mStart = start;
event.mEnd = end;
return event;
}
public static GeckoEvent createIMECompositionEvent(int start, int end) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = IME_UPDATE_COMPOSITION;
event.mStart = start;
event.mEnd = end;
return event;
}
public static GeckoEvent createIMERangeEvent(int start,
int end, int rangeType,
int rangeStyles,
int rangeForeColor,
int rangeBackColor) {
GeckoEvent event = new GeckoEvent(IME_EVENT);
event.mAction = IME_ADD_COMPOSITION_RANGE;
event.mStart = start;
event.mEnd = end;
event.mRangeType = rangeType;
event.mRangeStyles = rangeStyles;
event.mRangeForeColor = rangeForeColor;
event.mRangeBackColor = rangeBackColor;
return event;
}

Просмотреть файл

@ -33,8 +33,9 @@ jfieldID AndroidGeckoEvent::jDomKeyLocationField = 0;
jfieldID AndroidGeckoEvent::jFlagsField = 0;
jfieldID AndroidGeckoEvent::jUnicodeCharField = 0;
jfieldID AndroidGeckoEvent::jRepeatCountField = 0;
jfieldID AndroidGeckoEvent::jOffsetField = 0;
jfieldID AndroidGeckoEvent::jCountField = 0;
jfieldID AndroidGeckoEvent::jStartField = 0;
jfieldID AndroidGeckoEvent::jEndField = 0;
jfieldID AndroidGeckoEvent::jPointerIndexField = 0;
jfieldID AndroidGeckoEvent::jRangeTypeField = 0;
jfieldID AndroidGeckoEvent::jRangeStylesField = 0;
@ -227,8 +228,9 @@ AndroidGeckoEvent::InitGeckoEventClass(JNIEnv *jEnv)
jFlagsField = getField("mFlags", "I");
jUnicodeCharField = getField("mUnicodeChar", "I");
jRepeatCountField = getField("mRepeatCount", "I");
jOffsetField = getField("mOffset", "I");
jCountField = getField("mCount", "I");
jStartField = getField("mStart", "I");
jEndField = getField("mEnd", "I");
jPointerIndexField = getField("mPointerIndex", "I");
jRangeTypeField = getField("mRangeType", "I");
jRangeStylesField = getField("mRangeStyles", "I");
@ -564,14 +566,13 @@ AndroidGeckoEvent::Init(JNIEnv *jenv, jobject jobj)
break;
case IME_EVENT:
if (mAction == IME_GET_TEXT || mAction == IME_SET_SELECTION) {
mOffset = jenv->GetIntField(jobj, jOffsetField);
mCount = jenv->GetIntField(jobj, jCountField);
} else if (mAction == IME_SET_TEXT || mAction == IME_ADD_RANGE) {
if (mAction == IME_SET_TEXT)
ReadCharactersField(jenv);
mOffset = jenv->GetIntField(jobj, jOffsetField);
mCount = jenv->GetIntField(jobj, jCountField);
mStart = jenv->GetIntField(jobj, jStartField);
mEnd = jenv->GetIntField(jobj, jEndField);
if (mAction == IME_REPLACE_TEXT) {
ReadCharactersField(jenv);
} else if (mAction == IME_UPDATE_COMPOSITION ||
mAction == IME_ADD_COMPOSITION_RANGE) {
mRangeType = jenv->GetIntField(jobj, jRangeTypeField);
mRangeStyles = jenv->GetIntField(jobj, jRangeStylesField);
mRangeForeColor =

Просмотреть файл

@ -676,8 +676,9 @@ public:
int Flags() { return mFlags; }
int UnicodeChar() { return mUnicodeChar; }
int RepeatCount() const { return mRepeatCount; }
int Offset() { return mOffset; }
int Count() { return mCount; }
int Start() { return mStart; }
int End() { return mEnd; }
int PointerIndex() { return mPointerIndex; }
int RangeType() { return mRangeType; }
int RangeStyles() { return mRangeStyles; }
@ -703,7 +704,8 @@ protected:
int mDomKeyLocation;
int mKeyCode, mUnicodeChar;
int mRepeatCount;
int mOffset, mCount;
int mCount;
int mStart, mEnd;
int mRangeType, mRangeStyles;
int mRangeForeColor, mRangeBackColor;
double mX, mY, mZ;
@ -753,8 +755,9 @@ protected:
static jfieldID jMetaStateField;
static jfieldID jDomKeyLocationField;
static jfieldID jFlagsField;
static jfieldID jOffsetField;
static jfieldID jCountField;
static jfieldID jStartField;
static jfieldID jEndField;
static jfieldID jPointerIndexField;
static jfieldID jUnicodeCharField;
static jfieldID jRepeatCountField;
@ -807,14 +810,12 @@ public:
};
enum {
IME_COMPOSITION_END = 0,
IME_COMPOSITION_BEGIN = 1,
IME_SET_TEXT = 2,
IME_GET_TEXT = 3,
IME_DELETE_TEXT = 4,
IME_SET_SELECTION = 5,
IME_GET_SELECTION = 6,
IME_ADD_RANGE = 7
IME_SYNCHRONIZE = 0,
IME_REPLACE_TEXT = 1,
IME_SET_SELECTION = 2,
IME_ADD_COMPOSITION_RANGE = 3,
IME_UPDATE_COMPOSITION = 4,
IME_REMOVE_COMPOSITION = 5
};
};