diff options
author | Romain Guy <romainguy@google.com> | 2011-03-01 14:53:48 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-01 14:53:48 -0800 |
commit | e6c524022deb665439a442ab8b66f2917ca62ca2 (patch) | |
tree | cec4e4c0ac30a8684cf8d8fb3d711e3864de8af4 /core/java | |
parent | 5a6f9faf5d94792a61557937f11e8b6b289ea03a (diff) | |
parent | d643bb56fdf21973ea75984f0816b7dc024698df (diff) | |
download | frameworks_base-e6c524022deb665439a442ab8b66f2917ca62ca2.zip frameworks_base-e6c524022deb665439a442ab8b66f2917ca62ca2.tar.gz frameworks_base-e6c524022deb665439a442ab8b66f2917ca62ca2.tar.bz2 |
Merge "Correctly mark layers dirty when drawing WebView."
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/view/ViewGroup.java | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 5c06151..7ecf281 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2447,21 +2447,26 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } cache = child.getDrawingCache(true); } else { - if (layerType == LAYER_TYPE_SOFTWARE) { - child.buildDrawingCache(true); - cache = child.getDrawingCache(true); - } else if (layerType == LAYER_TYPE_NONE) { - // Delay getting the display list until animation-driven alpha values are - // set up and possibly passed on to the view - hasDisplayList = child.canHaveDisplayList(); + switch (layerType) { + case LAYER_TYPE_SOFTWARE: + child.buildDrawingCache(true); + cache = child.getDrawingCache(true); + break; + case LAYER_TYPE_NONE: + // Delay getting the display list until animation-driven alpha values are + // set up and possibly passed on to the view + hasDisplayList = child.canHaveDisplayList(); + break; } } } final boolean hasNoCache = cache == null || hasDisplayList; + final boolean offsetForScroll = cache == null && !hasDisplayList && + layerType != LAYER_TYPE_HARDWARE; final int restoreTo = canvas.save(); - if (cache == null && !hasDisplayList) { + if (offsetForScroll) { canvas.translate(cl - sx, ct - sy); } else { canvas.translate(cl, ct); @@ -2477,7 +2482,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager int transX = 0; int transY = 0; - if (cache == null && !hasDisplayList) { + if (offsetForScroll) { transX = -sx; transY = -sy; } @@ -2532,7 +2537,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } if ((flags & FLAG_CLIP_CHILDREN) == FLAG_CLIP_CHILDREN) { - if (cache == null && !hasDisplayList) { + if (offsetForScroll) { canvas.clipRect(sx, sy, sx + (cr - cl), sy + (cb - ct)); } else { if (!scalingRequired || cache == null) { |