From: Sung-Jin Park Date: Tue, 25 Aug 2020 09:36:54 +0000 (+0900) Subject: DSWaylandKeyboard: sendEnter when the focused client get wl_keyboard X-Git-Tag: accepted/tizen/unified/20200827.105812~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=500c21a70b4b72fb2c090a8dc60341c6f9048106;p=platform%2Fcore%2Fuifw%2Flibds.git DSWaylandKeyboard: sendEnter when the focused client get wl_keyboard Change-Id: I2f36a87bfbe34bda11ed91b0c197de958f09c11e Signed-off-by: Sung-Jin Park --- diff --git a/src/DSWaylandServer/DSWaylandKeyboard.cpp b/src/DSWaylandServer/DSWaylandKeyboard.cpp index 3ca2388..8002088 100644 --- a/src/DSWaylandServer/DSWaylandKeyboard.cpp +++ b/src/DSWaylandServer/DSWaylandKeyboard.cpp @@ -211,6 +211,21 @@ void DSWaylandKeyboardPrivate::sendKey(uint32_t key, uint32_t state) std::for_each(resMap.begin(), resMap.end(), func); } +void DSWaylandKeyboardPrivate::__addClient(struct ::wl_client *wlClient, uint32_t id, int version) +{ + wl_keyboard::add(wlClient, id, version); + + if (__focusSurface && __focusSurface->hasResource()) + { + DSWaylandClient *waylandClient = __focusSurface->getClient(); + if (waylandClient && (waylandClient->wlClient() == wlClient)) + { + DSLOG_INF("DSWaylandKeyboardPrivate", "Send enter to focusSurface(%p)", __focusSurface); + sendEnter(__focusSurface->getWlResource()); + } + } +} + /* Begin Public Class Implementation */ DSWaylandKeyboard::DSWaylandKeyboard(DSWaylandSeat *seat) : DSObject(), _d_ptr(std::make_unique(seat, this)) @@ -264,7 +279,7 @@ void DSWaylandKeyboard::addClient(DSWaylandClient *client, uint32_t id, int vers DSLOG_INF("DSWaylandKeyboard", "addClient(dswlClient=%p, id=%u, version=%d", client, id, version); - priv->add(client->wlClient(), id, version); + priv->__addClient(client->wlClient(), id, version); } void DSWaylandKeyboard::setFocus(DSWaylandSurface *waylandSurface) diff --git a/src/DSWaylandServer/DSWaylandKeyboardPrivate.h b/src/DSWaylandServer/DSWaylandKeyboardPrivate.h index f3be21d..48f4665 100644 --- a/src/DSWaylandServer/DSWaylandKeyboardPrivate.h +++ b/src/DSWaylandServer/DSWaylandKeyboardPrivate.h @@ -64,6 +64,8 @@ protected: void sendModifiers(struct ::wl_resource *surface); private: + void __addClient(struct ::wl_client *wlClient, uint32_t id, int version); + DSWaylandSeat *__seat; DSXkb *__xkb; DSWaylandCompositor *__compositor;