summaryrefslogtreecommitdiff
path: root/src/events/Windows.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/events/Windows.cpp')
-rw-r--r--src/events/Windows.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 89f359e6..716c5ee1 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -315,23 +315,34 @@ void Events::listener_configureX11(void* owner, void* data) {
return;
const auto E = (wlr_xwayland_surface_configure_event*)data;
+ g_pHyprRenderer->damageWindow(PWINDOW);
if (!PWINDOW->m_bIsFloating) {
g_pXWaylandManager->setWindowSize(PWINDOW, PWINDOW->m_vRealSize.vec());
g_pInputManager->refocus();
+ g_pHyprRenderer->damageWindow(PWINDOW);
+ return;
+ }
+
+ if (!PWINDOW->m_uSurface.xwayland->mapped) {
+ wlr_xwayland_surface_configure(PWINDOW->m_uSurface.xwayland, E->x, E->y, E->width, E->height);
return;
}
- wlr_xwayland_surface_configure(PWINDOW->m_uSurface.xwayland, E->x, E->y, E->width, E->height);
- wlr_xwayland_surface_restack(PWINDOW->m_uSurface.xwayland, NULL, XCB_STACK_MODE_ABOVE);
PWINDOW->m_vRealPosition.setValueAndWarp(Vector2D(E->x, E->y));
PWINDOW->m_vRealSize.setValueAndWarp(Vector2D(E->width, E->height));
- PWINDOW->m_vPosition = PWINDOW->m_vPosition;
- PWINDOW->m_vSize = PWINDOW->m_vSize;
+ PWINDOW->m_vPosition = PWINDOW->m_vRealPosition.vec();
+ PWINDOW->m_vSize = PWINDOW->m_vRealSize.vec();
- wlr_seat_pointer_clear_focus(g_pCompositor->m_sSeat.seat);
+ wlr_xwayland_surface_configure(PWINDOW->m_uSurface.xwayland, E->x, E->y, E->width, E->height);
+
+ g_pCompositor->moveWindowToTop(PWINDOW);
+
+ PWINDOW->m_bCreatedOverFullscreen = true;
g_pInputManager->refocus();
+
+ g_pHyprRenderer->damageWindow(PWINDOW);
}
void Events::listener_surfaceXWayland(wl_listener* listener, void* data) {