: DSObjectPrivate(keyboard),
__p_ptr(keyboard),
__seat(seat),
- __xkb(seat->getXkb()),
- __compositor(seat->getCompositor()),
+ __xkb(seat ? (seat->getXkb()) : nullptr),
+ __compositor(seat ? (seat->getCompositor()) : nullptr),
__focusSurface(nullptr),
__focusClient(nullptr),
__repeatRate(0),
if (priv->__focusSurface != waylandSurface)
{
- if (priv->__focusSurface)
+ if (priv->__focusSurface && priv->__focusSurface->hasResource())
{
struct ::wl_resource *surfaceToLeave = priv->__focusSurface->getWlResource();
priv->sendModifiers(surfaceToLeave);
priv->sendLeave(surfaceToLeave);
}
- struct ::wl_resource *surfaceToEnter = waylandSurface->getWlResource();
- priv->sendEnter(surfaceToEnter);
+ if (waylandSurface && waylandSurface->hasResource())
+ {
+ struct ::wl_resource *surfaceToEnter = waylandSurface->getWlResource();
+ priv->sendEnter(surfaceToEnter);
- priv->__focusSurface = waylandSurface;
- priv->__focusClient = wl_resource_get_client(waylandSurface->getWlResource());
+ priv->__focusSurface = waylandSurface;
+ priv->__focusClient = wl_resource_get_client(waylandSurface->getWlResource());
+ }
}
}