forked from quickshell/quickshell
		
	core/popupwindow: wait for polish to reposition
This commit is contained in:
		
							parent
							
								
									b67f92bc13
								
							
						
					
					
						commit
						adcef7fc30
					
				
					 2 changed files with 17 additions and 2 deletions
				
			
		| 
						 | 
					@ -126,7 +126,20 @@ qint32 ProxyPopupWindow::relativeY() const {
 | 
				
			||||||
PopupAnchor* ProxyPopupWindow::anchor() { return &this->mAnchor; }
 | 
					PopupAnchor* ProxyPopupWindow::anchor() { return &this->mAnchor; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ProxyPopupWindow::reposition() {
 | 
					void ProxyPopupWindow::reposition() {
 | 
				
			||||||
	if (this->window != nullptr) {
 | 
						// not gated on pendingReposition as a polish might not be triggered in edge cases
 | 
				
			||||||
		PopupPositioner::instance()->reposition(&this->mAnchor, this->window);
 | 
						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);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,6 +87,7 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void completeWindow() override;
 | 
						void completeWindow() override;
 | 
				
			||||||
	void postCompleteWindow() override;
 | 
						void postCompleteWindow() override;
 | 
				
			||||||
 | 
						void onPolished() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void setScreen(QuickshellScreenInfo* screen) override;
 | 
						void setScreen(QuickshellScreenInfo* screen) override;
 | 
				
			||||||
	void setVisible(bool visible) override;
 | 
						void setVisible(bool visible) override;
 | 
				
			||||||
| 
						 | 
					@ -119,4 +120,5 @@ private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	PopupAnchor mAnchor {this};
 | 
						PopupAnchor mAnchor {this};
 | 
				
			||||||
	bool wantsVisible = false;
 | 
						bool wantsVisible = false;
 | 
				
			||||||
 | 
						bool pendingReposition = false;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue