x11_desktop_window_move_client.cc 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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
  3. // found in the LICENSE file.
  4. #include "ui/base/x/x11_desktop_window_move_client.h"
  5. #include "ui/base/x/x11_util.h"
  6. #include "ui/events/event.h"
  7. #include "ui/gfx/geometry/rect.h"
  8. namespace ui {
  9. X11DesktopWindowMoveClient::Delegate::~Delegate() = default;
  10. X11DesktopWindowMoveClient::X11DesktopWindowMoveClient(Delegate* window)
  11. : window_(window) {}
  12. X11DesktopWindowMoveClient::~X11DesktopWindowMoveClient() = default;
  13. void X11DesktopWindowMoveClient::OnMouseMovement(const gfx::Point& screen_point,
  14. int flags,
  15. base::TimeTicks event_time) {
  16. gfx::Point system_loc = screen_point - window_offset_;
  17. window_->SetBoundsOnMove(gfx::Rect(system_loc, window_->GetSize()));
  18. }
  19. void X11DesktopWindowMoveClient::OnMouseReleased() {
  20. EndMoveLoop();
  21. }
  22. void X11DesktopWindowMoveClient::OnMoveLoopEnded() {}
  23. bool X11DesktopWindowMoveClient::RunMoveLoop(bool can_grab_pointer,
  24. const gfx::Vector2d& drag_offset) {
  25. window_offset_ = drag_offset;
  26. return move_loop_.RunMoveLoop(can_grab_pointer, window_->GetLastCursor(),
  27. window_->GetLastCursor());
  28. }
  29. void X11DesktopWindowMoveClient::EndMoveLoop() {
  30. move_loop_.EndMoveLoop();
  31. }
  32. } // namespace ui