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/widget/widget.h" | 5 #include "ui/views/widget/widget.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 Widget* widget_; | 104 Widget* widget_; |
105 | 105 |
106 DISALLOW_COPY_AND_ASSIGN(DefaultWidgetDelegate); | 106 DISALLOW_COPY_AND_ASSIGN(DefaultWidgetDelegate); |
107 }; | 107 }; |
108 | 108 |
109 //////////////////////////////////////////////////////////////////////////////// | 109 //////////////////////////////////////////////////////////////////////////////// |
110 // Widget, InitParams: | 110 // Widget, InitParams: |
111 | 111 |
112 Widget::InitParams::InitParams() | 112 Widget::InitParams::InitParams() |
113 : type(TYPE_WINDOW), | 113 : type(TYPE_WINDOW), |
114 delegate(NULL), | 114 delegate(nullptr), |
115 child(false), | 115 child(false), |
116 opacity(INFER_OPACITY), | 116 opacity(INFER_OPACITY), |
117 accept_events(true), | 117 accept_events(true), |
118 activatable(ACTIVATABLE_DEFAULT), | 118 activatable(ACTIVATABLE_DEFAULT), |
119 keep_on_top(false), | 119 keep_on_top(false), |
120 visible_on_all_workspaces(false), | 120 visible_on_all_workspaces(false), |
121 ownership(NATIVE_WIDGET_OWNS_WIDGET), | 121 ownership(NATIVE_WIDGET_OWNS_WIDGET), |
122 mirror_origin_in_rtl(false), | 122 mirror_origin_in_rtl(false), |
123 shadow_type(SHADOW_TYPE_DEFAULT), | 123 shadow_type(SHADOW_TYPE_DEFAULT), |
124 remove_standard_frame(false), | 124 remove_standard_frame(false), |
125 use_system_default_icon(false), | 125 use_system_default_icon(false), |
126 show_state(ui::SHOW_STATE_DEFAULT), | 126 show_state(ui::SHOW_STATE_DEFAULT), |
127 parent(NULL), | 127 parent(nullptr), |
128 native_widget(NULL), | 128 native_widget(nullptr), |
129 desktop_window_tree_host(NULL), | 129 native_theme(nullptr), |
| 130 desktop_window_tree_host(nullptr), |
130 layer_type(ui::LAYER_TEXTURED), | 131 layer_type(ui::LAYER_TEXTURED), |
131 context(NULL), | 132 context(nullptr), |
132 force_show_in_taskbar(false), | 133 force_show_in_taskbar(false), |
133 force_software_compositing(false) { | 134 force_software_compositing(false) { |
134 } | 135 } |
135 | 136 |
136 Widget::InitParams::InitParams(Type type) | 137 Widget::InitParams::InitParams(Type type) |
137 : type(type), | 138 : type(type), |
138 delegate(NULL), | 139 delegate(nullptr), |
139 child(false), | 140 child(false), |
140 opacity(INFER_OPACITY), | 141 opacity(INFER_OPACITY), |
141 accept_events(true), | 142 accept_events(true), |
142 activatable(ACTIVATABLE_DEFAULT), | 143 activatable(ACTIVATABLE_DEFAULT), |
143 keep_on_top(type == TYPE_MENU || type == TYPE_DRAG), | 144 keep_on_top(type == TYPE_MENU || type == TYPE_DRAG), |
144 visible_on_all_workspaces(false), | 145 visible_on_all_workspaces(false), |
145 ownership(NATIVE_WIDGET_OWNS_WIDGET), | 146 ownership(NATIVE_WIDGET_OWNS_WIDGET), |
146 mirror_origin_in_rtl(false), | 147 mirror_origin_in_rtl(false), |
147 shadow_type(SHADOW_TYPE_DEFAULT), | 148 shadow_type(SHADOW_TYPE_DEFAULT), |
148 remove_standard_frame(false), | 149 remove_standard_frame(false), |
149 use_system_default_icon(false), | 150 use_system_default_icon(false), |
150 show_state(ui::SHOW_STATE_DEFAULT), | 151 show_state(ui::SHOW_STATE_DEFAULT), |
151 parent(NULL), | 152 parent(nullptr), |
152 native_widget(NULL), | 153 native_widget(nullptr), |
153 desktop_window_tree_host(NULL), | 154 native_theme(nullptr), |
| 155 desktop_window_tree_host(nullptr), |
154 layer_type(ui::LAYER_TEXTURED), | 156 layer_type(ui::LAYER_TEXTURED), |
155 context(NULL), | 157 context(nullptr), |
156 force_show_in_taskbar(false), | 158 force_show_in_taskbar(false), |
157 force_software_compositing(false) { | 159 force_software_compositing(false) { |
158 } | 160 } |
159 | 161 |
160 Widget::InitParams::~InitParams() { | 162 Widget::InitParams::~InitParams() { |
161 } | 163 } |
162 | 164 |
163 //////////////////////////////////////////////////////////////////////////////// | 165 //////////////////////////////////////////////////////////////////////////////// |
164 // Widget, public: | 166 // Widget, public: |
165 | 167 |
166 Widget::Widget() | 168 Widget::Widget() |
167 : native_widget_(NULL), | 169 : native_widget_(nullptr), |
168 widget_delegate_(NULL), | 170 native_theme_(nullptr), |
169 non_client_view_(NULL), | 171 widget_delegate_(nullptr), |
170 dragged_view_(NULL), | 172 non_client_view_(nullptr), |
| 173 dragged_view_(nullptr), |
171 ownership_(InitParams::NATIVE_WIDGET_OWNS_WIDGET), | 174 ownership_(InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
172 is_secondary_widget_(true), | 175 is_secondary_widget_(true), |
173 frame_type_(FRAME_TYPE_DEFAULT), | 176 frame_type_(FRAME_TYPE_DEFAULT), |
174 disable_inactive_rendering_(false), | 177 disable_inactive_rendering_(false), |
175 widget_closed_(false), | 178 widget_closed_(false), |
176 saved_show_state_(ui::SHOW_STATE_DEFAULT), | 179 saved_show_state_(ui::SHOW_STATE_DEFAULT), |
177 focus_on_creation_(true), | 180 focus_on_creation_(true), |
178 is_top_level_(false), | 181 is_top_level_(false), |
179 native_widget_initialized_(false), | 182 native_widget_initialized_(false), |
180 native_widget_destroyed_(false), | 183 native_widget_destroyed_(false), |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 | 361 |
359 ownership_ = params.ownership; | 362 ownership_ = params.ownership; |
360 native_widget_ = CreateNativeWidget(params, this)->AsNativeWidgetPrivate(); | 363 native_widget_ = CreateNativeWidget(params, this)->AsNativeWidgetPrivate(); |
361 root_view_.reset(CreateRootView()); | 364 root_view_.reset(CreateRootView()); |
362 default_theme_provider_.reset(new ui::DefaultThemeProvider); | 365 default_theme_provider_.reset(new ui::DefaultThemeProvider); |
363 if (params.type == InitParams::TYPE_MENU) { | 366 if (params.type == InitParams::TYPE_MENU) { |
364 is_mouse_button_pressed_ = | 367 is_mouse_button_pressed_ = |
365 internal::NativeWidgetPrivate::IsMouseButtonDown(); | 368 internal::NativeWidgetPrivate::IsMouseButtonDown(); |
366 } | 369 } |
367 native_widget_->InitNativeWidget(params); | 370 native_widget_->InitNativeWidget(params); |
| 371 native_theme_ = params.native_theme; |
368 if (RequiresNonClientView(params.type)) { | 372 if (RequiresNonClientView(params.type)) { |
369 non_client_view_ = new NonClientView; | 373 non_client_view_ = new NonClientView; |
370 non_client_view_->SetFrameView(CreateNonClientFrameView()); | 374 non_client_view_->SetFrameView(CreateNonClientFrameView()); |
371 // Create the ClientView, add it to the NonClientView and add the | 375 // Create the ClientView, add it to the NonClientView and add the |
372 // NonClientView to the RootView. This will cause everything to be parented. | 376 // NonClientView to the RootView. This will cause everything to be parented. |
373 non_client_view_->set_client_view(widget_delegate_->CreateClientView(this)); | 377 non_client_view_->set_client_view(widget_delegate_->CreateClientView(this)); |
374 non_client_view_->SetOverlayView(widget_delegate_->CreateOverlayView()); | 378 non_client_view_->SetOverlayView(widget_delegate_->CreateOverlayView()); |
375 SetContentsView(non_client_view_); | 379 SetContentsView(non_client_view_); |
376 // Initialize the window's icon and title before setting the window's | 380 // Initialize the window's icon and title before setting the window's |
377 // initial bounds; the frame view's preferred height may depend on the | 381 // initial bounds; the frame view's preferred height may depend on the |
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 return provider; | 763 return provider; |
760 | 764 |
761 provider = root_widget->default_theme_provider_.get(); | 765 provider = root_widget->default_theme_provider_.get(); |
762 if (provider) | 766 if (provider) |
763 return provider; | 767 return provider; |
764 } | 768 } |
765 return default_theme_provider_.get(); | 769 return default_theme_provider_.get(); |
766 } | 770 } |
767 | 771 |
768 const ui::NativeTheme* Widget::GetNativeTheme() const { | 772 const ui::NativeTheme* Widget::GetNativeTheme() const { |
769 return native_widget_->GetNativeTheme(); | 773 return native_theme_? native_theme_ : native_widget_->GetNativeTheme(); |
770 } | 774 } |
771 | 775 |
772 FocusManager* Widget::GetFocusManager() { | 776 FocusManager* Widget::GetFocusManager() { |
773 Widget* toplevel_widget = GetTopLevelWidget(); | 777 Widget* toplevel_widget = GetTopLevelWidget(); |
774 return toplevel_widget ? toplevel_widget->focus_manager_.get() : NULL; | 778 return toplevel_widget ? toplevel_widget->focus_manager_.get() : NULL; |
775 } | 779 } |
776 | 780 |
777 const FocusManager* Widget::GetFocusManager() const { | 781 const FocusManager* Widget::GetFocusManager() const { |
778 const Widget* toplevel_widget = GetTopLevelWidget(); | 782 const Widget* toplevel_widget = GetTopLevelWidget(); |
779 return toplevel_widget ? toplevel_widget->focus_manager_.get() : NULL; | 783 return toplevel_widget ? toplevel_widget->focus_manager_.get() : NULL; |
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1498 | 1502 |
1499 //////////////////////////////////////////////////////////////////////////////// | 1503 //////////////////////////////////////////////////////////////////////////////// |
1500 // internal::NativeWidgetPrivate, NativeWidget implementation: | 1504 // internal::NativeWidgetPrivate, NativeWidget implementation: |
1501 | 1505 |
1502 internal::NativeWidgetPrivate* NativeWidgetPrivate::AsNativeWidgetPrivate() { | 1506 internal::NativeWidgetPrivate* NativeWidgetPrivate::AsNativeWidgetPrivate() { |
1503 return this; | 1507 return this; |
1504 } | 1508 } |
1505 | 1509 |
1506 } // namespace internal | 1510 } // namespace internal |
1507 } // namespace views | 1511 } // namespace views |
OLD | NEW |