[wayland] Sync ShellClient's geometry with internal QWindow's geometry
Update geometry when the referenced internal QWindow changes position. This makes the close button in PresentWindows work.
This commit is contained in:
parent
75bd798ad9
commit
2ff903e8b3
2 changed files with 12 additions and 1 deletions
|
@ -49,7 +49,7 @@ ShellClient::ShellClient(ShellSurfaceInterface *surface)
|
||||||
ready_for_painting = false;
|
ready_for_painting = false;
|
||||||
}
|
}
|
||||||
if (m_internalWindow) {
|
if (m_internalWindow) {
|
||||||
setGeometry(m_internalWindow->geometry());
|
updateInternalWindowGeometry();
|
||||||
} else {
|
} else {
|
||||||
setGeometry(QRect(QPoint(0, 0), m_clientSize));
|
setGeometry(QRect(QPoint(0, 0), m_clientSize));
|
||||||
}
|
}
|
||||||
|
@ -361,8 +361,18 @@ void ShellClient::findInternalWindow()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
m_internalWindow = w;
|
m_internalWindow = w;
|
||||||
|
connect(m_internalWindow, &QWindow::xChanged, this, &ShellClient::updateInternalWindowGeometry);
|
||||||
|
connect(m_internalWindow, &QWindow::xChanged, this, &ShellClient::updateInternalWindowGeometry);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShellClient::updateInternalWindowGeometry()
|
||||||
|
{
|
||||||
|
if (!m_internalWindow) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setGeometry(m_internalWindow->geometry());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,7 @@ private:
|
||||||
void destroyClient();
|
void destroyClient();
|
||||||
void createWindowId();
|
void createWindowId();
|
||||||
void findInternalWindow();
|
void findInternalWindow();
|
||||||
|
void updateInternalWindowGeometry();
|
||||||
static void deleteClient(ShellClient *c);
|
static void deleteClient(ShellClient *c);
|
||||||
|
|
||||||
KWayland::Server::ShellSurfaceInterface *m_shellSurface;
|
KWayland::Server::ShellSurfaceInterface *m_shellSurface;
|
||||||
|
|
Loading…
Reference in a new issue