void QWaylandKeyboardPrivate::modifiers(uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { if (focusResource) { send_modifiers(focusResource->handle, serial, mods_depressed, mods_latched, mods_locked, group); } }
void Keyboard::setFocus(Surface *surface) { if (m_focusResource && m_focus != surface) { uint32_t serial = m_compositor->nextSerial(); send_leave(m_focusResource->handle, serial, m_focus->resource()->handle); } Resource *resource = surface ? resourceMap().value(surface->resource()->client()) : 0; if (resource && (m_focus != surface || m_focusResource != resource)) { uint32_t serial = m_compositor->nextSerial(); send_modifiers(resource->handle, serial, 0, 0, 0, 0); send_enter(resource->handle, serial, surface->resource()->handle, QByteArray()); } m_focusResource = resource; m_focus = surface; }
void QWaylandKeyboardPrivate::sendEnter(QWaylandSurface *surface, Resource *keyboardResource) { uint32_t serial = compositor()->nextSerial(); send_modifiers(keyboardResource->handle, serial, modsDepressed, modsLatched, modsLocked, group); send_enter(keyboardResource->handle, serial, surface->resource(), QByteArray::fromRawData((char *)keys.data(), keys.size() * sizeof(uint32_t))); }