diff options
author | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-13 02:23:55 +0000 |
---|---|---|
committer | kevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-13 02:23:55 +0000 |
commit | 635fa9cdb0145a980e5680d2461c343dd71a0485 (patch) | |
tree | 0dd1ccd21445b4f4d715fcbfa895b18e867bed94 /content | |
parent | 2d60b480e710c048c8a1c97718808fb5863686fe (diff) | |
download | chromium_src-635fa9cdb0145a980e5680d2461c343dd71a0485.zip chromium_src-635fa9cdb0145a980e5680d2461c343dd71a0485.tar.gz chromium_src-635fa9cdb0145a980e5680d2461c343dd71a0485.tar.bz2 |
Fix backing store scrolling on Windows in high-DPI mode.
BUG=175829
Review URL: https://chromiumcodereview.appspot.com/12226127
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182094 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r-- | content/browser/renderer_host/backing_store_win.cc | 9 | ||||
-rw-r--r-- | content/browser/renderer_host/render_widget_host_view_win.cc | 11 | ||||
-rw-r--r-- | content/browser/web_contents/web_contents_impl.cc | 9 |
3 files changed, 15 insertions, 14 deletions
diff --git a/content/browser/renderer_host/backing_store_win.cc b/content/browser/renderer_host/backing_store_win.cc index 59850e4..77c0341 100644 --- a/content/browser/renderer_host/backing_store_win.cc +++ b/content/browser/renderer_host/backing_store_win.cc @@ -192,8 +192,13 @@ void BackingStoreWin::ScrollBackingStore(const gfx::Vector2d& delta, // TODO(darin): this doesn't work if delta x() and y() are both non-zero! DCHECK(delta.x() == 0 || delta.y() == 0); - RECT damaged_rect, r = clip_rect.ToRECT(); - ScrollDC(hdc_, delta.x(), delta.y(), NULL, &r, NULL, &damaged_rect); + float scale = ui::win::GetDeviceScaleFactor(); + gfx::Rect screen_rect = gfx::ToEnclosingRect( + gfx::ScaleRect(clip_rect, scale)); + int dx = static_cast<int>(delta.x() * scale); + int dy = static_cast<int>(delta.y() * scale); + RECT damaged_rect, r = screen_rect.ToRECT(); + ScrollDC(hdc_, dx, dy, NULL, &r, NULL, &damaged_rect); } } // namespace content diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc index ed2d486..6021255 100644 --- a/content/browser/renderer_host/render_widget_host_view_win.cc +++ b/content/browser/renderer_host/render_widget_host_view_win.cc @@ -736,9 +736,14 @@ void RenderWidgetHostViewWin::DidUpdateBackingStore( } if (!scroll_rect.IsEmpty()) { - RECT clip_rect = scroll_rect.ToRECT(); - ScrollWindowEx(scroll_delta.x(), scroll_delta.y(), NULL, &clip_rect, - NULL, NULL, SW_INVALIDATE); + gfx::Rect pixel_rect = ui::win::DIPToScreenRect(scroll_rect); + // Damage might not be DIP aligned. + pixel_rect.Inset(-1, -1); + RECT clip_rect = pixel_rect.ToRECT(); + float scale = ui::win::GetDeviceScaleFactor(); + int dx = static_cast<int>(scale * scroll_delta.x()); + int dy = static_cast<int>(scale * scroll_delta.y()); + ScrollWindowEx(dx, dy, NULL, &clip_rect, NULL, NULL, SW_INVALIDATE); } if (!about_to_validate_and_paint_) diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index da00725..5e1f67d 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc @@ -497,13 +497,9 @@ WebPreferences WebContentsImpl::GetWebkitPrefs(RenderViewHost* rvh, prefs.accelerated_compositing_enabled = GpuProcessHost::gpu_enabled() && !command_line.HasSwitch(switches::kDisableAcceleratedCompositing); -#if defined(OS_WIN) && defined(ENABLE_HIDPI) - prefs.force_compositing_mode = true; -#else prefs.force_compositing_mode = content::IsForceCompositingModeEnabled() && !command_line.HasSwitch(switches::kDisableForceCompositingMode); -#endif prefs.accelerated_2d_canvas_enabled = GpuProcessHost::gpu_enabled() && !command_line.HasSwitch(switches::kDisableAccelerated2dCanvas); @@ -620,10 +616,6 @@ WebPreferences WebContentsImpl::GetWebkitPrefs(RenderViewHost* rvh, prefs.is_online = !net::NetworkChangeNotifier::IsOffline(); -#if defined(OS_WIN) && defined(ENABLE_HIDPI) - prefs.accelerated_compositing_enabled = true; - prefs.accelerated_2d_canvas_enabled = true; -#else // Force accelerated compositing and 2d canvas off for chrome: and about: // pages (unless it's specifically allowed). if ((url.SchemeIs(chrome::kChromeUIScheme) || @@ -633,7 +625,6 @@ WebPreferences WebContentsImpl::GetWebkitPrefs(RenderViewHost* rvh, prefs.accelerated_compositing_enabled = false; prefs.accelerated_2d_canvas_enabled = false; } -#endif if (url.SchemeIs(chrome::kChromeDevToolsScheme)) prefs.show_fps_counter = false; |