From: Taekyun Kim Date: Fri, 16 Oct 2015 10:24:32 +0000 (+0900) Subject: pepper: Don't internally send enter/leave event for keyboard X-Git-Tag: accepted/tizen/mobile/20151221.050925~34^2~64 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=969a739ef691de72d4d8eca38a39a09e615c4745;p=platform%2Fcore%2Fuifw%2Fpepper.git pepper: Don't internally send enter/leave event for keyboard Change-Id: I9fff0b38d531637c40b538476d5ab636655edcca --- diff --git a/src/lib/pepper/keyboard.c b/src/lib/pepper/keyboard.c index c2f6564..00b72f1 100644 --- a/src/lib/pepper/keyboard.c +++ b/src/lib/pepper/keyboard.c @@ -205,9 +205,10 @@ pepper_keyboard_handle_event(pepper_keyboard_t *keyboard, uint32_t id, pepper_in } static void -keyboard_handle_focus_destroy(struct wl_listener *listener, void *data) +keyboard_handle_focus_destroy(pepper_event_listener_t *listener, pepper_object_t *surface, + uint32_t id, void *info, void *data) { - pepper_keyboard_t *keyboard = pepper_container_of(listener, keyboard, focus_destroy_listener); + pepper_keyboard_t *keyboard = data; pepper_keyboard_set_focus(keyboard, NULL); if (keyboard->grab) @@ -224,7 +225,6 @@ pepper_keyboard_create(pepper_seat_t *seat) keyboard->seat = seat; wl_list_init(&keyboard->resource_list); - keyboard->focus_destroy_listener.notify = keyboard_handle_focus_destroy; wl_array_init(&keyboard->keys); @@ -240,7 +240,7 @@ pepper_keyboard_destroy(pepper_keyboard_t *keyboard) keyboard->grab->cancel(keyboard, keyboard->data); if (keyboard->focus) - wl_list_remove(&keyboard->focus_destroy_listener.link); + pepper_event_listener_remove(keyboard->focus_destroy_listener); wl_array_release(&keyboard->keys); free(keyboard); @@ -322,8 +322,7 @@ pepper_keyboard_set_focus(pepper_keyboard_t *keyboard, pepper_view_t *focus) if (keyboard->focus) { - pepper_keyboard_send_leave(keyboard); - wl_list_remove(&keyboard->focus_destroy_listener.link); + pepper_event_listener_remove(keyboard->focus_destroy_listener); pepper_object_emit_event(&keyboard->base, PEPPER_EVENT_FOCUS_LEAVE, keyboard->focus); pepper_object_emit_event(&keyboard->focus->base, PEPPER_EVENT_FOCUS_LEAVE, keyboard); } @@ -332,9 +331,12 @@ pepper_keyboard_set_focus(pepper_keyboard_t *keyboard, pepper_view_t *focus) if (focus) { - pepper_keyboard_send_enter(keyboard); - wl_resource_add_destroy_listener(focus->surface->resource, &keyboard->focus_destroy_listener); keyboard->focus_serial = wl_display_next_serial(keyboard->seat->compositor->display); + + keyboard->focus_destroy_listener = + pepper_object_add_event_listener(&focus->base, PEPPER_EVENT_OBJECT_DESTROY, 0, + keyboard_handle_focus_destroy, keyboard); + pepper_object_emit_event(&keyboard->base, PEPPER_EVENT_FOCUS_ENTER, focus); pepper_object_emit_event(&focus->base, PEPPER_EVENT_FOCUS_ENTER, keyboard); } diff --git a/src/lib/pepper/pepper-internal.h b/src/lib/pepper/pepper-internal.h index 4424ae3..933e363 100644 --- a/src/lib/pepper/pepper-internal.h +++ b/src/lib/pepper/pepper-internal.h @@ -259,7 +259,7 @@ struct pepper_keyboard struct wl_list resource_list; pepper_view_t *focus; - struct wl_listener focus_destroy_listener; + pepper_event_listener_t *focus_destroy_listener; uint32_t focus_serial; const pepper_keyboard_grab_t *grab;