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 #ifndef UI_AURA_WINDOW_H_ | 5 #ifndef UI_AURA_WINDOW_H_ |
6 #define UI_AURA_WINDOW_H_ | 6 #define UI_AURA_WINDOW_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 24 matching lines...) Expand all Loading... |
35 class Transform; | 35 class Transform; |
36 class Vector2d; | 36 class Vector2d; |
37 } | 37 } |
38 | 38 |
39 namespace ui { | 39 namespace ui { |
40 class EventHandler; | 40 class EventHandler; |
41 class Layer; | 41 class Layer; |
42 class Texture; | 42 class Texture; |
43 } | 43 } |
44 | 44 |
| 45 // TODO(sky): nuke. Temporary while moving transients out of Window. |
| 46 namespace views { |
| 47 namespace corewm { |
| 48 class TransientWindowManager; |
| 49 } |
| 50 } |
45 namespace aura { | 51 namespace aura { |
46 | 52 |
47 class LayoutManager; | 53 class LayoutManager; |
48 class RootWindow; | 54 class RootWindow; |
49 class WindowDelegate; | 55 class WindowDelegate; |
50 class WindowObserver; | 56 class WindowObserver; |
51 | 57 |
52 // TODO(beng): remove once RootWindow is renamed. | 58 // TODO(beng): remove once RootWindow is renamed. |
53 typedef RootWindow WindowEventDispatcher; | 59 typedef RootWindow WindowEventDispatcher; |
54 | 60 |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 | 210 |
205 // Tree operations. | 211 // Tree operations. |
206 void AddChild(Window* child); | 212 void AddChild(Window* child); |
207 void RemoveChild(Window* child); | 213 void RemoveChild(Window* child); |
208 | 214 |
209 const Windows& children() const { return children_; } | 215 const Windows& children() const { return children_; } |
210 | 216 |
211 // Returns true if this Window contains |other| somewhere in its children. | 217 // Returns true if this Window contains |other| somewhere in its children. |
212 bool Contains(const Window* other) const; | 218 bool Contains(const Window* other) const; |
213 | 219 |
214 // Adds or removes |child| as a transient child of this window. Transient | |
215 // children get the following behavior: | |
216 // . The transient parent destroys any transient children when it is | |
217 // destroyed. This means a transient child is destroyed if either its parent | |
218 // or transient parent is destroyed. | |
219 // . If a transient child and its transient parent share the same parent, then | |
220 // transient children are always ordered above the transient parent. | |
221 // Transient windows are typically used for popups and menus. | |
222 void AddTransientChild(Window* child); | |
223 void RemoveTransientChild(Window* child); | |
224 | |
225 const Windows& transient_children() const { return transient_children_; } | |
226 | |
227 Window* transient_parent() { return transient_parent_; } | |
228 const Window* transient_parent() const { return transient_parent_; } | |
229 | |
230 // Retrieves the first-level child with the specified id, or NULL if no first- | 220 // Retrieves the first-level child with the specified id, or NULL if no first- |
231 // level child is found matching |id|. | 221 // level child is found matching |id|. |
232 Window* GetChildById(int id); | 222 Window* GetChildById(int id); |
233 const Window* GetChildById(int id) const; | 223 const Window* GetChildById(int id) const; |
234 | 224 |
235 // Converts |point| from |source|'s coordinates to |target|'s. If |source| is | 225 // Converts |point| from |source|'s coordinates to |target|'s. If |source| is |
236 // NULL, the function returns without modifying |point|. |target| cannot be | 226 // NULL, the function returns without modifying |point|. |target| cannot be |
237 // NULL. | 227 // NULL. |
238 static void ConvertPointToTarget(const Window* source, | 228 static void ConvertPointToTarget(const Window* source, |
239 const Window* target, | 229 const Window* target, |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 void PrintWindowHierarchy(int depth) const; | 366 void PrintWindowHierarchy(int depth) const; |
377 #endif | 367 #endif |
378 | 368 |
379 protected: | 369 protected: |
380 // Deletes (or removes if not owned by parent) all child windows. Intended for | 370 // Deletes (or removes if not owned by parent) all child windows. Intended for |
381 // use from the destructor. | 371 // use from the destructor. |
382 void RemoveOrDestroyChildren(); | 372 void RemoveOrDestroyChildren(); |
383 | 373 |
384 private: | 374 private: |
385 friend class test::WindowTestApi; | 375 friend class test::WindowTestApi; |
| 376 // TODO(sky): temporary until TransientWindowManager gets its own observer. |
| 377 friend class views::corewm::TransientWindowManager; |
386 friend class LayoutManager; | 378 friend class LayoutManager; |
387 friend class RootWindow; | 379 friend class RootWindow; |
388 friend class WindowTargeter; | 380 friend class WindowTargeter; |
389 | 381 |
390 // Called by the public {Set,Get,Clear}Property functions. | 382 // Called by the public {Set,Get,Clear}Property functions. |
391 int64 SetPropertyInternal(const void* key, | 383 int64 SetPropertyInternal(const void* key, |
392 const char* name, | 384 const char* name, |
393 PropertyDeallocator deallocator, | 385 PropertyDeallocator deallocator, |
394 int64 value, | 386 int64 value, |
395 int64 default_value); | 387 int64 default_value); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 // |parent| as well as updating bounds of windows with a layerless ancestor. | 430 // |parent| as well as updating bounds of windows with a layerless ancestor. |
439 void ReparentLayers(ui::Layer* parent, const gfx::Vector2d& offset); | 431 void ReparentLayers(ui::Layer* parent, const gfx::Vector2d& offset); |
440 | 432 |
441 // Offsets the first encountered Windows with layers by |offset|. This | 433 // Offsets the first encountered Windows with layers by |offset|. This |
442 // recurses through all layerless Windows, stopping at windows with layers. | 434 // recurses through all layerless Windows, stopping at windows with layers. |
443 void OffsetLayerBounds(const gfx::Vector2d& offset); | 435 void OffsetLayerBounds(const gfx::Vector2d& offset); |
444 | 436 |
445 // Called when this window's parent has changed. | 437 // Called when this window's parent has changed. |
446 void OnParentChanged(); | 438 void OnParentChanged(); |
447 | 439 |
448 // Returns true when |ancestor| is a transient ancestor of |this|. | 440 // The various stacking functions call into this to do the actual stacking. |
449 bool HasTransientAncestor(const Window* ancestor) const; | |
450 | |
451 // Adjusts |target| so that we don't attempt to stack on top of a window with | |
452 // a NULL delegate. See implementation for details. | |
453 void SkipNullDelegatesForStacking(StackDirection direction, | |
454 Window** target) const; | |
455 | |
456 // Determines the real location for stacking |child| and invokes | |
457 // StackChildRelativeToImpl(). | |
458 void StackChildRelativeTo(Window* child, | 441 void StackChildRelativeTo(Window* child, |
459 Window* target, | 442 Window* target, |
460 StackDirection direction); | 443 StackDirection direction); |
461 | 444 |
462 // Implementation of StackChildRelativeTo(). | 445 // Invoked from StackChildRelativeTo() to stack the layers appropriately |
463 void StackChildRelativeToImpl(Window* child, | |
464 Window* target, | |
465 StackDirection direction); | |
466 | |
467 // Invoked from StackChildRelativeToImpl() to stack the layers appropriately | |
468 // when stacking |child| relative to |target|. | 446 // when stacking |child| relative to |target|. |
469 void StackChildLayerRelativeTo(Window* child, | 447 void StackChildLayerRelativeTo(Window* child, |
470 Window* target, | 448 Window* target, |
471 StackDirection direction); | 449 StackDirection direction); |
472 | 450 |
473 // Called when this window's stacking order among its siblings is changed. | 451 // Called when this window's stacking order among its siblings is changed. |
474 void OnStackingChanged(); | 452 void OnStackingChanged(); |
475 | 453 |
476 // Notifies observers registered with this Window (and its subtree) when the | 454 // Notifies observers registered with this Window (and its subtree) when the |
477 // Window has been added or is about to be removed from a RootWindow. | 455 // Window has been added or is about to be removed from a RootWindow. |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 bool owned_by_parent_; | 533 bool owned_by_parent_; |
556 | 534 |
557 WindowDelegate* delegate_; | 535 WindowDelegate* delegate_; |
558 | 536 |
559 // The Window's parent. | 537 // The Window's parent. |
560 Window* parent_; | 538 Window* parent_; |
561 | 539 |
562 // Child windows. Topmost is last. | 540 // Child windows. Topmost is last. |
563 Windows children_; | 541 Windows children_; |
564 | 542 |
565 // Transient windows. | |
566 Windows transient_children_; | |
567 | |
568 Window* transient_parent_; | |
569 | |
570 // The visibility state of the window as set by Show()/Hide(). This may differ | 543 // The visibility state of the window as set by Show()/Hide(). This may differ |
571 // from the visibility of the underlying layer, which may remain visible after | 544 // from the visibility of the underlying layer, which may remain visible after |
572 // the window is hidden (e.g. to animate its disappearance). | 545 // the window is hidden (e.g. to animate its disappearance). |
573 bool visible_; | 546 bool visible_; |
574 | 547 |
575 int id_; | 548 int id_; |
576 std::string name_; | 549 std::string name_; |
577 | 550 |
578 base::string16 title_; | 551 base::string16 title_; |
579 | 552 |
(...skipping 26 matching lines...) Expand all Loading... |
606 }; | 579 }; |
607 | 580 |
608 std::map<const void*, Value> prop_map_; | 581 std::map<const void*, Value> prop_map_; |
609 | 582 |
610 DISALLOW_COPY_AND_ASSIGN(Window); | 583 DISALLOW_COPY_AND_ASSIGN(Window); |
611 }; | 584 }; |
612 | 585 |
613 } // namespace aura | 586 } // namespace aura |
614 | 587 |
615 #endif // UI_AURA_WINDOW_H_ | 588 #endif // UI_AURA_WINDOW_H_ |
OLD | NEW |