diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index 2d587ada1..38e6d5a1d 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -109,7 +109,7 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy { // Drawing /** True if the entire keyboard needs to be dimmed. */ - private boolean mNeedsToDimBackground; + private boolean mNeedsToDimEntireKeyboard; /** Whether the keyboard bitmap buffer needs to be redrawn before it's blitted. **/ private boolean mBufferNeedsUpdate; /** True if all keys should be drawn */ @@ -455,13 +455,16 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy { final KeyDrawParams params = mKeyDrawParams; if (mInvalidateAllKeys || mInvalidatedKeys.isEmpty()) { - mInvalidatedKeysRect.set(0, 0, getWidth(), getHeight()); + mInvalidatedKeysRect.set(0, 0, width, height); canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE); canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR); // Draw all keys. for (final Key key : mKeyboard.mKeys) { onDrawKey(key, canvas, paint, params); } + if (mNeedsToDimEntireKeyboard) { + drawDimRectangle(canvas, mInvalidatedKeysRect, mBackgroundDimAlpha, paint); + } } else { // Draw invalidated keys. for (final Key key : mInvalidatedKeys) { @@ -471,24 +474,20 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy { canvas.clipRect(mInvalidatedKeysRect, Op.REPLACE); canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR); onDrawKey(key, canvas, paint, params); + if (mNeedsToDimEntireKeyboard) { + drawDimRectangle(canvas, mInvalidatedKeysRect, mBackgroundDimAlpha, paint); + } } } - // Overlay a dark rectangle to dim the entire keyboard - if (mNeedsToDimBackground) { - paint.setColor(Color.BLACK); - paint.setAlpha(mBackgroundDimAlpha); - canvas.drawRect(0, 0, width, height, paint); - } - mInvalidatedKeys.clear(); mInvalidatedKeysRect.setEmpty(); mInvalidateAllKeys = false; } public void dimEntireKeyboard(boolean dimmed) { - final boolean needsRedrawing = mNeedsToDimBackground != dimmed; - mNeedsToDimBackground = dimmed; + final boolean needsRedrawing = mNeedsToDimEntireKeyboard != dimmed; + mNeedsToDimEntireKeyboard = dimmed; if (needsRedrawing) { invalidateAllKeys(); } @@ -809,6 +808,13 @@ public class KeyboardView extends View implements PointerTracker.DrawingProxy { canvas.translate(-x, -y); } + // Overlay a dark rectangle to dim. + private static void drawDimRectangle(Canvas canvas, Rect rect, int alpha, Paint paint) { + paint.setColor(Color.BLACK); + paint.setAlpha(alpha); + canvas.drawRect(rect, paint); + } + public Paint newDefaultLabelPaint() { final Paint paint = new Paint(); paint.setAntiAlias(true);