am cc1bd4bb: am c470b2dd: Merge "Part of fixing issue #6006757: Keyboard dismissal lags" into ics-mr1
* commit 'cc1bd4bbbc7314ab7d3ba015c16ea78cbfd6459f': Part of fixing issue #6006757: Keyboard dismissal lags
This commit is contained in:
@@ -355,8 +355,10 @@ public final class InputMethodManager {
|
||||
if (mServedView != null && mServedView.isFocused()) {
|
||||
mServedConnecting = true;
|
||||
}
|
||||
if (mActive) {
|
||||
startInputInner();
|
||||
}
|
||||
}
|
||||
startInputInner();
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -1127,20 +1129,26 @@ public final class InputMethodManager {
|
||||
* @hide
|
||||
*/
|
||||
public void checkFocus() {
|
||||
if (checkFocusNoStartInput()) {
|
||||
startInputInner();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean checkFocusNoStartInput() {
|
||||
// This is called a lot, so short-circuit before locking.
|
||||
if (mServedView == mNextServedView && !mNextServedNeedsStart) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
InputConnection ic = null;
|
||||
synchronized (mH) {
|
||||
if (mServedView == mNextServedView && !mNextServedNeedsStart) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
if (DEBUG) Log.v(TAG, "checkFocus: view=" + mServedView
|
||||
+ " next=" + mNextServedView
|
||||
+ " restart=" + mNextServedNeedsStart);
|
||||
|
||||
|
||||
mNextServedNeedsStart = false;
|
||||
if (mNextServedView == null) {
|
||||
finishInputLocked();
|
||||
@@ -1148,22 +1156,22 @@ public final class InputMethodManager {
|
||||
// but no longer do. We should make sure the input method is
|
||||
// no longer shown, since it serves no purpose.
|
||||
closeCurrentInput();
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
ic = mServedInputConnection;
|
||||
|
||||
|
||||
mServedView = mNextServedView;
|
||||
mCurrentTextBoxAttribute = null;
|
||||
mCompletions = null;
|
||||
mServedConnecting = true;
|
||||
}
|
||||
|
||||
|
||||
if (ic != null) {
|
||||
ic.finishComposingText();
|
||||
}
|
||||
|
||||
startInputInner();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void closeCurrentInput() {
|
||||
@@ -1192,7 +1200,7 @@ public final class InputMethodManager {
|
||||
focusInLocked(focusedView != null ? focusedView : rootView);
|
||||
}
|
||||
|
||||
checkFocus();
|
||||
boolean startInput = checkFocusNoStartInput();
|
||||
|
||||
synchronized (mH) {
|
||||
try {
|
||||
@@ -1201,6 +1209,9 @@ public final class InputMethodManager {
|
||||
mService.windowGainedFocus(mClient, rootView.getWindowToken(),
|
||||
focusedView != null, isTextEditor, softInputMode, first,
|
||||
windowFlags);
|
||||
if (startInput) {
|
||||
startInputInner();
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user