Index: ui/views/controls/native/native_view_host_win.cc |
diff --git a/ui/views/controls/native/native_view_host_win.cc b/ui/views/controls/native/native_view_host_win.cc |
index 7f0c92e9ac029b959cb373cfd7934f7f4a9f23e4..24ea19e7ca6affd75960ef1776660fa66c10f2de 100644 |
--- a/ui/views/controls/native/native_view_host_win.cc |
+++ b/ui/views/controls/native/native_view_host_win.cc |
@@ -7,6 +7,7 @@ |
#include <oleacc.h> |
#include "base/logging.h" |
+#include "ui/base/win/dpi.h" |
#include "ui/base/win/hidden_window.h" |
#include "ui/base/win/window_impl.h" |
#include "ui/gfx/canvas.h" |
@@ -90,6 +91,8 @@ void NativeViewHostWin::ShowWidget(int x, int y, int w, int h) { |
SWP_NOCOPYBITS | |
SWP_NOOWNERZORDER | |
SWP_NOZORDER; |
+ gfx::Rect bounds = ui::win::DIPToScreenRect(gfx::Rect(x,y,w,h)); |
+ |
// Only send the SHOWWINDOW flag if we're invisible, to avoid flashing. |
if (!IsWindowVisible(host_->native_view())) |
swp_flags = (swp_flags | SWP_SHOWWINDOW) & ~SWP_NOREDRAW; |
@@ -99,12 +102,14 @@ void NativeViewHostWin::ShowWidget(int x, int y, int w, int h) { |
RECT win_rect; |
GetWindowRect(host_->native_view(), &win_rect); |
gfx::Rect rect(win_rect); |
- SetWindowPos(host_->native_view(), 0, x, y, rect.width(), rect.height(), |
+ SetWindowPos(host_->native_view(), 0, bounds.x(), bounds.y(), |
+ rect.width(), rect.height(), |
swp_flags); |
- InstallClip(0, 0, w, h); |
+ InstallClip(0, 0, bounds.width(), bounds.height()); |
} else { |
- SetWindowPos(host_->native_view(), 0, x, y, w, h, swp_flags); |
+ SetWindowPos(host_->native_view(), 0, bounds.x(), bounds.y(), |
+ bounds.width(), bounds.height(), swp_flags); |
} |
} |