summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-17 11:52:54 +0200
committerGitHub <noreply@github.com>2022-04-17 11:52:54 +0200
commitbaa9e0caea3ce76f72def6e89659dd851f25831d (patch)
tree3ac4837b91661afe55eaef5abcdd438f436911ee /src/Compositor.cpp
parenta4f07ea9f7a3e5f882055d9cddb8d048405ad683 (diff)
parent24df15105ee2fc7f2975ef2958c2e7b1258569d1 (diff)
Merge branch 'main' into damage-tracking
Diffstat (limited to 'src/Compositor.cpp')
-rw-r--r--src/Compositor.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 2f1746c9..95e2ac48 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -54,6 +54,7 @@ CCompositor::CCompositor() {
m_sWLRSubCompositor = wlr_subcompositor_create(m_sWLDisplay);
m_sWLRDataDevMgr = wlr_data_device_manager_create(m_sWLDisplay);
+ m_sWLRDmabuf = wlr_linux_dmabuf_v1_create(m_sWLDisplay, m_sWLRRenderer);
wlr_export_dmabuf_manager_v1_create(m_sWLDisplay);
wlr_screencopy_manager_v1_create(m_sWLDisplay);
wlr_data_control_manager_v1_create(m_sWLDisplay);
@@ -366,7 +367,7 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
return;
}
- if (m_pLastWindow == pWindow)
+ if (m_pLastWindow == pWindow && m_sSeat.seat->keyboard_state.focused_surface == pSurface)
return;
if (windowValidMapped(m_pLastWindow) && m_pLastWindow->m_bIsX11) {
@@ -380,8 +381,9 @@ void CCompositor::focusWindow(CWindow* pWindow, wlr_surface* pSurface) {
g_pXWaylandManager->activateWindow(pWindow, true);
- // do pointer focus too
- wlr_seat_pointer_notify_enter(m_sSeat.seat, PWINDOWSURFACE, 0, 0);
+ // do pointer focus too
+ const auto POINTERLOCAL = g_pInputManager->getMouseCoordsInternal() - pWindow->m_vRealPosition;
+ wlr_seat_pointer_notify_enter(m_sSeat.seat, PWINDOWSURFACE, POINTERLOCAL.x, POINTERLOCAL.y);
m_pLastWindow = pWindow;
}