Index: ui/views/win/hwnd_message_handler.cc |
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc |
index 60a7dc2193cdf5ee5463cb2bd0762d07833c596d..ce3c08bcc58ac2e18ae5b2f32f1b6eac22a9ec3a 100644 |
--- a/ui/views/win/hwnd_message_handler.cc |
+++ b/ui/views/win/hwnd_message_handler.cc |
@@ -497,6 +497,14 @@ gfx::Rect HWNDMessageHandler::GetRestoredBounds() const { |
return bounds; |
} |
+gfx::Rect HWNDMessageHandler::GetClientAreaBounds() const { |
+ if (IsMinimized()) |
+ return gfx::Rect(); |
+ if (delegate_->WidgetSizeIsClientSize()) |
+ return GetClientAreaBoundsInScreen(); |
+ return GetWindowBoundsInScreen(); |
+} |
+ |
void HWNDMessageHandler::GetWindowPlacement( |
gfx::Rect* bounds, |
ui::WindowShowState* show_state) const { |
@@ -1071,17 +1079,7 @@ void HWNDMessageHandler::TrackMouseEvents(DWORD mouse_tracking_flags) { |
} |
void HWNDMessageHandler::ClientAreaSizeChanged() { |
- RECT r = {0, 0, 0, 0}; |
- // In case of minimized window GetWindowRect can return normally unexpected |
- // coordinates. |
- if (!IsMinimized()) { |
- if (delegate_->WidgetSizeIsClientSize()) |
- GetClientRect(hwnd(), &r); |
- else |
- GetWindowRect(hwnd(), &r); |
- } |
- gfx::Size s(std::max(0, static_cast<int>(r.right - r.left)), |
- std::max(0, static_cast<int>(r.bottom - r.top))); |
+ gfx::Size s = GetClientAreaBounds().size(); |
delegate_->HandleClientSizeChanged(s); |
if (use_layered_buffer_) |
layered_window_contents_.reset(new gfx::Canvas(s, 1.0f, false)); |