diff options
author | varkha@chromium.org <varkha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-16 06:06:22 +0000 |
---|---|---|
committer | varkha@chromium.org <varkha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-16 06:06:22 +0000 |
commit | b384461212414eaf910afa8bda00bd2cb4126842 (patch) | |
tree | d3d709e1e707fa82fd899bf83cf4a0c917be1540 /ash | |
parent | 1988ab3b61643378c16c1f6860eff21660ebd1b9 (diff) | |
download | chromium_src-b384461212414eaf910afa8bda00bd2cb4126842.zip chromium_src-b384461212414eaf910afa8bda00bd2cb4126842.tar.gz chromium_src-b384461212414eaf910afa8bda00bd2cb4126842.tar.bz2 |
Docked area background may get stacked on top of the dragged window
BUG=272455
Review URL: https://chromiumcodereview.appspot.com/22810004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217955 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/wm/dock/docked_window_layout_manager.cc | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/ash/wm/dock/docked_window_layout_manager.cc b/ash/wm/dock/docked_window_layout_manager.cc index 1dacf5e..36998df 100644 --- a/ash/wm/dock/docked_window_layout_manager.cc +++ b/ash/wm/dock/docked_window_layout_manager.cc @@ -400,10 +400,11 @@ void DockedWindowLayoutManager::OnWindowBoundsChanged( } void DockedWindowLayoutManager::OnWindowDestroying(aura::Window* window) { - if (dragged_window_ == window) + if (dragged_window_ == window) { FinishDragging(); - DCHECK(!dragged_window_); - DCHECK (!is_dragged_window_docked_); + DCHECK(!dragged_window_); + DCHECK (!is_dragged_window_docked_); + } if (window == last_active_window_) last_active_window_ = NULL; } @@ -648,8 +649,10 @@ 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 (!IsUsedByLayout(*it) || + ((*it) == dragged_window_ && !is_dragged_window_docked_)) { continue; + } gfx::Rect bounds = (*it)->bounds(); window_ordering.insert(std::make_pair(bounds.y() + bounds.height() / 2, *it)); @@ -664,8 +667,6 @@ void DockedWindowLayoutManager::UpdateStacking(aura::Window* active_window) { dock_container_->StackChildAbove(it->second, previous_window); previous_window = it->second; } - - previous_window = NULL; for (std::map<int, aura::Window*>::const_reverse_iterator it = window_ordering.rbegin(); it != window_ordering.rend() && it->first > active_center_y; ++it) { @@ -674,8 +675,8 @@ void DockedWindowLayoutManager::UpdateStacking(aura::Window* active_window) { previous_window = it->second; } - if (active_window->parent() == dock_container_) - dock_container_->StackChildAtTop(active_window); + if (previous_window && active_window->parent() == dock_container_) + dock_container_->StackChildAbove(active_window, previous_window); if (active_window != dragged_window_) last_active_window_ = active_window; } |