summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorvarkha@chromium.org <varkha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-16 06:06:22 +0000
committervarkha@chromium.org <varkha@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-16 06:06:22 +0000
commitb384461212414eaf910afa8bda00bd2cb4126842 (patch)
treed3d709e1e707fa82fd899bf83cf4a0c917be1540 /ash
parent1988ab3b61643378c16c1f6860eff21660ebd1b9 (diff)
downloadchromium_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.cc17
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;
}