MouseTracker.cpp 813 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright (c) 2021, Ben Wiederhake <BenWiederhake.GitHub@gmx.de>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibGUI/ConnectionToWindowServer.h>
  7. #include <LibGUI/MouseTracker.h>
  8. namespace GUI {
  9. MouseTracker::List MouseTracker::s_trackers;
  10. MouseTracker::MouseTracker()
  11. {
  12. if (s_trackers.is_empty()) {
  13. ConnectionToWindowServer::the().async_set_global_mouse_tracking(true);
  14. }
  15. s_trackers.append(*this);
  16. }
  17. MouseTracker::~MouseTracker()
  18. {
  19. m_list_node.remove();
  20. if (s_trackers.is_empty()) {
  21. ConnectionToWindowServer::the().async_set_global_mouse_tracking(false);
  22. }
  23. }
  24. void MouseTracker::track_mouse_move(Badge<ConnectionToWindowServer>, Gfx::IntPoint const& point)
  25. {
  26. for (auto& tracker : s_trackers) {
  27. tracker.track_mouse_move(point);
  28. }
  29. }
  30. }