Serenity Operating System
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}