summaryrefslogtreecommitdiff
path: root/src/managers/InputManager.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-19 20:30:21 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-03-19 20:30:21 +0100
commitcf76b9060636c03e495fe522f7b4c251327adc98 (patch)
tree424cb5592f17e6a8b492a45e1baa562f4afc2fd6 /src/managers/InputManager.cpp
parentf9a4e9aecd2f38d0f82f24ac2dd4a1f9d4d84045 (diff)
multimon fixes
Diffstat (limited to 'src/managers/InputManager.cpp')
-rw-r--r--src/managers/InputManager.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/managers/InputManager.cpp b/src/managers/InputManager.cpp
index 0f5f1a98..64e9bca9 100644
--- a/src/managers/InputManager.cpp
+++ b/src/managers/InputManager.cpp
@@ -4,16 +4,9 @@
void CInputManager::onMouseMoved(wlr_event_pointer_motion* e) {
// TODO: sensitivity
- float sensitivity = 0.25f;
+ float sensitivity = g_pConfigManager->getFloat("general:sensitivity");
- m_vMouseCoords = m_vMouseCoords + Vector2D(e->delta_x * sensitivity, e->delta_y * sensitivity);
-
- if (m_vMouseCoords.floor() != m_vWLRMouseCoords) {
- Vector2D delta = m_vMouseCoords - m_vWLRMouseCoords;
- m_vWLRMouseCoords = m_vMouseCoords.floor();
-
- wlr_cursor_move(g_pCompositor->m_sWLRCursor, e->device, delta.floor().x, delta.floor().y);
- }
+ wlr_cursor_move(g_pCompositor->m_sWLRCursor, e->device, e->delta_x * sensitivity, e->delta_y * sensitivity);
mouseMoveUnified(e->time_msec);
// todo: pointer
@@ -22,15 +15,12 @@ void CInputManager::onMouseMoved(wlr_event_pointer_motion* e) {
void CInputManager::onMouseWarp(wlr_event_pointer_motion_absolute* e) {
wlr_cursor_warp_absolute(g_pCompositor->m_sWLRCursor, e->device, e->x, e->y);
- m_vMouseCoords = Vector2D(g_pCompositor->m_sWLRCursor->x, g_pCompositor->m_sWLRCursor->y);
- m_vWLRMouseCoords = m_vMouseCoords;
-
mouseMoveUnified(e->time_msec);
}
void CInputManager::mouseMoveUnified(uint32_t time) {
- const auto PWINDOW = g_pCompositor->vectorToWindow(m_vMouseCoords);
+ const auto PWINDOW = g_pCompositor->windowFromCursor();
if (!PWINDOW) {
wlr_xcursor_manager_set_cursor_image(g_pCompositor->m_sWLRXCursorMgr, "left_ptr", g_pCompositor->m_sWLRCursor);
@@ -45,10 +35,12 @@ void CInputManager::mouseMoveUnified(uint32_t time) {
g_pCompositor->focusWindow(PWINDOW);
- Vector2D surfaceLocal = m_vWLRMouseCoords - PWINDOW->m_vEffectivePosition;
+ Vector2D surfaceLocal = Vector2D(g_pCompositor->m_sWLRCursor->x, g_pCompositor->m_sWLRCursor->y) - PWINDOW->m_vEffectivePosition;
wlr_seat_pointer_notify_enter(g_pCompositor->m_sWLRSeat, g_pXWaylandManager->getWindowSurface(PWINDOW), surfaceLocal.x, surfaceLocal.y);
wlr_seat_pointer_notify_motion(g_pCompositor->m_sWLRSeat, time, surfaceLocal.x, surfaceLocal.y);
+
+ g_pCompositor->m_pLastMonitor = g_pCompositor->getMonitorFromCursor();
}
void CInputManager::onMouseButton(wlr_event_pointer_button* e) {
@@ -63,12 +55,16 @@ void CInputManager::onMouseButton(wlr_event_pointer_button* e) {
break;
}
+ g_pCompositor->focusWindow(g_pCompositor->vectorToWindowIdeal(Vector2D(g_pCompositor->m_sWLRCursor->x, g_pCompositor->m_sWLRCursor->y)));
+ if (g_pCompositor->windowValidMapped(g_pCompositor->m_pLastFocus))
+ Debug::log(LOG, "Clicked, window with focus now: %x (window xy: %f, %f, cursor xy: %f %f)", g_pCompositor->m_pLastFocus, g_pCompositor->m_pLastFocus->m_vRealPosition.x, g_pCompositor->m_pLastFocus->m_vRealPosition.y, g_pCompositor->m_sWLRCursor->x, g_pCompositor->m_sWLRCursor->y);
+
// notify app if we didnt handle it
wlr_seat_pointer_notify_button(g_pCompositor->m_sWLRSeat, e->time_msec, e->button, e->state);
}
Vector2D CInputManager::getMouseCoordsInternal() {
- return m_vMouseCoords;
+ return Vector2D(g_pCompositor->m_sWLRCursor->x, g_pCompositor->m_sWLRCursor->y);
}
void CInputManager::newKeyboard(wlr_input_device* keyboard) {