devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=c5d50e050a0bc3162ec3e24422240f77ea7ceea4
commit c5d50e050a0bc3162ec3e24422240f77ea7ceea4 Author: Chris Michael <cp.mich...@samsung.com> Date: Thu Oct 16 17:10:01 2014 -0400 add evas callback function for mouse down event Signed-off-by: Chris Michael <cp.mich...@samsung.com> --- src/bin/e_comp_wl.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 2825805..1796b40 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -186,6 +186,51 @@ _e_comp_wl_evas_cb_mouse_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *o } static void +_e_comp_wl_evas_cb_mouse_down(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event) +{ + E_Client *ec; + Evas_Event_Mouse_Down *ev; + struct wl_resource *res; + struct wl_client *wc; + Eina_List *l; + uint32_t serial, btn; + + ev = event; + if (!(ec = data)) return; + if (ec->cur_mouse_action) return; + if (e_object_is_del(E_OBJECT(ec))) return; + if (e_client_util_ignored_get(ec)) return; + + switch (ev->button) + { + case 1: + btn = BTN_LEFT; + break; + case 2: + btn = BTN_MIDDLE; + break; + case 3: + btn = BTN_RIGHT; + break; + default: + btn = ev->button; + break; + } + + ec->comp->wl_comp_data->ptr.button = btn; + + wc = wl_resource_get_client(ec->comp_data->surface); + serial = wl_display_next_serial(ec->comp->wl_comp_data->wl.disp); + EINA_LIST_FOREACH(ec->comp->wl_comp_data->ptr.resources, l, res) + { + if (!e_comp_wl_input_pointer_check(res)) continue; + if (wl_resource_get_client(res) != wc) continue; + wl_pointer_send_button(res, serial, ev->timestamp, btn, + WL_POINTER_BUTTON_STATE_PRESSED); + } +} + +static void _e_comp_wl_client_evas_init(E_Client *ec) { evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_SHOW, @@ -200,6 +245,8 @@ _e_comp_wl_client_evas_init(E_Client *ec) _e_comp_wl_evas_cb_mouse_out, ec); evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOUSE_MOVE, _e_comp_wl_evas_cb_mouse_move, ec); + evas_object_event_callback_add(ec->frame, EVAS_CALLBACK_MOUSE_DOWN, + _e_comp_wl_evas_cb_mouse_down, ec); ec->comp_data->evas_init = EINA_TRUE; } --