diff options
author | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-24 17:54:20 +0000 |
---|---|---|
committer | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-24 17:54:20 +0000 |
commit | fb10ec5bbf081bed3de8dbf298d937562a63fb5d (patch) | |
tree | 8d1f4556e5ddf6916e7602b8619637d69ed1001f /content/renderer | |
parent | b4e98965a89c001fc802e53069952ddb68e644e5 (diff) | |
download | chromium_src-fb10ec5bbf081bed3de8dbf298d937562a63fb5d.zip chromium_src-fb10ec5bbf081bed3de8dbf298d937562a63fb5d.tar.gz chromium_src-fb10ec5bbf081bed3de8dbf298d937562a63fb5d.tar.bz2 |
[Aura] Support transparent webkit.
Support turning on webkit transparency by setting a background image.
- Update RenderWidget::PaintRect to handle background transparency;
- Update BackingStoreSkia::PaintToBackingStore to handle webkit transparency;
- Turn on compositing of RenderWidgetHostViewAura's layer when we set a background with transparency;
BUG=98311
TEST=Verify when applist change (chromium:98308) is in.
Review URL: http://codereview.chromium.org/8369006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106943 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
-rw-r--r-- | content/renderer/render_widget.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc index b7b1605..97eac4c 100644 --- a/content/renderer/render_widget.cc +++ b/content/renderer/render_widget.cc @@ -534,8 +534,19 @@ void RenderWidget::PaintRect(const gfx::Rect& rect, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode); paint.setShader(shader)->unref(); - paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); + + // Use kSrc_Mode to handle background_ transparency properly. + paint.setXfermodeMode(SkXfermode::kSrc_Mode); + + // Canvas could contain multiple update rects. Clip to given rect so that + // we don't accidentally clear other update rects. + canvas->save(); + SkRect clip; + clip.set(SkIntToScalar(rect.x()), SkIntToScalar(rect.y()), + SkIntToScalar(rect.right()), SkIntToScalar(rect.bottom())); + canvas->clipRect(clip); canvas->drawPaint(paint); + canvas->restore(); } // First see if this rect is a plugin that can paint itself faster. |