Clients tests: Don't send leave events for destroyed surfaces
Change-Id: Ia7dd13f629439b116f494ff8b7432020a65ea1df Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
This commit is contained in:
parent
50c2ed1b9d
commit
174b7a9a30
@ -362,10 +362,8 @@ void Compositor::addSurface(Surface *surface)
|
|||||||
void Compositor::removeSurface(Surface *surface)
|
void Compositor::removeSurface(Surface *surface)
|
||||||
{
|
{
|
||||||
m_surfaces.removeOne(surface);
|
m_surfaces.removeOne(surface);
|
||||||
if (m_keyboard->focus() == surface)
|
m_keyboard->handleSurfaceDestroyed(surface);
|
||||||
m_keyboard->setFocus(0);
|
m_pointer->handleSurfaceDestroyed(surface);
|
||||||
if (m_pointer->focus() == surface)
|
|
||||||
m_pointer->setFocus(0, QPoint());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -267,6 +267,14 @@ void Keyboard::setFocus(Surface *surface)
|
|||||||
m_focus = surface;
|
m_focus = surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Keyboard::handleSurfaceDestroyed(Surface *surface)
|
||||||
|
{
|
||||||
|
if (surface == m_focus) {
|
||||||
|
m_focusResource = nullptr;
|
||||||
|
m_focus = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Keyboard::sendKey(uint32_t key, uint32_t state)
|
void Keyboard::sendKey(uint32_t key, uint32_t state)
|
||||||
{
|
{
|
||||||
if (m_focusResource) {
|
if (m_focusResource) {
|
||||||
@ -314,6 +322,14 @@ void Pointer::setFocus(Surface *surface, const QPoint &pos)
|
|||||||
m_focus = surface;
|
m_focus = surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Pointer::handleSurfaceDestroyed(Surface *surface)
|
||||||
|
{
|
||||||
|
if (m_focus == surface) {
|
||||||
|
m_focus = nullptr;
|
||||||
|
m_focusResource = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Pointer::sendMotion(const QPoint &pos)
|
void Pointer::sendMotion(const QPoint &pos)
|
||||||
{
|
{
|
||||||
if (m_focusResource)
|
if (m_focusResource)
|
||||||
|
@ -75,6 +75,7 @@ public:
|
|||||||
|
|
||||||
Surface *focus() const { return m_focus; }
|
Surface *focus() const { return m_focus; }
|
||||||
void setFocus(Surface *surface);
|
void setFocus(Surface *surface);
|
||||||
|
void handleSurfaceDestroyed(Surface *surface);
|
||||||
|
|
||||||
void sendKey(uint32_t key, uint32_t state);
|
void sendKey(uint32_t key, uint32_t state);
|
||||||
|
|
||||||
@ -97,6 +98,7 @@ public:
|
|||||||
Surface *focus() const { return m_focus; }
|
Surface *focus() const { return m_focus; }
|
||||||
|
|
||||||
void setFocus(Surface *surface, const QPoint &pos);
|
void setFocus(Surface *surface, const QPoint &pos);
|
||||||
|
void handleSurfaceDestroyed(Surface *surface);
|
||||||
void sendMotion(const QPoint &pos);
|
void sendMotion(const QPoint &pos);
|
||||||
void sendButton(uint32_t button, uint32_t state);
|
void sendButton(uint32_t button, uint32_t state);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user