{
if (hi->focus_view)
pepper_keyboard_send_leave(hi->keyboard, hi->focus_view);
- pepper_keyboard_set_focus(hi->keyboard, focus_view);
- pepper_keyboard_send_enter(hi->keyboard, focus_view);
+
+ if (focus_view) {
+ pepper_keyboard_set_focus(hi->keyboard, focus_view);
+ pepper_keyboard_send_enter(hi->keyboard, focus_view);
+ }
hi->focus_view = focus_view;
}
hi = (headless_input_t *)pepper_object_get_user_data((pepper_object_t *) compositor, &KEY_INPUT);
PEPPER_CHECK(hi, return, "Invalid headless input.\n");
+ if (hi->top_view == top_view) return;
+
hi->top_view = top_view;
if (hi->keyrouter)
PEPPER_API void
pepper_keyrouter_set_focus_view(pepper_keyrouter_t *pk, pepper_view_t *focus_view)
{
+ struct wl_client *client = NULL;
PEPPER_CHECK(pk, return, "pepper keyrouter is invalid.\n");
PEPPER_CHECK(pk->keyboard, return, "No keyboard is available for pepper keyrouter.\n");
pk->focus_view = focus_view;
- keyrouter_set_focus_client(pk->keyrouter, _pepper_keyrouter_get_client_from_view(focus_view));
+
+ if (focus_view)
+ client = _pepper_keyrouter_get_client_from_view(focus_view);
+
+ keyrouter_set_focus_client(pk->keyrouter, client);
}
PEPPER_API void
pepper_keyrouter_set_top_view(pepper_keyrouter_t *pk, pepper_view_t *top_view)
{
+ struct wl_client *client = NULL;
PEPPER_CHECK(pk, return, "pepper keyrouter is invalid.\n");
pk->top_view = top_view;
- keyrouter_set_top_client(pk->keyrouter, _pepper_keyrouter_get_client_from_view(top_view));
+
+ if (top_view)
+ client = _pepper_keyrouter_get_client_from_view(top_view);
+
+ keyrouter_set_top_client(pk->keyrouter, client);
}
static void