From d9757b61bfb7dcfaf3d903092435a1aaff52b7ed Mon Sep 17 00:00:00 2001 From: Vaxry Date: Thu, 22 Feb 2024 17:33:16 +0000 Subject: [PATCH] xdg: manually schedule initial configures chasing wlroots fixes #4801 --- src/events/Popups.cpp | 5 +++++ src/events/Windows.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/events/Popups.cpp b/src/events/Popups.cpp index ae95bc5e..41707b6a 100644 --- a/src/events/Popups.cpp +++ b/src/events/Popups.cpp @@ -228,6 +228,11 @@ void Events::listener_unmapPopupXDG(void* owner, void* data) { void Events::listener_commitPopupXDG(void* owner, void* data) { SXDGPopup* PPOPUP = (SXDGPopup*)owner; + if (PPOPUP->popup->base->initial_commit) { + wlr_xdg_surface_schedule_configure(PPOPUP->popup->base); + return; + } + if (g_pCompositor->windowValidMapped(PPOPUP->parentWindow)) { PPOPUP->lx = PPOPUP->parentWindow->m_vRealPosition.vec().x; PPOPUP->ly = PPOPUP->parentWindow->m_vRealPosition.vec().y; diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index ea45ad48..0854f68e 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -804,6 +804,11 @@ void Events::listener_ackConfigure(void* owner, void* data) { void Events::listener_commitWindow(void* owner, void* data) { CWindow* PWINDOW = (CWindow*)owner; + if (!PWINDOW->m_bIsX11 && PWINDOW->m_uSurface.xdg->initial_commit) { + wlr_xdg_toplevel_set_size(PWINDOW->m_uSurface.xdg->toplevel, 0, 0); + return; + } + if (!PWINDOW->m_bIsMapped || PWINDOW->isHidden()) return;