| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "views/widget/widget_win.h" | 5 #include "views/widget/widget_win.h" | 
| 6 | 6 | 
| 7 #include <dwmapi.h> | 7 #include <dwmapi.h> | 
| 8 | 8 | 
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" | 
| 10 #include "base/win/windows_version.h" | 10 #include "base/win/windows_version.h" | 
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 557 | 557 | 
| 558   // We need to add ourselves as a message loop observer so that we can repaint | 558   // We need to add ourselves as a message loop observer so that we can repaint | 
| 559   // aggressively if the contents of our window become invalid. Unfortunately | 559   // aggressively if the contents of our window become invalid. Unfortunately | 
| 560   // WM_PAINT messages are starved and we get flickery redrawing when resizing | 560   // WM_PAINT messages are starved and we get flickery redrawing when resizing | 
| 561   // if we do not do this. | 561   // if we do not do this. | 
| 562   MessageLoopForUI::current()->AddObserver(this); | 562   MessageLoopForUI::current()->AddObserver(this); | 
| 563 | 563 | 
| 564   // Windows special DWM window frame requires a special tooltip manager so | 564   // Windows special DWM window frame requires a special tooltip manager so | 
| 565   // that window controls in Chrome windows don't flicker when you move your | 565   // that window controls in Chrome windows don't flicker when you move your | 
| 566   // mouse over them. See comment in aero_tooltip_manager.h. | 566   // mouse over them. See comment in aero_tooltip_manager.h. | 
| 567   Window* window = GetWidget()->GetContainingWindow(); | 567   if (GetWidget()->GetThemeProvider()->ShouldUseNativeFrame()) { | 
| 568   if (window && window->ShouldUseNativeFrame()) { |  | 
| 569     tooltip_manager_.reset(new AeroTooltipManager(GetWidget())); | 568     tooltip_manager_.reset(new AeroTooltipManager(GetWidget())); | 
| 570   } else { | 569   } else { | 
| 571     tooltip_manager_.reset(new TooltipManagerWin(GetWidget())); | 570     tooltip_manager_.reset(new TooltipManagerWin(GetWidget())); | 
| 572   } | 571   } | 
| 573 | 572 | 
| 574   // This message initializes the window so that focus border are shown for | 573   // This message initializes the window so that focus border are shown for | 
| 575   // windows. | 574   // windows. | 
| 576   SendMessage( | 575   SendMessage( | 
| 577       hwnd(), WM_CHANGEUISTATE, MAKELPARAM(UIS_CLEAR, UISF_HIDEFOCUS), 0); | 576       hwnd(), WM_CHANGEUISTATE, MAKELPARAM(UIS_CLEAR, UISF_HIDEFOCUS), 0); | 
| 578 | 577 | 
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1100   POINT zero = {0, 0}; | 1099   POINT zero = {0, 0}; | 
| 1101   BLENDFUNCTION blend = {AC_SRC_OVER, 0, layered_alpha_, AC_SRC_ALPHA}; | 1100   BLENDFUNCTION blend = {AC_SRC_OVER, 0, layered_alpha_, AC_SRC_ALPHA}; | 
| 1102   UpdateLayeredWindow(hwnd(), NULL, &position, &size, dib_dc, &zero, | 1101   UpdateLayeredWindow(hwnd(), NULL, &position, &size, dib_dc, &zero, | 
| 1103                       RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); | 1102                       RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); | 
| 1104   layered_window_invalid_rect_.SetRect(0, 0, 0, 0); | 1103   layered_window_invalid_rect_.SetRect(0, 0, 0, 0); | 
| 1105   layered_window_contents_->endPlatformPaint(); | 1104   layered_window_contents_->endPlatformPaint(); | 
| 1106 } | 1105 } | 
| 1107 | 1106 | 
| 1108 void WidgetWin::ClientAreaSizeChanged() { | 1107 void WidgetWin::ClientAreaSizeChanged() { | 
| 1109   RECT r; | 1108   RECT r; | 
| 1110   Window* window = GetWidget()->GetContainingWindow(); | 1109   if (GetWidget()->GetThemeProvider()->ShouldUseNativeFrame() || IsZoomed()) | 
| 1111   if (IsZoomed() || (window && window->ShouldUseNativeFrame())) |  | 
| 1112     GetClientRect(&r); | 1110     GetClientRect(&r); | 
| 1113   else | 1111   else | 
| 1114     GetWindowRect(&r); | 1112     GetWindowRect(&r); | 
| 1115   gfx::Size s(std::max(0, static_cast<int>(r.right - r.left)), | 1113   gfx::Size s(std::max(0, static_cast<int>(r.right - r.left)), | 
| 1116               std::max(0, static_cast<int>(r.bottom - r.top))); | 1114               std::max(0, static_cast<int>(r.bottom - r.top))); | 
| 1117   delegate_->OnSizeChanged(s); | 1115   delegate_->OnSizeChanged(s); | 
| 1118   if (use_layered_buffer_) { | 1116   if (use_layered_buffer_) { | 
| 1119     layered_window_contents_.reset( | 1117     layered_window_contents_.reset( | 
| 1120         new gfx::CanvasSkia(s.width(), s.height(), false)); | 1118         new gfx::CanvasSkia(s.width(), s.height(), false)); | 
| 1121   } | 1119   } | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1269 | 1267 | 
| 1270   // And now, notify them that they have a brand new parent. | 1268   // And now, notify them that they have a brand new parent. | 
| 1271   for (NativeWidgets::iterator it = widgets.begin(); | 1269   for (NativeWidgets::iterator it = widgets.begin(); | 
| 1272        it != widgets.end(); ++it) { | 1270        it != widgets.end(); ++it) { | 
| 1273     (*it)->GetWidget()->NotifyNativeViewHierarchyChanged(true, | 1271     (*it)->GetWidget()->NotifyNativeViewHierarchyChanged(true, | 
| 1274                                                          new_parent); | 1272                                                          new_parent); | 
| 1275   } | 1273   } | 
| 1276 } | 1274 } | 
| 1277 | 1275 | 
| 1278 }  // namespace views | 1276 }  // namespace views | 
| OLD | NEW | 
|---|