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);
|
||||
|
||||
// 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