forked from quickshell/quickshell
		
	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);
 | 
						this->window->setProxy(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// clang-format off
 | 
						// 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::xChanged, this, &ProxyWindowBase::xChanged);
 | 
				
			||||||
	QObject::connect(this->window, &QWindow::yChanged, this, &ProxyWindowBase::yChanged);
 | 
						QObject::connect(this->window, &QWindow::yChanged, this, &ProxyWindowBase::yChanged);
 | 
				
			||||||
	QObject::connect(this->window, &QWindow::widthChanged, this, &ProxyWindowBase::widthChanged);
 | 
						QObject::connect(this->window, &QWindow::widthChanged, this, &ProxyWindowBase::widthChanged);
 | 
				
			||||||
| 
						 | 
					@ -226,6 +226,16 @@ void ProxyWindowBase::completeWindow() {
 | 
				
			||||||
	emit this->screenChanged();
 | 
						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; }
 | 
					bool ProxyWindowBase::deleteOnInvisible() const { return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QQuickWindow* ProxyWindowBase::backingWindow() const { return this->window; }
 | 
					QQuickWindow* ProxyWindowBase::backingWindow() const { return this->window; }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -141,6 +141,7 @@ public:
 | 
				
			||||||
	[[nodiscard]] QQmlListProperty<QObject> data();
 | 
						[[nodiscard]] QQmlListProperty<QObject> data();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signals:
 | 
					signals:
 | 
				
			||||||
 | 
						void closed();
 | 
				
			||||||
	void windowConnected();
 | 
						void windowConnected();
 | 
				
			||||||
	void windowDestroyed();
 | 
						void windowDestroyed();
 | 
				
			||||||
	void visibleChanged();
 | 
						void visibleChanged();
 | 
				
			||||||
| 
						 | 
					@ -160,6 +161,7 @@ signals:
 | 
				
			||||||
	void polished();
 | 
						void polished();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected slots:
 | 
					protected slots:
 | 
				
			||||||
 | 
						void onVisibleChanged();
 | 
				
			||||||
	virtual void onWidthChanged();
 | 
						virtual void onWidthChanged();
 | 
				
			||||||
	virtual void onHeightChanged();
 | 
						virtual void onHeightChanged();
 | 
				
			||||||
	void onMaskChanged();
 | 
						void onMaskChanged();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -133,6 +133,7 @@ QQmlListProperty<QObject> WindowInterface::data() const { return this->proxyWind
 | 
				
			||||||
void WindowInterface::connectSignals() const {
 | 
					void WindowInterface::connectSignals() const {
 | 
				
			||||||
	auto* window = this->proxyWindow();
 | 
						auto* window = this->proxyWindow();
 | 
				
			||||||
	// clang-format off
 | 
						// clang-format off
 | 
				
			||||||
 | 
						QObject::connect(window, &ProxyWindowBase::closed, this, &WindowInterface::closed);
 | 
				
			||||||
	QObject::connect(window, &ProxyWindowBase::windowConnected, this, &WindowInterface::windowConnected);
 | 
						QObject::connect(window, &ProxyWindowBase::windowConnected, this, &WindowInterface::windowConnected);
 | 
				
			||||||
	QObject::connect(window, &ProxyWindowBase::visibleChanged, this, &WindowInterface::visibleChanged);
 | 
						QObject::connect(window, &ProxyWindowBase::visibleChanged, this, &WindowInterface::visibleChanged);
 | 
				
			||||||
	QObject::connect(window, &ProxyWindowBase::backerVisibilityChanged, this, &WindowInterface::backingWindowVisibleChanged);
 | 
						QObject::connect(window, &ProxyWindowBase::backerVisibilityChanged, this, &WindowInterface::backingWindowVisibleChanged);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -236,6 +236,9 @@ public:
 | 
				
			||||||
	static QsWindowAttached* qmlAttachedProperties(QObject* object);
 | 
						static QsWindowAttached* qmlAttachedProperties(QObject* object);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signals:
 | 
					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 windowConnected();
 | 
				
			||||||
	void visibleChanged();
 | 
						void visibleChanged();
 | 
				
			||||||
	void backingWindowVisibleChanged();
 | 
						void backingWindowVisibleChanged();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue