return res;
}
+PEPPER_API void
+keyrouter_set_focus_client(keyrouter_t *keyrouter, void *focus_client)
+{
+ PEPPER_CHECK(keyrouter, return, "keyrouter is invalid.\n");
+ keyrouter->focus_client = focus_client;
+
+ if (focus_client)
+ PEPPER_TRACE("[%s] focus client has been set. (focus_client=0x%p)\n", __FUNCTION__, focus_client);
+ else
+ PEPPER_TRACE("[%s] focus client has been set to NULL.\n", __FUNCTION__);
+}
+
+PEPPER_API void
+keyrouter_set_top_client(keyrouter_t *keyrouter, void *top_client)
+{
+ PEPPER_CHECK(keyrouter, return, "keyrouter is invalid.\n");
+
+ keyrouter->top_client = top_client;
+
+ if (top_client)
+ PEPPER_TRACE("[%s] top client has been set. (top_client=0x%p)\n", __FUNCTION__, top_client);
+ else
+ PEPPER_TRACE("[%s] top client has been set to NULL.\n", __FUNCTION__);
+}
+
PEPPER_API int
keyrouter_key_process(keyrouter_t *keyrouter,
int keycode, int pressed, pepper_list_t *delivery_list)
PEPPER_API void keyrouter_ungrab_key(keyrouter_t *keyrouter, int type, int keycode, void *data);
PEPPER_API int keyrouter_key_process(keyrouter_t *keyrouter, int keycode, int pressed, pepper_list_t *delivery_list);
+PEPPER_API void keyrouter_set_focus_client(keyrouter_t *keyrouter, void *focus_client);
+PEPPER_API void keyrouter_set_top_client(keyrouter_t *keyrouter, void *top_client);
+
#ifdef __cplusplus
}
#endif
int err;
};
+static struct wl_client *
+_pepper_keyrouter_get_client_from_view(pepper_view_t *view)
+{
+ pepper_surface_t *surface = pepper_view_get_surface(view);
+ PEPPER_CHECK(surface, return NULL, "No surfce available for the given view.\n");
+
+ struct wl_resource *resource = pepper_surface_get_resource(surface);
+
+ if (resource)
+ return wl_resource_get_client(resource);
+
+ return NULL;
+}
+
+
PEPPER_API void
pepper_keyrouter_set_seat(pepper_keyrouter_t *pepper_keyrouter, pepper_seat_t *seat)
{
{
PEPPER_CHECK(pk, return, "pepper keyrouter is invalid.\n");
PEPPER_CHECK(pk->keyboard, return, "No keyboard is available for pepper keyrouter.\n");
- PEPPER_CHECK(focus_view, return, "Given focus_view is invalid.\n");
pk->focus_view = focus_view;
- PEPPER_TRACE("[%s] focus_view has been set. (focus=0x%p)\n", __FUNCTION__, focus_view);
+ keyrouter_set_focus_client(pk->keyrouter, _pepper_keyrouter_get_client_from_view(focus_view));
}
PEPPER_API void
pepper_keyrouter_set_top_view(pepper_keyrouter_t *pk, pepper_view_t *top_view)
{
PEPPER_CHECK(pk, return, "pepper keyrouter is invalid.\n");
- PEPPER_CHECK(top_view, return, "Given top_view is invalid.\n");
pk->top_view = top_view;
- PEPPER_TRACE("[%s] top_view has been set. (top=0x%p)\n", __FUNCTION__, top_view);
+ keyrouter_set_top_client(pk->keyrouter, _pepper_keyrouter_get_client_from_view(top_view));
}
static void