| OLD | NEW | 
|    1 // Copyright 2014 The Chromium Authors. All rights reserved. |    1 // Copyright 2014 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/utility/screenshot_controller.h" |    5 #include "ash/utility/screenshot_controller.h" | 
|    6  |    6  | 
|    7 #include <cmath> |    7 #include <cmath> | 
|    8  |    8  | 
|    9 #include "ash/display/mouse_cursor_event_filter.h" |    9 #include "ash/display/mouse_cursor_event_filter.h" | 
|   10 #include "ash/public/cpp/shell_window_ids.h" |   10 #include "ash/public/cpp/shell_window_ids.h" | 
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  197  |  197  | 
|  198 class ScreenshotController::ScopedCursorSetter { |  198 class ScreenshotController::ScopedCursorSetter { | 
|  199  public: |  199  public: | 
|  200   ScopedCursorSetter(::wm::CursorManager* cursor_manager, |  200   ScopedCursorSetter(::wm::CursorManager* cursor_manager, | 
|  201                      gfx::NativeCursor cursor) |  201                      gfx::NativeCursor cursor) | 
|  202       : cursor_manager_(nullptr) { |  202       : cursor_manager_(nullptr) { | 
|  203     if (cursor_manager->IsCursorLocked()) |  203     if (cursor_manager->IsCursorLocked()) | 
|  204       return; |  204       return; | 
|  205     gfx::NativeCursor original_cursor = cursor_manager->GetCursor(); |  205     gfx::NativeCursor original_cursor = cursor_manager->GetCursor(); | 
|  206     cursor_manager_ = cursor_manager; |  206     cursor_manager_ = cursor_manager; | 
|  207     if (cursor == ui::kCursorNone) { |  207     if (cursor == ui::CursorType::kNone) { | 
|  208       cursor_manager_->HideCursor(); |  208       cursor_manager_->HideCursor(); | 
|  209     } else { |  209     } else { | 
|  210       cursor_manager_->SetCursor(cursor); |  210       cursor_manager_->SetCursor(cursor); | 
|  211       cursor_manager_->ShowCursor(); |  211       cursor_manager_->ShowCursor(); | 
|  212     } |  212     } | 
|  213     cursor_manager_->LockCursor(); |  213     cursor_manager_->LockCursor(); | 
|  214     // Set/ShowCursor does not make any effects at this point but it sets |  214     // Set/ShowCursor does not make any effects at this point but it sets | 
|  215     // back to the original cursor when unlocked. |  215     // back to the original cursor when unlocked. | 
|  216     cursor_manager_->SetCursor(original_cursor); |  216     cursor_manager_->SetCursor(original_cursor); | 
|  217     cursor_manager_->ShowCursor(); |  217     cursor_manager_->ShowCursor(); | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  254   mode_ = WINDOW; |  254   mode_ = WINDOW; | 
|  255  |  255  | 
|  256   display::Screen::GetScreen()->AddObserver(this); |  256   display::Screen::GetScreen()->AddObserver(this); | 
|  257   for (aura::Window* root : Shell::GetAllRootWindows()) { |  257   for (aura::Window* root : Shell::GetAllRootWindows()) { | 
|  258     layers_[root] = base::MakeUnique<ScreenshotLayer>( |  258     layers_[root] = base::MakeUnique<ScreenshotLayer>( | 
|  259         Shell::GetContainer(root, kShellWindowId_OverlayContainer)->layer(), |  259         Shell::GetContainer(root, kShellWindowId_OverlayContainer)->layer(), | 
|  260         true); |  260         true); | 
|  261   } |  261   } | 
|  262   SetSelectedWindow(wm::GetActiveWindow()); |  262   SetSelectedWindow(wm::GetActiveWindow()); | 
|  263  |  263  | 
|  264   cursor_setter_.reset( |  264   cursor_setter_.reset(new ScopedCursorSetter(Shell::Get()->cursor_manager(), | 
|  265       new ScopedCursorSetter(Shell::Get()->cursor_manager(), ui::kCursorCross)); |  265                                               ui::CursorType::kCross)); | 
|  266  |  266  | 
|  267   EnableMouseWarp(true); |  267   EnableMouseWarp(true); | 
|  268 } |  268 } | 
|  269  |  269  | 
|  270 void ScreenshotController::StartPartialScreenshotSession( |  270 void ScreenshotController::StartPartialScreenshotSession( | 
|  271     ScreenshotDelegate* screenshot_delegate, |  271     ScreenshotDelegate* screenshot_delegate, | 
|  272     bool draw_overlay_immediately) { |  272     bool draw_overlay_immediately) { | 
|  273   // Already in a screenshot session. |  273   // Already in a screenshot session. | 
|  274   if (screenshot_delegate_) { |  274   if (screenshot_delegate_) { | 
|  275     DCHECK_EQ(screenshot_delegate_, screenshot_delegate); |  275     DCHECK_EQ(screenshot_delegate_, screenshot_delegate); | 
|  276     return; |  276     return; | 
|  277   } |  277   } | 
|  278  |  278  | 
|  279   screenshot_delegate_ = screenshot_delegate; |  279   screenshot_delegate_ = screenshot_delegate; | 
|  280   mode_ = PARTIAL; |  280   mode_ = PARTIAL; | 
|  281   display::Screen::GetScreen()->AddObserver(this); |  281   display::Screen::GetScreen()->AddObserver(this); | 
|  282   for (aura::Window* root : Shell::GetAllRootWindows()) { |  282   for (aura::Window* root : Shell::GetAllRootWindows()) { | 
|  283     layers_[root] = base::MakeUnique<ScreenshotLayer>( |  283     layers_[root] = base::MakeUnique<ScreenshotLayer>( | 
|  284         Shell::GetContainer(root, kShellWindowId_OverlayContainer)->layer(), |  284         Shell::GetContainer(root, kShellWindowId_OverlayContainer)->layer(), | 
|  285         draw_overlay_immediately); |  285         draw_overlay_immediately); | 
|  286   } |  286   } | 
|  287  |  287  | 
|  288   if (!pen_events_only_) { |  288   if (!pen_events_only_) { | 
|  289     cursor_setter_.reset(new ScopedCursorSetter(Shell::Get()->cursor_manager(), |  289     cursor_setter_.reset(new ScopedCursorSetter(Shell::Get()->cursor_manager(), | 
|  290                                                 ui::kCursorCross)); |  290                                                 ui::CursorType::kCross)); | 
|  291   } |  291   } | 
|  292  |  292  | 
|  293   EnableMouseWarp(false); |  293   EnableMouseWarp(false); | 
|  294 } |  294 } | 
|  295  |  295  | 
|  296 void ScreenshotController::CancelScreenshotSession() { |  296 void ScreenshotController::CancelScreenshotSession() { | 
|  297   for (aura::Window* root : Shell::GetAllRootWindows()) { |  297   for (aura::Window* root : Shell::GetAllRootWindows()) { | 
|  298     // Having pre-handled all mouse events, widgets that had mouse capture may |  298     // Having pre-handled all mouse events, widgets that had mouse capture may | 
|  299     // now misbehave, so break any existing captures. Do this after the |  299     // now misbehave, so break any existing captures. Do this after the | 
|  300     // screenshot session is over so that it's still possible to screenshot |  300     // screenshot session is over so that it's still possible to screenshot | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  333       CompletePartialScreenshot(); |  333       CompletePartialScreenshot(); | 
|  334     } |  334     } | 
|  335   } else { |  335   } else { | 
|  336     root_window_ = current_root; |  336     root_window_ = current_root; | 
|  337     start_position_ = event.root_location(); |  337     start_position_ = event.root_location(); | 
|  338     if (!pen_events_only_) { |  338     if (!pen_events_only_) { | 
|  339       // ScopedCursorSetter must be reset first to make sure that its dtor is |  339       // ScopedCursorSetter must be reset first to make sure that its dtor is | 
|  340       // called before ctor is called. |  340       // called before ctor is called. | 
|  341       cursor_setter_.reset(); |  341       cursor_setter_.reset(); | 
|  342       cursor_setter_.reset(new ScopedCursorSetter( |  342       cursor_setter_.reset(new ScopedCursorSetter( | 
|  343           Shell::Get()->cursor_manager(), ui::kCursorNone)); |  343           Shell::Get()->cursor_manager(), ui::CursorType::kNone)); | 
|  344     } |  344     } | 
|  345     Update(event); |  345     Update(event); | 
|  346   } |  346   } | 
|  347 } |  347 } | 
|  348  |  348  | 
|  349 void ScreenshotController::CompleteWindowScreenshot() { |  349 void ScreenshotController::CompleteWindowScreenshot() { | 
|  350   if (selected_) |  350   if (selected_) | 
|  351     screenshot_delegate_->HandleTakeWindowScreenshot(selected_); |  351     screenshot_delegate_->HandleTakeWindowScreenshot(selected_); | 
|  352   CancelScreenshotSession(); |  352   CancelScreenshotSession(); | 
|  353 } |  353 } | 
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  545  |  545  | 
|  546 void ScreenshotController::OnDisplayMetricsChanged( |  546 void ScreenshotController::OnDisplayMetricsChanged( | 
|  547     const display::Display& display, |  547     const display::Display& display, | 
|  548     uint32_t changed_metrics) {} |  548     uint32_t changed_metrics) {} | 
|  549  |  549  | 
|  550 void ScreenshotController::OnWindowDestroying(aura::Window* window) { |  550 void ScreenshotController::OnWindowDestroying(aura::Window* window) { | 
|  551   SetSelectedWindow(nullptr); |  551   SetSelectedWindow(nullptr); | 
|  552 } |  552 } | 
|  553  |  553  | 
|  554 }  // namespace ash |  554 }  // namespace ash | 
| OLD | NEW |