summaryrefslogtreecommitdiff
path: root/src/managers/InputManager.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-01 23:31:12 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-01 23:31:12 +0200
commit304bf4522ef672604b2ee73f044ba0a56405c88e (patch)
tree6d34ca66f23568250ee3d5109cc093a60fa8bf77 /src/managers/InputManager.cpp
parentcd62eb56249d9db6b3bb33aacdd578c8c162e3ae (diff)
Revert "Fixed XWayland (GTK/?) popups focus"
This reverts commit cd62eb56249d9db6b3bb33aacdd578c8c162e3ae. Breaks a lot of other popups
Diffstat (limited to 'src/managers/InputManager.cpp')
-rw-r--r--src/managers/InputManager.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/managers/InputManager.cpp b/src/managers/InputManager.cpp
index 20ee8041..10b1ad95 100644
--- a/src/managers/InputManager.cpp
+++ b/src/managers/InputManager.cpp
@@ -23,6 +23,7 @@ void CInputManager::mouseMoveUnified(uint32_t time) {
// update stuff
updateDragIcon();
+
// focus
wlr_surface* foundSurface = nullptr;
Vector2D mouseCoords = getMouseCoordsInternal();
@@ -65,10 +66,11 @@ void CInputManager::mouseMoveUnified(uint32_t time) {
foundSurface = g_pCompositor->vectorToLayerSurface(mouseCoords, &PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_TOP], &surfaceCoords);
// then windows
- const auto PWINDOWIDEAL = g_pCompositor->vectorToWindowIdealExcludeWithSurface(mouseCoords, nullptr, &foundSurface);
-
- if (foundSurface && PWINDOWIDEAL) {
- surfacePos = PWINDOWIDEAL->m_vRealPosition;
+ const auto PWINDOWIDEAL = g_pCompositor->vectorToWindowIdeal(mouseCoords);
+ if (!foundSurface && PWINDOWIDEAL) {
+ foundSurface = g_pXWaylandManager->getWindowSurface(PWINDOWIDEAL);
+ if (foundSurface)
+ surfacePos = PWINDOWIDEAL->m_vRealPosition;
}
// then surfaces below
@@ -122,6 +124,8 @@ void CInputManager::onMouseButton(wlr_pointer_button_event* e) {
break;
}
+ refocus();
+
// notify app if we didnt handle it
if (g_pCompositor->doesSeatAcceptInput(g_pCompositor->m_pLastFocus)) {
wlr_seat_pointer_notify_button(g_pCompositor->m_sSeat.seat, e->time_msec, e->button, e->state);