Fix dimming keyboard
Bug: 6354679
Change-Id: I03bb0554bc06f1aab7eaa6c69fd9241ef300318f
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 2d587ad..38e6d5a 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -109,7 +109,7 @@
// 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 @@
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 @@
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 @@
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);