Chromium Code Reviews| Index: ash/wm/panels/panel_window_resizer.cc |
| diff --git a/ash/wm/panels/panel_window_resizer.cc b/ash/wm/panels/panel_window_resizer.cc |
| index 947cf90931b0cbbbd2a814f8f926d56bf4329b47..c9c1c7d50476dc1bbcc5fd6e42c123df8eaefe7b 100644 |
| --- a/ash/wm/panels/panel_window_resizer.cc |
| +++ b/ash/wm/panels/panel_window_resizer.cc |
| @@ -57,6 +57,8 @@ PanelWindowResizer::Create(WindowResizer* next_window_resizer, |
| } |
| void PanelWindowResizer::Drag(const gfx::Point& location, int event_flags) { |
| + last_mouse_location_ = location; |
| + wm::ConvertPointToScreen(GetTarget()->parent(), &last_mouse_location_); |
| bool destroyed = false; |
| if (!did_move_or_resize_) { |
| did_move_or_resize_ = true; |
| @@ -134,6 +136,7 @@ PanelWindowResizer::PanelWindowResizer(WindowResizer* next_window_resizer, |
| should_attach_(was_attached_), |
| destroyed_(NULL) { |
| DCHECK(details_.is_resizable); |
| + root_window_ = details.window->GetRootWindow(); |
| panel_container_ = Shell::GetContainer( |
| details.window->GetRootWindow(), |
| internal::kShellWindowId_PanelContainer); |
| @@ -188,7 +191,7 @@ void PanelWindowResizer::StartedDragging() { |
| // attaching it so that it does not get repositioned. |
| if (panel_container_) |
| GetPanelLayoutManager(panel_container_)->StartDragging(GetTarget()); |
| - if (!was_attached_) { |
| + if (!was_attached_ && !IsWindowDocked(GetTarget())) { |
|
flackr
2013/06/11 17:59:31
Don't we want dragged panels to show in front of o
varkha
2013/06/12 04:52:13
Eliminating window property made this redundant I
|
| // Attach the panel while dragging placing it in front of other panels. |
| GetTarget()->SetProperty(internal::kContinueDragAfterReparent, true); |
| GetTarget()->SetProperty(internal::kPanelAttachedKey, true); |
| @@ -204,9 +207,9 @@ void PanelWindowResizer::FinishDragging() { |
| if (GetTarget()->GetProperty(internal::kPanelAttachedKey) != |
| should_attach_) { |
| GetTarget()->SetProperty(internal::kPanelAttachedKey, should_attach_); |
| - GetTarget()->SetDefaultParentByRootWindow( |
| - GetTarget()->GetRootWindow(), |
| - GetTarget()->GetBoundsInScreen()); |
| + gfx::Rect near_last_mouse_location(last_mouse_location_, gfx::Size()); |
| + GetTarget()->SetDefaultParentByRootWindow(root_window_, |
|
flackr
2013/06/11 17:59:31
This is using the root window from the start of th
varkha
2013/06/12 04:52:13
We end up using a root pointed by the |near_last_m
|
| + near_last_mouse_location); |
| } |
| if (panel_container_) |
| GetPanelLayoutManager(panel_container_)->FinishDragging(); |