diff --git a/src/desktop/Popup.cpp b/src/desktop/Popup.cpp index f0fd556c..131a26b5 100644 --- a/src/desktop/Popup.cpp +++ b/src/desktop/Popup.cpp @@ -55,7 +55,7 @@ void CPopup::initAllSignals() { } void CPopup::onNewPopup(SP popup) { - const auto POPUP = m_vChildren.emplace_back(std::make_unique(popup, this)).get(); + const auto POPUP = m_vChildren.emplace_back(makeShared(popup, this)).get(); Debug::log(LOG, "New popup at {:x}", (uintptr_t)POPUP); } @@ -250,7 +250,8 @@ void CPopup::recheckTree() { } void CPopup::recheckChildrenRecursive() { - for (auto& c : m_vChildren) { + auto cpy = m_vChildren; + for (auto& c : cpy) { c->onCommit(true); c->recheckChildrenRecursive(); } diff --git a/src/desktop/Popup.hpp b/src/desktop/Popup.hpp index 47e180a8..d045cd41 100644 --- a/src/desktop/Popup.hpp +++ b/src/desktop/Popup.hpp @@ -60,8 +60,8 @@ class CPopup { bool m_bMapped = false; // - std::vector> m_vChildren; - std::unique_ptr m_pSubsurfaceHead; + std::vector> m_vChildren; + std::unique_ptr m_pSubsurfaceHead; struct { CHyprSignalListener newPopup;