Index: ash/wm/dock/docked_window_layout_manager.cc |
diff --git a/ash/wm/dock/docked_window_layout_manager.cc b/ash/wm/dock/docked_window_layout_manager.cc |
index 63e8090021cbb6adafba842d616605c788ce1ae9..9320a6f1a4069c7f374a08def35a57f322b23800 100644 |
--- a/ash/wm/dock/docked_window_layout_manager.cc |
+++ b/ash/wm/dock/docked_window_layout_manager.cc |
@@ -210,8 +210,9 @@ bool IsPopupOrTransient(const aura::Window* window) { |
::wm::GetTransientParent(window)); |
} |
-// Certain windows (minimized, hidden or popups) do not matter to docking. |
-bool IsUsedByLayout(const aura::Window* window) { |
+// Certain windows (minimized, hidden or popups) are not docked and are ignored |
+// by layout logic even when they are children of a docked container. |
+bool IsWindowDocked(const aura::Window* window) { |
return (window->IsVisible() && |
!wm::GetWindowState(window)->IsMinimized() && |
!IsPopupOrTransient(window)); |
@@ -479,8 +480,7 @@ void DockedWindowLayoutManager::StartDragging(aura::Window* window) { |
WindowResizer::kBoundsChangeDirection_Horizontal)) { |
for (size_t i = 0; i < dock_container_->children().size(); ++i) { |
aura::Window* window1(dock_container_->children()[i]); |
- if (IsUsedByLayout(window1) && |
- window1 != dragged_window_ && |
+ if (IsWindowDocked(window1) && window1 != dragged_window_ && |
window1->bounds().width() == docked_width_) { |
wm::GetWindowState(window1)->set_bounds_changed_by_user(false); |
} |
@@ -745,6 +745,8 @@ void DockedWindowLayoutManager::SetChildBounds( |
actual_new_bounds.set_height( |
std::max(min_size.height(), actual_new_bounds.height())); |
} |
+ if (IsWindowDocked(child) && child != dragged_window_) |
+ return; |
SnapToPixelLayoutManager::SetChildBounds(child, actual_new_bounds); |
if (IsPopupOrTransient(child)) |
return; |
@@ -938,7 +940,7 @@ void DockedWindowLayoutManager::MaybeMinimizeChildrenExcept( |
aura::Window::Windows::const_reverse_iterator iter = children.rbegin(); |
while (iter != children.rend()) { |
aura::Window* window(*iter++); |
- if (window == child || !IsUsedByLayout(window)) |
+ if (window == child || !IsWindowDocked(window)) |
continue; |
int room_needed = GetWindowHeightCloseTo(window, 0) + |
(gap_needed ? kMinDockGap : 0); |
@@ -1015,7 +1017,7 @@ void DockedWindowLayoutManager::RecordUmaAction(DockedAction action, |
if (IsPopupOrTransient(window)) |
continue; |
docked_all_count++; |
- if (!IsUsedByLayout(window)) |
+ if (!IsWindowDocked(window)) |
continue; |
docked_visible_count++; |
if (window->type() == ui::wm::WINDOW_TYPE_PANEL) |
@@ -1076,7 +1078,7 @@ void DockedWindowLayoutManager::Relayout() { |
for (size_t i = 0; i < dock_container_->children().size(); ++i) { |
aura::Window* window(dock_container_->children()[i]); |
- if (!IsUsedByLayout(window) || window == dragged_window_) |
+ if (!IsWindowDocked(window) || window == dragged_window_) |
continue; |
// If the shelf is currently hidden (full-screen mode), hide window until |
@@ -1316,7 +1318,7 @@ void DockedWindowLayoutManager::UpdateStacking(aura::Window* active_window) { |
for (aura::Window::Windows::const_iterator it = |
dock_container_->children().begin(); |
it != dock_container_->children().end(); ++it) { |
- if (!IsUsedByLayout(*it) || |
+ if (!IsWindowDocked(*it) || |
((*it) == dragged_window_ && !is_dragged_window_docked_)) { |
continue; |
} |