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 "ash/wm/drag_window_resizer.h" | 5 #include "ash/wm/drag_window_resizer.h" |
| 6 | 6 |
| 7 #include "ash/display/mouse_cursor_event_filter.h" | 7 #include "ash/display/mouse_cursor_event_filter.h" |
| 8 #include "ash/root_window_controller.h" | 8 #include "ash/root_window_controller.h" |
| 9 #include "ash/screen_ash.h" | 9 #include "ash/screen_ash.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 178 // exception is window/tab dragging operation. During that operation, | 178 // exception is window/tab dragging operation. During that operation, |
| 179 // |mouse_warp_mode_| should be set to WARP_DRAG so that the user could move a | 179 // |mouse_warp_mode_| should be set to WARP_DRAG so that the user could move a |
| 180 // window/tab to another display. | 180 // window/tab to another display. |
| 181 MouseCursorEventFilter* mouse_cursor_filter = | 181 MouseCursorEventFilter* mouse_cursor_filter = |
| 182 Shell::GetInstance()->mouse_cursor_filter(); | 182 Shell::GetInstance()->mouse_cursor_filter(); |
| 183 mouse_cursor_filter->set_mouse_warp_mode( | 183 mouse_cursor_filter->set_mouse_warp_mode( |
| 184 ShouldAllowMouseWarp() ? | 184 ShouldAllowMouseWarp() ? |
| 185 MouseCursorEventFilter::WARP_DRAG : MouseCursorEventFilter::WARP_NONE); | 185 MouseCursorEventFilter::WARP_DRAG : MouseCursorEventFilter::WARP_NONE); |
| 186 if (ShouldAllowMouseWarp()) { | 186 if (ShouldAllowMouseWarp()) { |
| 187 mouse_cursor_filter->ShowSharedEdgeIndicator( | 187 mouse_cursor_filter->ShowSharedEdgeIndicator( |
| 188 details.window->GetRootWindow()); | 188 details.window()->GetRootWindow()); |
|
varkha
2014/01/08 23:46:56
Would GetTarget() be more consistent?
| |
| 189 } | 189 } |
| 190 instance_ = this; | 190 instance_ = this; |
| 191 } | 191 } |
| 192 | 192 |
| 193 void DragWindowResizer::UpdateDragWindow(const gfx::Rect& bounds, | 193 void DragWindowResizer::UpdateDragWindow(const gfx::Rect& bounds, |
| 194 bool in_original_root) { | 194 bool in_original_root) { |
| 195 if (details_.window_component != HTCAPTION || !ShouldAllowMouseWarp()) | 195 if (details_.window_component != HTCAPTION || !ShouldAllowMouseWarp()) |
| 196 return; | 196 return; |
| 197 | 197 |
| 198 // It's available. Show a phantom window on the display if needed. | 198 // It's available. Show a phantom window on the display if needed. |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 247 // Check that this is a drag move operation from a suitable window. | 247 // Check that this is a drag move operation from a suitable window. |
| 248 if (details_.window_component != HTCAPTION || | 248 if (details_.window_component != HTCAPTION || |
| 249 views::corewm::GetTransientParent(GetTarget()) || | 249 views::corewm::GetTransientParent(GetTarget()) || |
| 250 (GetTarget()->type() != ui::wm::WINDOW_TYPE_NORMAL && | 250 (GetTarget()->type() != ui::wm::WINDOW_TYPE_NORMAL && |
| 251 GetTarget()->type() != ui::wm::WINDOW_TYPE_PANEL && | 251 GetTarget()->type() != ui::wm::WINDOW_TYPE_PANEL && |
| 252 GetTarget()->type() != ui::wm::WINDOW_TYPE_POPUP)) | 252 GetTarget()->type() != ui::wm::WINDOW_TYPE_POPUP)) |
| 253 return NULL; | 253 return NULL; |
| 254 | 254 |
| 255 // We only allow to drag the window onto a tray of it's own RootWindow. | 255 // We only allow to drag the window onto a tray of it's own RootWindow. |
| 256 SystemTray* tray = internal::GetRootWindowController( | 256 SystemTray* tray = internal::GetRootWindowController( |
| 257 details_.window->GetRootWindow())->GetSystemTray(); | 257 details_.window()->GetRootWindow())->GetSystemTray(); |
|
varkha
2014/01/08 23:46:56
I think GetTarget() here would be more consistent.
| |
| 258 | 258 |
| 259 // Again - unit tests might not have a tray. | 259 // Again - unit tests might not have a tray. |
| 260 if (!tray) | 260 if (!tray) |
| 261 return NULL; | 261 return NULL; |
| 262 | 262 |
| 263 const std::vector<internal::TrayUser*> tray_users = tray->GetTrayUserItems(); | 263 const std::vector<internal::TrayUser*> tray_users = tray->GetTrayUserItems(); |
| 264 if (tray_users.size() <= 1) | 264 if (tray_users.size() <= 1) |
| 265 return NULL; | 265 return NULL; |
| 266 | 266 |
| 267 std::vector<internal::TrayUser*>::const_iterator it = tray_users.begin(); | 267 std::vector<internal::TrayUser*>::const_iterator it = tray_users.begin(); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 279 return false; | 279 return false; |
| 280 | 280 |
| 281 // We have to avoid a brief flash caused by the RevertDrag operation. | 281 // We have to avoid a brief flash caused by the RevertDrag operation. |
| 282 // To do this, we first set the opacity of our target window to 0, so that no | 282 // To do this, we first set the opacity of our target window to 0, so that no |
| 283 // matter what the RevertDrag does the window will stay hidden. Then transfer | 283 // matter what the RevertDrag does the window will stay hidden. Then transfer |
| 284 // the window to the new owner (which will hide it). RevertDrag will then do | 284 // the window to the new owner (which will hide it). RevertDrag will then do |
| 285 // it's thing and return the transparency to its original value. | 285 // it's thing and return the transparency to its original value. |
| 286 int old_opacity = GetTarget()->layer()->opacity(); | 286 int old_opacity = GetTarget()->layer()->opacity(); |
| 287 GetTarget()->layer()->SetOpacity(0); | 287 GetTarget()->layer()->SetOpacity(0); |
| 288 GetTarget()->SetBounds(details_.initial_bounds_in_parent); | 288 GetTarget()->SetBounds(details_.initial_bounds_in_parent); |
| 289 if (!tray_user->TransferWindowToUser(details_.window)) { | 289 if (!tray_user->TransferWindowToUser(details_.window())) { |
|
varkha
2014/01/08 23:46:56
Ditto here.
| |
| 290 GetTarget()->layer()->SetOpacity(old_opacity); | 290 GetTarget()->layer()->SetOpacity(old_opacity); |
| 291 return false; | 291 return false; |
| 292 } | 292 } |
| 293 RevertDrag(); | 293 RevertDrag(); |
| 294 return true; | 294 return true; |
| 295 } | 295 } |
| 296 | 296 |
| 297 } // namespace internal | 297 } // namespace internal |
| 298 } // namespace ash | 298 } // namespace ash |
| OLD | NEW |