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