| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/views/controls/native/native_view_host_win.h" | 5 #include "ui/views/controls/native/native_view_host_win.h" |
| 6 | 6 |
| 7 #include <oleacc.h> | 7 #include <oleacc.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "ui/base/win/dpi.h" |
| 10 #include "ui/base/win/hidden_window.h" | 11 #include "ui/base/win/hidden_window.h" |
| 11 #include "ui/base/win/window_impl.h" | 12 #include "ui/base/win/window_impl.h" |
| 12 #include "ui/gfx/canvas.h" | 13 #include "ui/gfx/canvas.h" |
| 13 #include "ui/views/controls/native/native_view_host.h" | 14 #include "ui/views/controls/native/native_view_host.h" |
| 14 #include "ui/views/focus/focus_manager.h" | 15 #include "ui/views/focus/focus_manager.h" |
| 15 #include "ui/views/widget/native_widget.h" | 16 #include "ui/views/widget/native_widget.h" |
| 16 #include "ui/views/widget/root_view.h" | 17 #include "ui/views/widget/root_view.h" |
| 17 #include "ui/views/widget/widget.h" | 18 #include "ui/views/widget/widget.h" |
| 18 | 19 |
| 19 namespace views { | 20 namespace views { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 SetWindowRgn(host_->native_view(), 0, TRUE); | 84 SetWindowRgn(host_->native_view(), 0, TRUE); |
| 84 installed_clip_ = false; | 85 installed_clip_ = false; |
| 85 } | 86 } |
| 86 | 87 |
| 87 void NativeViewHostWin::ShowWidget(int x, int y, int w, int h) { | 88 void NativeViewHostWin::ShowWidget(int x, int y, int w, int h) { |
| 88 UINT swp_flags = SWP_DEFERERASE | | 89 UINT swp_flags = SWP_DEFERERASE | |
| 89 SWP_NOACTIVATE | | 90 SWP_NOACTIVATE | |
| 90 SWP_NOCOPYBITS | | 91 SWP_NOCOPYBITS | |
| 91 SWP_NOOWNERZORDER | | 92 SWP_NOOWNERZORDER | |
| 92 SWP_NOZORDER; | 93 SWP_NOZORDER; |
| 94 gfx::Rect bounds = ui::win::DIPToScreenRect(gfx::Rect(x,y,w,h)); |
| 95 |
| 93 // Only send the SHOWWINDOW flag if we're invisible, to avoid flashing. | 96 // Only send the SHOWWINDOW flag if we're invisible, to avoid flashing. |
| 94 if (!IsWindowVisible(host_->native_view())) | 97 if (!IsWindowVisible(host_->native_view())) |
| 95 swp_flags = (swp_flags | SWP_SHOWWINDOW) & ~SWP_NOREDRAW; | 98 swp_flags = (swp_flags | SWP_SHOWWINDOW) & ~SWP_NOREDRAW; |
| 96 | 99 |
| 97 if (host_->fast_resize()) { | 100 if (host_->fast_resize()) { |
| 98 // In a fast resize, we move the window and clip it with SetWindowRgn. | 101 // In a fast resize, we move the window and clip it with SetWindowRgn. |
| 99 RECT win_rect; | 102 RECT win_rect; |
| 100 GetWindowRect(host_->native_view(), &win_rect); | 103 GetWindowRect(host_->native_view(), &win_rect); |
| 101 gfx::Rect rect(win_rect); | 104 gfx::Rect rect(win_rect); |
| 102 SetWindowPos(host_->native_view(), 0, x, y, rect.width(), rect.height(), | 105 SetWindowPos(host_->native_view(), 0, bounds.x(), bounds.y(), |
| 106 rect.width(), rect.height(), |
| 103 swp_flags); | 107 swp_flags); |
| 104 | 108 |
| 105 InstallClip(0, 0, w, h); | 109 InstallClip(0, 0, bounds.width(), bounds.height()); |
| 106 } else { | 110 } else { |
| 107 SetWindowPos(host_->native_view(), 0, x, y, w, h, swp_flags); | 111 SetWindowPos(host_->native_view(), 0, bounds.x(), bounds.y(), |
| 112 bounds.width(), bounds.height(), swp_flags); |
| 108 } | 113 } |
| 109 } | 114 } |
| 110 | 115 |
| 111 void NativeViewHostWin::HideWidget() { | 116 void NativeViewHostWin::HideWidget() { |
| 112 if (!IsWindowVisible(host_->native_view())) | 117 if (!IsWindowVisible(host_->native_view())) |
| 113 return; // Currently not visible, nothing to do. | 118 return; // Currently not visible, nothing to do. |
| 114 | 119 |
| 115 // The window is currently visible, but its clipped by another view. Hide | 120 // The window is currently visible, but its clipped by another view. Hide |
| 116 // it. | 121 // it. |
| 117 SetWindowPos(host_->native_view(), 0, 0, 0, 0, 0, | 122 SetWindowPos(host_->native_view(), 0, 0, 0, 0, 0, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 143 //////////////////////////////////////////////////////////////////////////////// | 148 //////////////////////////////////////////////////////////////////////////////// |
| 144 // NativeViewHostWrapper, public: | 149 // NativeViewHostWrapper, public: |
| 145 | 150 |
| 146 // static | 151 // static |
| 147 NativeViewHostWrapper* NativeViewHostWrapper::CreateWrapper( | 152 NativeViewHostWrapper* NativeViewHostWrapper::CreateWrapper( |
| 148 NativeViewHost* host) { | 153 NativeViewHost* host) { |
| 149 return new NativeViewHostWin(host); | 154 return new NativeViewHostWin(host); |
| 150 } | 155 } |
| 151 | 156 |
| 152 } // namespace views | 157 } // namespace views |
| OLD | NEW |