| 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/native_widget_win.h" | 5 #include "views/widget/native_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/system_monitor/system_monitor.h" | 10 #include "base/system_monitor/system_monitor.h" |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 //////////////////////////////////////////////////////////////////////////////// | 132 //////////////////////////////////////////////////////////////////////////////// |
| 133 // NativeWidgetWin, public: | 133 // NativeWidgetWin, public: |
| 134 | 134 |
| 135 NativeWidgetWin::NativeWidgetWin(internal::NativeWidgetDelegate* delegate) | 135 NativeWidgetWin::NativeWidgetWin(internal::NativeWidgetDelegate* delegate) |
| 136 : delegate_(delegate), | 136 : delegate_(delegate), |
| 137 close_widget_factory_(this), | 137 close_widget_factory_(this), |
| 138 active_mouse_tracking_flags_(0), | 138 active_mouse_tracking_flags_(0), |
| 139 use_layered_buffer_(false), | 139 use_layered_buffer_(false), |
| 140 layered_alpha_(255), | 140 layered_alpha_(255), |
| 141 ALLOW_THIS_IN_INITIALIZER_LIST(paint_layered_window_factory_(this)), | 141 ALLOW_THIS_IN_INITIALIZER_LIST(paint_layered_window_factory_(this)), |
| 142 delete_on_destroy_(true), | 142 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
| 143 can_update_layered_window_(true), | 143 can_update_layered_window_(true), |
| 144 is_window_(false), | 144 is_window_(false), |
| 145 restore_focus_when_enabled_(false), | 145 restore_focus_when_enabled_(false), |
| 146 accessibility_view_events_index_(-1), | 146 accessibility_view_events_index_(-1), |
| 147 accessibility_view_events_(kMaxAccessibilityViewEvents), | 147 accessibility_view_events_(kMaxAccessibilityViewEvents), |
| 148 previous_cursor_(NULL), | 148 previous_cursor_(NULL), |
| 149 is_input_method_win_(false) { | 149 is_input_method_win_(false) { |
| 150 } | 150 } |
| 151 | 151 |
| 152 NativeWidgetWin::~NativeWidgetWin() { | 152 NativeWidgetWin::~NativeWidgetWin() { |
| 153 // We need to delete the input method before calling DestroyRootView(), | 153 // We need to delete the input method before calling DestroyRootView(), |
| 154 // because it'll set focus_manager_ to NULL. | 154 // because it'll set focus_manager_ to NULL. |
| 155 input_method_.reset(); | 155 input_method_.reset(); |
| 156 if (delete_on_destroy_) | 156 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) |
| 157 delete delegate_; | 157 delete delegate_; |
| 158 } | 158 } |
| 159 | 159 |
| 160 // static | 160 // static |
| 161 bool NativeWidgetWin::IsAeroGlassEnabled() { | 161 bool NativeWidgetWin::IsAeroGlassEnabled() { |
| 162 if (base::win::GetVersion() < base::win::VERSION_VISTA) | 162 if (base::win::GetVersion() < base::win::VERSION_VISTA) |
| 163 return false; | 163 return false; |
| 164 // If composition is not enabled, we behave like on XP. | 164 // If composition is not enabled, we behave like on XP. |
| 165 BOOL enabled = FALSE; | 165 BOOL enabled = FALSE; |
| 166 return SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled; | 166 return SUCCEEDED(DwmIsCompositionEnabled(&enabled)) && enabled; |
| (...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 SetMsgHandled(FALSE); | 947 SetMsgHandled(FALSE); |
| 948 } | 948 } |
| 949 | 949 |
| 950 void NativeWidgetWin::OnWindowPosChanged(WINDOWPOS* window_pos) { | 950 void NativeWidgetWin::OnWindowPosChanged(WINDOWPOS* window_pos) { |
| 951 if (DidClientAreaSizeChange(window_pos)) | 951 if (DidClientAreaSizeChange(window_pos)) |
| 952 ClientAreaSizeChanged(); | 952 ClientAreaSizeChanged(); |
| 953 SetMsgHandled(FALSE); | 953 SetMsgHandled(FALSE); |
| 954 } | 954 } |
| 955 | 955 |
| 956 void NativeWidgetWin::OnFinalMessage(HWND window) { | 956 void NativeWidgetWin::OnFinalMessage(HWND window) { |
| 957 if (delete_on_destroy_) | 957 if (ownership_ == Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET) |
| 958 delete this; | 958 delete this; |
| 959 } | 959 } |
| 960 | 960 |
| 961 //////////////////////////////////////////////////////////////////////////////// | 961 //////////////////////////////////////////////////////////////////////////////// |
| 962 // NativeWidgetWin, protected: | 962 // NativeWidgetWin, protected: |
| 963 | 963 |
| 964 void NativeWidgetWin::TrackMouseEvents(DWORD mouse_tracking_flags) { | 964 void NativeWidgetWin::TrackMouseEvents(DWORD mouse_tracking_flags) { |
| 965 // Begin tracking mouse events for this HWND so that we get WM_MOUSELEAVE | 965 // Begin tracking mouse events for this HWND so that we get WM_MOUSELEAVE |
| 966 // when the user moves the mouse outside this HWND's bounds. | 966 // when the user moves the mouse outside this HWND's bounds. |
| 967 if (active_mouse_tracking_flags_ == 0 || mouse_tracking_flags & TME_CANCEL) { | 967 if (active_mouse_tracking_flags_ == 0 || mouse_tracking_flags & TME_CANCEL) { |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1041 DCHECK(!widget->restore_focus_when_enabled_); | 1041 DCHECK(!widget->restore_focus_when_enabled_); |
| 1042 widget->restore_focus_when_enabled_ = true; | 1042 widget->restore_focus_when_enabled_ = true; |
| 1043 return; | 1043 return; |
| 1044 } | 1044 } |
| 1045 focus_manager->RestoreFocusedView(); | 1045 focus_manager->RestoreFocusedView(); |
| 1046 } | 1046 } |
| 1047 } | 1047 } |
| 1048 | 1048 |
| 1049 void NativeWidgetWin::SetInitParams(const Widget::InitParams& params) { | 1049 void NativeWidgetWin::SetInitParams(const Widget::InitParams& params) { |
| 1050 // Set non-style attributes. | 1050 // Set non-style attributes. |
| 1051 delete_on_destroy_ = params.delete_on_destroy; | 1051 ownership_ = params.ownership; |
| 1052 | 1052 |
| 1053 DWORD style = WS_CLIPCHILDREN | WS_CLIPSIBLINGS; | 1053 DWORD style = WS_CLIPCHILDREN | WS_CLIPSIBLINGS; |
| 1054 DWORD ex_style = 0; | 1054 DWORD ex_style = 0; |
| 1055 DWORD class_style = CS_DBLCLKS; | 1055 DWORD class_style = CS_DBLCLKS; |
| 1056 | 1056 |
| 1057 // Set type-independent style attributes. | 1057 // Set type-independent style attributes. |
| 1058 if (params.child) | 1058 if (params.child) |
| 1059 style |= WS_CHILD | WS_VISIBLE; | 1059 style |= WS_CHILD | WS_VISIBLE; |
| 1060 if (!params.accept_events) | 1060 if (!params.accept_events) |
| 1061 ex_style |= WS_EX_TRANSPARENT; | 1061 ex_style |= WS_EX_TRANSPARENT; |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1296 | 1296 |
| 1297 // And now, notify them that they have a brand new parent. | 1297 // And now, notify them that they have a brand new parent. |
| 1298 for (NativeWidgets::iterator it = widgets.begin(); | 1298 for (NativeWidgets::iterator it = widgets.begin(); |
| 1299 it != widgets.end(); ++it) { | 1299 it != widgets.end(); ++it) { |
| 1300 (*it)->GetWidget()->NotifyNativeViewHierarchyChanged(true, | 1300 (*it)->GetWidget()->NotifyNativeViewHierarchyChanged(true, |
| 1301 new_parent); | 1301 new_parent); |
| 1302 } | 1302 } |
| 1303 } | 1303 } |
| 1304 | 1304 |
| 1305 } // namespace views | 1305 } // namespace views |
| OLD | NEW |