summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorkevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-13 02:23:55 +0000
committerkevers@chromium.org <kevers@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-13 02:23:55 +0000
commit635fa9cdb0145a980e5680d2461c343dd71a0485 (patch)
tree0dd1ccd21445b4f4d715fcbfa895b18e867bed94 /content
parent2d60b480e710c048c8a1c97718808fb5863686fe (diff)
downloadchromium_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.cc9
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc11
-rw-r--r--content/browser/web_contents/web_contents_impl.cc9
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;