mirror of
https://github.com/hyprwm/Hyprland
synced 2025-02-17 01:02:51 +01:00
parent
87db950189
commit
77b134e23b
2 changed files with 7 additions and 2 deletions
|
@ -20,7 +20,12 @@ CVirtualPointer::CVirtualPointer(SP<CVirtualPointerV1Resource> resource) : point
|
||||||
});
|
});
|
||||||
|
|
||||||
listeners.motion = pointer->events.move.registerListener([this](std::any d) { pointerEvents.motion.emit(d); });
|
listeners.motion = pointer->events.move.registerListener([this](std::any d) { pointerEvents.motion.emit(d); });
|
||||||
listeners.motionAbsolute = pointer->events.warp.registerListener([this](std::any d) { pointerEvents.motionAbsolute.emit(d); });
|
listeners.motionAbsolute = pointer->events.warp.registerListener([this](std::any d) {
|
||||||
|
// we need to unpack the event and add our device here because it's required to calculate the position correctly
|
||||||
|
auto E = std::any_cast<SMotionAbsoluteEvent>(d);
|
||||||
|
E.device = self.lock();
|
||||||
|
pointerEvents.motionAbsolute.emit(E);
|
||||||
|
});
|
||||||
listeners.button = pointer->events.button.registerListener([this](std::any d) { pointerEvents.button.emit(d); });
|
listeners.button = pointer->events.button.registerListener([this](std::any d) { pointerEvents.button.emit(d); });
|
||||||
listeners.axis = pointer->events.axis.registerListener([this](std::any d) { pointerEvents.axis.emit(d); });
|
listeners.axis = pointer->events.axis.registerListener([this](std::any d) { pointerEvents.axis.emit(d); });
|
||||||
listeners.frame = pointer->events.frame.registerListener([this](std::any d) { pointerEvents.frame.emit(); });
|
listeners.frame = pointer->events.frame.registerListener([this](std::any d) { pointerEvents.frame.emit(); });
|
||||||
|
|
|
@ -620,7 +620,7 @@ void CPointerManager::move(const Vector2D& deltaLogical) {
|
||||||
void CPointerManager::warpAbsolute(Vector2D abs, SP<IHID> dev) {
|
void CPointerManager::warpAbsolute(Vector2D abs, SP<IHID> dev) {
|
||||||
|
|
||||||
SP<CMonitor> currentMonitor = g_pCompositor->m_pLastMonitor.lock();
|
SP<CMonitor> currentMonitor = g_pCompositor->m_pLastMonitor.lock();
|
||||||
if (!currentMonitor)
|
if (!currentMonitor || !dev)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!std::isnan(abs.x))
|
if (!std::isnan(abs.x))
|
||||||
|
|
Loading…
Add table
Reference in a new issue