Chromium Code Reviews| 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/aura/window.h" | 5 #include "ui/aura/window.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 886 children_[final_target_i + 1]->HasTransientAncestor(target)) { | 886 children_[final_target_i + 1]->HasTransientAncestor(target)) { |
| 887 ++final_target_i; | 887 ++final_target_i; |
| 888 } | 888 } |
| 889 } | 889 } |
| 890 | 890 |
| 891 // By convention we don't stack on top of windows with layers with NULL | 891 // By convention we don't stack on top of windows with layers with NULL |
| 892 // delegates. Walk backward to find a valid target window. | 892 // delegates. Walk backward to find a valid target window. |
| 893 // See tests WindowTest.StackingMadrigal and StackOverClosingTransient | 893 // See tests WindowTest.StackingMadrigal and StackOverClosingTransient |
| 894 // for an explanation of this. | 894 // for an explanation of this. |
| 895 while (final_target_i > 0 && | 895 while (final_target_i > 0 && |
| 896 children_[final_target_i]->layer()->delegate() == NULL) { | 896 children_[direction == STACK_ABOVE ? final_target_i : |
| 897 final_target_i - 1]->layer() | |
|
flackr
2013/11/04 22:04:12
This change should make the check in 901 unnecessa
| |
| 898 ->delegate() == NULL) { | |
| 897 --final_target_i; | 899 --final_target_i; |
| 898 } | 900 } |
| 899 | 901 |
| 900 // Allow stacking immediately below a window with a NULL layer. | |
| 901 if (direction == STACK_BELOW && target_i != final_target_i) | |
| 902 direction = STACK_ABOVE; | |
| 903 | |
| 904 Window* final_target = children_[final_target_i]; | 902 Window* final_target = children_[final_target_i]; |
| 905 | 903 |
| 906 // If we couldn't find a valid target position, don't move anything. | 904 // If we couldn't find a valid target position, don't move anything. |
| 907 if (final_target->layer()->delegate() == NULL) | 905 if (direction == STACK_ABOVE && final_target->layer()->delegate() == NULL) |
| 908 return; | 906 return; |
| 909 | 907 |
| 910 // Don't try to stack a child above itself. | 908 // Don't try to stack a child above itself. |
| 911 if (child == final_target) | 909 if (child == final_target) |
| 912 return; | 910 return; |
| 913 | 911 |
| 914 // Move the child. | 912 // Move the child. |
| 915 StackChildRelativeToImpl(child, final_target, direction); | 913 StackChildRelativeToImpl(child, final_target, direction); |
| 916 | 914 |
| 917 // Stack any transient children that share the same parent to be in front of | 915 // Stack any transient children that share the same parent to be in front of |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1149 bool contains_mouse = false; | 1147 bool contains_mouse = false; |
| 1150 if (IsVisible()) { | 1148 if (IsVisible()) { |
| 1151 WindowEventDispatcher* dispatcher = GetDispatcher(); | 1149 WindowEventDispatcher* dispatcher = GetDispatcher(); |
| 1152 contains_mouse = dispatcher && | 1150 contains_mouse = dispatcher && |
| 1153 ContainsPointInRoot(dispatcher->GetLastMouseLocationInRoot()); | 1151 ContainsPointInRoot(dispatcher->GetLastMouseLocationInRoot()); |
| 1154 } | 1152 } |
| 1155 return contains_mouse; | 1153 return contains_mouse; |
| 1156 } | 1154 } |
| 1157 | 1155 |
| 1158 } // namespace aura | 1156 } // namespace aura |
| OLD | NEW |