mirror of
https://repo.dec05eba.com/gpu-screen-recorder-ui
synced 2026-03-31 09:17:04 +09:00
29 lines
944 B
C++
29 lines
944 B
C++
#include "../include/CursorTrackerX11.hpp"
|
|
#include "../include/WindowUtils.hpp"
|
|
|
|
namespace gsr {
|
|
CursorTrackerX11::CursorTrackerX11(Display *dpy) : dpy(dpy) {
|
|
|
|
}
|
|
|
|
std::optional<CursorInfo> CursorTrackerX11::get_latest_cursor_info() {
|
|
Window window = None;
|
|
const auto cursor_pos = get_cursor_position(dpy, &window);
|
|
const auto monitors = get_monitors(dpy);
|
|
std::string monitor_name;
|
|
|
|
for(const auto &monitor : monitors) {
|
|
if(cursor_pos.x >= monitor.position.x && cursor_pos.x <= monitor.position.x + monitor.size.x
|
|
&& cursor_pos.y >= monitor.position.y && cursor_pos.y <= monitor.position.y + monitor.size.y)
|
|
{
|
|
monitor_name = monitor.name;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(monitor_name.empty())
|
|
return std::nullopt;
|
|
|
|
return CursorInfo{ cursor_pos, std::move(monitor_name) };
|
|
}
|
|
} |