Bug 856657 - Change Go button at the same time as resetting input; r=cpeterson
--- a/mobile/android/base/AwesomeBar.java
+++ b/mobile/android/base/AwesomeBar.java
@@ -326,38 +326,42 @@ public class AwesomeBar extends GeckoAct
int imeAction = EditorInfo.IME_ACTION_GO;
int actionBits = mText.getImeOptions() & EditorInfo.IME_MASK_ACTION;
if (StringUtils.isSearchQuery(text, actionBits == EditorInfo.IME_ACTION_SEARCH)) {
imageResource = R.drawable.ic_awesomebar_search;
contentDescription = getString(R.string.search);
imeAction = EditorInfo.IME_ACTION_SEARCH;
}
- mGoButton.setImageResource(imageResource);
- mGoButton.setContentDescription(contentDescription);
InputMethodManager imm = InputMethods.getInputMethodManager(mText.getContext());
if (imm == null) {
return;
}
+ boolean restartInput = false;
if (actionBits != imeAction) {
int optionBits = mText.getImeOptions() & ~EditorInfo.IME_MASK_ACTION;
mText.setImeOptions(optionBits | imeAction);
mDelayRestartInput = (imeAction == EditorInfo.IME_ACTION_GO) &&
(InputMethods.shouldDelayAwesomebarUpdate(mText.getContext()));
if (!mDelayRestartInput) {
- imm.restartInput(mText);
+ restartInput = true;
}
} else if (mDelayRestartInput) {
// Only call delayed restartInput when actionBits == imeAction
// so if there are two restarts in a row, the first restarts will
// be discarded and the second restart will be properly delayed
mDelayRestartInput = false;
+ restartInput = true;
+ }
+ if (restartInput) {
imm.restartInput(mText);
+ mGoButton.setImageResource(imageResource);
+ mGoButton.setContentDescription(contentDescription);
}
}
private void cancelAndFinish() {
setResult(Activity.RESULT_CANCELED);
finish();
overridePendingTransition(R.anim.awesomebar_hold_still, R.anim.awesomebar_fade_out);
}