core/popupwindow: wait for polish to reposition

This commit is contained in:
outfoxxed 2025-05-29 16:15:25 -07:00
parent b67f92bc13
commit adcef7fc30
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
2 changed files with 17 additions and 2 deletions

View file

@ -126,7 +126,20 @@ qint32 ProxyPopupWindow::relativeY() const {
PopupAnchor* ProxyPopupWindow::anchor() { return &this->mAnchor; }
void ProxyPopupWindow::reposition() {
if (this->window != nullptr) {
PopupPositioner::instance()->reposition(&this->mAnchor, this->window);
// not gated on pendingReposition as a polish might not be triggered in edge cases
if (this->window) {
this->pendingReposition = true;
this->schedulePolish();
}
}
void ProxyPopupWindow::onPolished() {
this->ProxyWindowBase::onPolished();
if (this->pendingReposition) {
this->pendingReposition = false;
if (this->window) {
PopupPositioner::instance()->reposition(&this->mAnchor, this->window);
}
}
}