core/window: add closed() signal to all window types
This commit is contained in:
		
							parent
							
								
									5706c09e6f
								
							
						
					
					
						commit
						a2146f6394
					
				
					 4 changed files with 17 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -188,7 +188,7 @@ void ProxyWindowBase::connectWindow() {
 | 
			
		|||
	this->window->setProxy(this);
 | 
			
		||||
 | 
			
		||||
	// clang-format off
 | 
			
		||||
	QObject::connect(this->window, &QWindow::visibilityChanged, this, &ProxyWindowBase::visibleChanged);
 | 
			
		||||
	QObject::connect(this->window, &QWindow::visibilityChanged, this, &ProxyWindowBase::onVisibleChanged);
 | 
			
		||||
	QObject::connect(this->window, &QWindow::xChanged, this, &ProxyWindowBase::xChanged);
 | 
			
		||||
	QObject::connect(this->window, &QWindow::yChanged, this, &ProxyWindowBase::yChanged);
 | 
			
		||||
	QObject::connect(this->window, &QWindow::widthChanged, this, &ProxyWindowBase::widthChanged);
 | 
			
		||||
| 
						 | 
				
			
			@ -226,6 +226,16 @@ void ProxyWindowBase::completeWindow() {
 | 
			
		|||
	emit this->screenChanged();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ProxyWindowBase::onVisibleChanged() {
 | 
			
		||||
	if (this->mVisible && !this->window->isVisible()) {
 | 
			
		||||
		this->mVisible = false;
 | 
			
		||||
		this->setVisibleDirect(false);
 | 
			
		||||
		emit this->closed();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	emit this->visibleChanged();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ProxyWindowBase::deleteOnInvisible() const { return false; }
 | 
			
		||||
 | 
			
		||||
QQuickWindow* ProxyWindowBase::backingWindow() const { return this->window; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,6 +141,7 @@ public:
 | 
			
		|||
	[[nodiscard]] QQmlListProperty<QObject> data();
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
	void closed();
 | 
			
		||||
	void windowConnected();
 | 
			
		||||
	void windowDestroyed();
 | 
			
		||||
	void visibleChanged();
 | 
			
		||||
| 
						 | 
				
			
			@ -160,6 +161,7 @@ signals:
 | 
			
		|||
	void polished();
 | 
			
		||||
 | 
			
		||||
protected slots:
 | 
			
		||||
	void onVisibleChanged();
 | 
			
		||||
	virtual void onWidthChanged();
 | 
			
		||||
	virtual void onHeightChanged();
 | 
			
		||||
	void onMaskChanged();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -133,6 +133,7 @@ QQmlListProperty<QObject> WindowInterface::data() const { return this->proxyWind
 | 
			
		|||
void WindowInterface::connectSignals() const {
 | 
			
		||||
	auto* window = this->proxyWindow();
 | 
			
		||||
	// clang-format off
 | 
			
		||||
	QObject::connect(window, &ProxyWindowBase::closed, this, &WindowInterface::closed);
 | 
			
		||||
	QObject::connect(window, &ProxyWindowBase::windowConnected, this, &WindowInterface::windowConnected);
 | 
			
		||||
	QObject::connect(window, &ProxyWindowBase::visibleChanged, this, &WindowInterface::visibleChanged);
 | 
			
		||||
	QObject::connect(window, &ProxyWindowBase::backerVisibilityChanged, this, &WindowInterface::backingWindowVisibleChanged);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -236,6 +236,9 @@ public:
 | 
			
		|||
	static QsWindowAttached* qmlAttachedProperties(QObject* object);
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
	/// This signal is emitted when the window is closed by the user, the display server,
 | 
			
		||||
	/// or an error. It is not emitted when @@visible is set to false.
 | 
			
		||||
	void closed();
 | 
			
		||||
	void windowConnected();
 | 
			
		||||
	void visibleChanged();
 | 
			
		||||
	void backingWindowVisibleChanged();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue