diff --git a/src/desktop/Popup.cpp b/src/desktop/Popup.cpp index 92f0e312..29594e47 100644 --- a/src/desktop/Popup.cpp +++ b/src/desktop/Popup.cpp @@ -116,6 +116,7 @@ void CPopup::onMap() { m_pSubsurfaceHead = std::make_unique(this); unconstrain(); + sendScale(); } void CPopup::onUnmap() { @@ -234,3 +235,12 @@ void CPopup::recheckChildrenRecursive() { Vector2D CPopup::size() { return m_vLastSize; } + +void CPopup::sendScale() { + if (m_pWindowOwner) + g_pCompositor->setPreferredScaleForSurface(m_sWLSurface.wlr(), m_pWindowOwner->m_pWLSurface.m_fLastScale); + else if (m_pLayerOwner) + g_pCompositor->setPreferredScaleForSurface(m_sWLSurface.wlr(), m_pLayerOwner->surface.m_fLastScale); + else + UNREACHABLE(); +} diff --git a/src/desktop/Popup.hpp b/src/desktop/Popup.hpp index 48dae088..0ac460d1 100644 --- a/src/desktop/Popup.hpp +++ b/src/desktop/Popup.hpp @@ -65,6 +65,7 @@ class CPopup { void initAllSignals(); void unconstrain(); void recheckChildrenRecursive(); + void sendScale(); Vector2D localToGlobal(const Vector2D& rel); Vector2D t1ParentCoords();