summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2015-01-19 14:53:00 +0200
committerGiulio Camuffo <giulio.camuffo@jollamobile.com>2015-01-19 15:13:41 +0100
commitc3fafd16d380e031463c3f9e25320e914afbccf0 (patch)
treee28d3ab0a923ba56f19ca273517542e2ea67939a
parentaaa97d529bbafe9d5637729126701794cbbf0fc1 (diff)
Unset the pointer focus if we're deleting the view holding it
Change-Id: I546c6ab2a060d76de18330766a0b2fba419589bd Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
-rw-r--r--src/compositor/compositor_api/qwaylandsurfaceview.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandsurfaceview.cpp b/src/compositor/compositor_api/qwaylandsurfaceview.cpp
index e6fd90587..664ab9805 100644
--- a/src/compositor/compositor_api/qwaylandsurfaceview.cpp
+++ b/src/compositor/compositor_api/qwaylandsurfaceview.cpp
@@ -42,6 +42,8 @@
#include "qwaylandsurfaceview.h"
#include "qwaylandsurface.h"
#include "qwaylandsurface_p.h"
+#include "qwaylandcompositor.h"
+#include "qwaylandinput.h"
QT_BEGIN_NAMESPACE
@@ -65,6 +67,10 @@ QWaylandSurfaceView::QWaylandSurfaceView(QWaylandSurface *surf)
QWaylandSurfaceView::~QWaylandSurfaceView()
{
if (d->surface) {
+ QWaylandInputDevice *i = d->surface->compositor()->defaultInputDevice();
+ if (i->mouseFocus() == this)
+ i->setMouseFocus(nullptr, QPointF());
+
d->surface->destroy();
d->surface->d_func()->views.removeOne(this);
}