mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-22 16:25:59 +01:00
parent
f801d15947
commit
f590505daf
1 changed files with 12 additions and 6 deletions
|
@ -100,10 +100,12 @@ void CPopup::onDestroy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPopup::onMap() {
|
void CPopup::onMap() {
|
||||||
m_vLastSize = {m_pWLR->current.geometry.width, m_pWLR->current.geometry.height};
|
m_vLastSize = {m_pWLR->base->current.geometry.width, m_pWLR->base->current.geometry.height};
|
||||||
const auto COORDS = coordsGlobal();
|
const auto COORDS = coordsGlobal();
|
||||||
|
|
||||||
CBox box = {COORDS, m_vLastSize};
|
CBox box;
|
||||||
|
wlr_surface_get_extends(m_sWLSurface.wlr(), box.pWlr());
|
||||||
|
box.applyFromWlr().translate(COORDS);
|
||||||
g_pHyprRenderer->damageBox(&box);
|
g_pHyprRenderer->damageBox(&box);
|
||||||
|
|
||||||
m_vLastPos = coordsRelativeToParent();
|
m_vLastPos = coordsRelativeToParent();
|
||||||
|
@ -116,10 +118,12 @@ void CPopup::onMap() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPopup::onUnmap() {
|
void CPopup::onUnmap() {
|
||||||
m_vLastSize = {m_pWLR->current.geometry.width, m_pWLR->current.geometry.height};
|
m_vLastSize = {m_pWLR->base->current.geometry.width, m_pWLR->base->current.geometry.height};
|
||||||
const auto COORDS = coordsGlobal();
|
const auto COORDS = coordsGlobal();
|
||||||
|
|
||||||
CBox box = {COORDS, m_vLastSize};
|
CBox box;
|
||||||
|
wlr_surface_get_extends(m_sWLSurface.wlr(), box.pWlr());
|
||||||
|
box.applyFromWlr().translate(COORDS);
|
||||||
g_pHyprRenderer->damageBox(&box);
|
g_pHyprRenderer->damageBox(&box);
|
||||||
|
|
||||||
m_pSubsurfaceHead.reset();
|
m_pSubsurfaceHead.reset();
|
||||||
|
@ -136,10 +140,10 @@ void CPopup::onCommit() {
|
||||||
const auto COORDS = coordsGlobal();
|
const auto COORDS = coordsGlobal();
|
||||||
const auto COORDSLOCAL = coordsRelativeToParent();
|
const auto COORDSLOCAL = coordsRelativeToParent();
|
||||||
|
|
||||||
if (m_vLastSize != Vector2D{m_pWLR->current.geometry.width, m_pWLR->current.geometry.height} || m_bRequestedReposition || m_vLastPos != COORDSLOCAL) {
|
if (m_vLastSize != Vector2D{m_pWLR->base->current.geometry.width, m_pWLR->base->current.geometry.height} || m_bRequestedReposition || m_vLastPos != COORDSLOCAL) {
|
||||||
CBox box = {localToGlobal(m_vLastPos), m_vLastSize};
|
CBox box = {localToGlobal(m_vLastPos), m_vLastSize};
|
||||||
g_pHyprRenderer->damageBox(&box);
|
g_pHyprRenderer->damageBox(&box);
|
||||||
m_vLastSize = {m_pWLR->current.geometry.width, m_pWLR->current.geometry.height};
|
m_vLastSize = {m_pWLR->base->current.geometry.width, m_pWLR->base->current.geometry.height};
|
||||||
box = {COORDS, m_vLastSize};
|
box = {COORDS, m_vLastSize};
|
||||||
g_pHyprRenderer->damageBox(&box);
|
g_pHyprRenderer->damageBox(&box);
|
||||||
|
|
||||||
|
@ -179,6 +183,8 @@ Vector2D CPopup::coordsRelativeToParent() {
|
||||||
|
|
||||||
CPopup* current = this;
|
CPopup* current = this;
|
||||||
|
|
||||||
|
offset -= {m_pWLR->base->current.geometry.x, m_pWLR->base->current.geometry.y};
|
||||||
|
|
||||||
while (current->m_pParent) {
|
while (current->m_pParent) {
|
||||||
|
|
||||||
offset += {current->m_sWLSurface.wlr()->current.dx, current->m_sWLSurface.wlr()->current.dy};
|
offset += {current->m_sWLSurface.wlr()->current.dx, current->m_sWLSurface.wlr()->current.dy};
|
||||||
|
|
Loading…
Reference in a new issue