mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 21:45:59 +01:00
Spam the protocols less with resizes of XDG
This commit is contained in:
parent
0f19bd99f8
commit
233bad5011
3 changed files with 12 additions and 1 deletions
|
@ -51,6 +51,10 @@ public:
|
||||||
CAnimatedVariable m_vRealPosition;
|
CAnimatedVariable m_vRealPosition;
|
||||||
CAnimatedVariable m_vRealSize;
|
CAnimatedVariable m_vRealSize;
|
||||||
|
|
||||||
|
// for not spamming the protocols
|
||||||
|
Vector2D m_vReportedPosition;
|
||||||
|
Vector2D m_vReportedSize;
|
||||||
|
|
||||||
// this is used for pseudotiling
|
// this is used for pseudotiling
|
||||||
bool m_bIsPseudotiled = false;
|
bool m_bIsPseudotiled = false;
|
||||||
Vector2D m_vPseudoSize = Vector2D(0,0);
|
Vector2D m_vPseudoSize = Vector2D(0,0);
|
||||||
|
|
|
@ -598,7 +598,7 @@ void Events::listener_newXDGSurface(wl_listener* listener, void* data) {
|
||||||
Debug::log(LOG, "New XDG Surface created. (class: %s)", XDGSURFACE->toplevel->app_id);
|
Debug::log(LOG, "New XDG Surface created. (class: %s)", XDGSURFACE->toplevel->app_id);
|
||||||
|
|
||||||
if (XDGSURFACE->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL)
|
if (XDGSURFACE->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL)
|
||||||
return; // TODO: handle?
|
return;
|
||||||
|
|
||||||
const auto PNEWWINDOW = g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
|
const auto PNEWWINDOW = g_pCompositor->m_vWindows.emplace_back(std::make_unique<CWindow>()).get();
|
||||||
PNEWWINDOW->m_uSurface.xdg = XDGSURFACE;
|
PNEWWINDOW->m_uSurface.xdg = XDGSURFACE;
|
||||||
|
|
|
@ -121,6 +121,13 @@ void CHyprXWaylandManager::sendCloseWindow(CWindow* pWindow) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHyprXWaylandManager::setWindowSize(CWindow* pWindow, const Vector2D& size) {
|
void CHyprXWaylandManager::setWindowSize(CWindow* pWindow, const Vector2D& size) {
|
||||||
|
|
||||||
|
if ((pWindow->m_vReportedSize == size && pWindow->m_vRealPosition.vec() == pWindow->m_vReportedPosition) || (pWindow->m_vReportedSize == size && !pWindow->m_bIsX11))
|
||||||
|
return;
|
||||||
|
|
||||||
|
pWindow->m_vReportedPosition = pWindow->m_vRealPosition.vec();
|
||||||
|
pWindow->m_vReportedSize = size;
|
||||||
|
|
||||||
if (pWindow->m_bIsX11)
|
if (pWindow->m_bIsX11)
|
||||||
wlr_xwayland_surface_configure(pWindow->m_uSurface.xwayland, pWindow->m_vRealPosition.vec().x, pWindow->m_vRealPosition.vec().y, size.x, size.y);
|
wlr_xwayland_surface_configure(pWindow->m_uSurface.xwayland, pWindow->m_vRealPosition.vec().x, pWindow->m_vRealPosition.vec().y, size.x, size.y);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue