OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef COMPONENTS_EXO_SHELL_SURFACE_H_ | 5 #ifndef COMPONENTS_EXO_SHELL_SURFACE_H_ |
6 #define COMPONENTS_EXO_SHELL_SURFACE_H_ | 6 #define COMPONENTS_EXO_SHELL_SURFACE_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <memory> | 9 #include <memory> |
10 #include <string> | 10 #include <string> |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
44 public views::View, | 44 public views::View, |
45 public ash::wm::WindowStateObserver, | 45 public ash::wm::WindowStateObserver, |
46 public aura::WindowObserver, | 46 public aura::WindowObserver, |
47 public WMHelper::ActivationObserver, | 47 public WMHelper::ActivationObserver, |
48 public WMHelper::AccessibilityObserver { | 48 public WMHelper::AccessibilityObserver { |
49 public: | 49 public: |
50 ShellSurface(Surface* surface, | 50 ShellSurface(Surface* surface, |
51 ShellSurface* parent, | 51 ShellSurface* parent, |
52 const gfx::Rect& initial_bounds, | 52 const gfx::Rect& initial_bounds, |
53 bool activatable, | 53 bool activatable, |
54 bool can_minimize, | |
Daniele Castagna
2016/12/08 20:19:13
nit: Should this be minimizable to stay consistent
reveman
2016/12/11 07:14:04
The name is chosen based on the window state or wi
| |
54 int container); | 55 int container); |
55 explicit ShellSurface(Surface* surface); | 56 explicit ShellSurface(Surface* surface); |
56 ~ShellSurface() override; | 57 ~ShellSurface() override; |
57 | 58 |
58 // Set the callback to run when the user wants the shell surface to be closed. | 59 // Set the callback to run when the user wants the shell surface to be closed. |
59 // The receiver can chose to not close the window on this signal. | 60 // The receiver can chose to not close the window on this signal. |
60 void set_close_callback(const base::Closure& close_callback) { | 61 void set_close_callback(const base::Closure& close_callback) { |
61 close_callback_ = close_callback; | 62 close_callback_ = close_callback; |
62 } | 63 } |
63 | 64 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
139 void Resize(int component); | 140 void Resize(int component); |
140 | 141 |
141 // Signal a request to close the window. It is up to the implementation to | 142 // Signal a request to close the window. It is up to the implementation to |
142 // actually decide to do so though. | 143 // actually decide to do so though. |
143 void Close(); | 144 void Close(); |
144 | 145 |
145 // Set geometry for surface. The geometry represents the "visible bounds" | 146 // Set geometry for surface. The geometry represents the "visible bounds" |
146 // for the surface from the user's perspective. | 147 // for the surface from the user's perspective. |
147 void SetGeometry(const gfx::Rect& geometry); | 148 void SetGeometry(const gfx::Rect& geometry); |
148 | 149 |
149 // Set the content bounds for the shadow. Empty bounds will delete | 150 // Enable/disable rectangular shadow. |
150 // the shadow. | 151 void SetRectangularShadow(bool enabled); |
151 void SetRectangularShadow(const gfx::Rect& content_bounds); | 152 |
153 // Set the content bounds for the shadow. Shell surface geometry will be | |
154 // used if bounds are empty. | |
155 void SetRectangularShadowContentBounds(const gfx::Rect& content_bounds); | |
152 | 156 |
153 // Set the pacity of the background for the window that has a shadow. | 157 // Set the pacity of the background for the window that has a shadow. |
154 void SetRectangularShadowBackgroundOpacity(float opacity); | 158 void SetRectangularShadowBackgroundOpacity(float opacity); |
155 | 159 |
160 // Enable/disable window frame. | |
161 void SetFrame(bool enabled); | |
162 | |
156 // Set scale factor for surface. The scale factor will be applied to surface | 163 // Set scale factor for surface. The scale factor will be applied to surface |
157 // and all descendants. | 164 // and all descendants. |
158 void SetScale(double scale); | 165 void SetScale(double scale); |
159 | 166 |
160 // Set top inset for surface. | 167 // Set top inset for surface. |
161 void SetTopInset(int height); | 168 void SetTopInset(int height); |
162 | 169 |
163 // Set origin in screen coordinate space. | 170 // Set origin in screen coordinate space. |
164 void SetOrigin(const gfx::Point& origin); | 171 void SetOrigin(const gfx::Point& origin); |
165 | 172 |
166 // Set activatable state for surface. | 173 // Set container for surface. |
167 void SetActivatable(bool activatable); | 174 void SetContainer(int container); |
168 | 175 |
169 // Sets the main surface for the window. | 176 // Sets the main surface for the window. |
170 static void SetMainSurface(aura::Window* window, Surface* surface); | 177 static void SetMainSurface(aura::Window* window, Surface* surface); |
171 | 178 |
172 // Returns the main Surface instance or nullptr if it is not set. | 179 // Returns the main Surface instance or nullptr if it is not set. |
173 // |window| must not be nullptr. | 180 // |window| must not be nullptr. |
174 static Surface* GetMainSurface(const aura::Window* window); | 181 static Surface* GetMainSurface(const aura::Window* window); |
175 | 182 |
176 // Returns a trace value representing the state of the surface. | 183 // Returns a trace value representing the state of the surface. |
177 std::unique_ptr<base::trace_event::TracedValue> AsTracedValue() const; | 184 std::unique_ptr<base::trace_event::TracedValue> AsTracedValue() const; |
(...skipping 14 matching lines...) Expand all Loading... | |
192 views::Widget* GetWidget() override; | 199 views::Widget* GetWidget() override; |
193 const views::Widget* GetWidget() const override; | 200 const views::Widget* GetWidget() const override; |
194 views::View* GetContentsView() override; | 201 views::View* GetContentsView() override; |
195 views::NonClientFrameView* CreateNonClientFrameView( | 202 views::NonClientFrameView* CreateNonClientFrameView( |
196 views::Widget* widget) override; | 203 views::Widget* widget) override; |
197 bool WidgetHasHitTestMask() const override; | 204 bool WidgetHasHitTestMask() const override; |
198 void GetWidgetHitTestMask(gfx::Path* mask) const override; | 205 void GetWidgetHitTestMask(gfx::Path* mask) const override; |
199 | 206 |
200 // Overridden from views::View: | 207 // Overridden from views::View: |
201 gfx::Size GetPreferredSize() const override; | 208 gfx::Size GetPreferredSize() const override; |
209 gfx::Size GetMinimumSize() const override; | |
202 | 210 |
203 // Overridden from ash::wm::WindowStateObserver: | 211 // Overridden from ash::wm::WindowStateObserver: |
204 void OnPreWindowStateTypeChange(ash::wm::WindowState* window_state, | 212 void OnPreWindowStateTypeChange(ash::wm::WindowState* window_state, |
205 ash::wm::WindowStateType old_type) override; | 213 ash::wm::WindowStateType old_type) override; |
206 void OnPostWindowStateTypeChange(ash::wm::WindowState* window_state, | 214 void OnPostWindowStateTypeChange(ash::wm::WindowState* window_state, |
207 ash::wm::WindowStateType old_type) override; | 215 ash::wm::WindowStateType old_type) override; |
208 | 216 |
209 // Overridden from aura::WindowObserver: | 217 // Overridden from aura::WindowObserver: |
210 void OnWindowBoundsChanged(aura::Window* window, | 218 void OnWindowBoundsChanged(aura::Window* window, |
211 const gfx::Rect& old_bounds, | 219 const gfx::Rect& old_bounds, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
269 | 277 |
270 // Creates, deletes and update the shadow bounds based on | 278 // Creates, deletes and update the shadow bounds based on |
271 // |pending_shadow_content_bounds_|. | 279 // |pending_shadow_content_bounds_|. |
272 void UpdateShadow(); | 280 void UpdateShadow(); |
273 | 281 |
274 views::Widget* widget_ = nullptr; | 282 views::Widget* widget_ = nullptr; |
275 Surface* surface_; | 283 Surface* surface_; |
276 aura::Window* parent_; | 284 aura::Window* parent_; |
277 gfx::Rect initial_bounds_; | 285 gfx::Rect initial_bounds_; |
278 bool activatable_ = true; | 286 bool activatable_ = true; |
287 const bool can_minimize_; | |
Daniele Castagna
2016/12/08 20:19:13
nit: use an adjective instead?
reveman
2016/12/11 07:14:04
some reply as above
| |
279 // Container Window Id (see ash/public/cpp/shell_window_ids.h) | 288 // Container Window Id (see ash/public/cpp/shell_window_ids.h) |
280 const int container_; | 289 int container_; |
290 bool frame_enabled_ = false; | |
291 bool shadow_enabled_ = false; | |
281 bool pending_show_widget_ = false; | 292 bool pending_show_widget_ = false; |
282 base::string16 title_; | 293 base::string16 title_; |
283 std::string application_id_; | 294 std::string application_id_; |
284 gfx::Rect geometry_; | 295 gfx::Rect geometry_; |
285 gfx::Rect pending_geometry_; | 296 gfx::Rect pending_geometry_; |
286 double scale_ = 1.0; | 297 double scale_ = 1.0; |
287 double pending_scale_ = 1.0; | 298 double pending_scale_ = 1.0; |
288 base::Closure close_callback_; | 299 base::Closure close_callback_; |
289 base::Closure surface_destroyed_callback_; | 300 base::Closure surface_destroyed_callback_; |
290 StateChangedCallback state_changed_callback_; | 301 StateChangedCallback state_changed_callback_; |
291 ConfigureCallback configure_callback_; | 302 ConfigureCallback configure_callback_; |
292 ScopedConfigure* scoped_configure_ = nullptr; | 303 ScopedConfigure* scoped_configure_ = nullptr; |
293 bool ignore_window_bounds_changes_ = false; | 304 bool ignore_window_bounds_changes_ = false; |
294 gfx::Point origin_; | 305 gfx::Point origin_; |
295 gfx::Vector2d pending_origin_offset_; | 306 gfx::Vector2d pending_origin_offset_; |
296 gfx::Vector2d pending_origin_config_offset_; | 307 gfx::Vector2d pending_origin_config_offset_; |
297 int resize_component_ = HTCAPTION; // HT constant (see ui/base/hit_test.h) | 308 int resize_component_ = HTCAPTION; // HT constant (see ui/base/hit_test.h) |
298 int pending_resize_component_ = HTCAPTION; | 309 int pending_resize_component_ = HTCAPTION; |
299 aura::Window* shadow_overlay_ = nullptr; | 310 aura::Window* shadow_overlay_ = nullptr; |
300 aura::Window* shadow_underlay_ = nullptr; | 311 aura::Window* shadow_underlay_ = nullptr; |
301 std::unique_ptr<ui::EventHandler> shadow_underlay_event_handler_; | 312 std::unique_ptr<ui::EventHandler> shadow_underlay_event_handler_; |
302 gfx::Rect shadow_content_bounds_; | 313 gfx::Rect shadow_content_bounds_; |
314 float shadow_background_opacity_ = 1.0; | |
303 std::deque<Config> pending_configs_; | 315 std::deque<Config> pending_configs_; |
304 std::unique_ptr<ash::WindowResizer> resizer_; | 316 std::unique_ptr<ash::WindowResizer> resizer_; |
305 std::unique_ptr<ScopedAnimationsDisabled> scoped_animations_disabled_; | 317 std::unique_ptr<ScopedAnimationsDisabled> scoped_animations_disabled_; |
306 int top_inset_height_ = 0; | 318 int top_inset_height_ = 0; |
307 int pending_top_inset_height_ = 0; | 319 int pending_top_inset_height_ = 0; |
308 float rectangular_shadow_background_opacity_ = 1.0; | |
309 | 320 |
310 DISALLOW_COPY_AND_ASSIGN(ShellSurface); | 321 DISALLOW_COPY_AND_ASSIGN(ShellSurface); |
311 }; | 322 }; |
312 | 323 |
313 } // namespace exo | 324 } // namespace exo |
314 | 325 |
315 #endif // COMPONENTS_EXO_SHELL_SURFACE_H_ | 326 #endif // COMPONENTS_EXO_SHELL_SURFACE_H_ |
OLD | NEW |