cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4baeb17dbab8e438465b402dc6d11bf46613f506
commit 4baeb17dbab8e438465b402dc6d11bf46613f506 Author: Cedric BAIL <ced...@osg.samsung.com> Date: Tue May 9 15:54:45 2017 -0700 evas: adjust pointer mode set to work in headless scenario. With the wayland backend, it is posible to have no seat connected until later. This would lead to calling evas_object_pointer_mode_set and fail without returning a boolean it was impossible to detect it did fail. This patch correct it. --- src/lib/evas/canvas/efl_canvas_object.eo | 6 ++++++ src/lib/evas/canvas/evas_events.c | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lib/evas/canvas/efl_canvas_object.eo b/src/lib/evas/canvas/efl_canvas_object.eo index 458c1ae..b2569ce 100644 --- a/src/lib/evas/canvas/efl_canvas_object.eo +++ b/src/lib/evas/canvas/efl_canvas_object.eo @@ -33,6 +33,7 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator, pointer_mode: Efl.Input.Object_Pointer_Mode; [[The pointer mode]] } set { + return: bool; legacy: null; } get { @@ -58,6 +59,11 @@ abstract Efl.Canvas.Object (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Animator, See also: @.pointer_mode_by_device.get and @.pointer_mode_by_device.set Note: This function will only set/get the mode for the default pointer. ]] + get { + } + set { + return: bool; + } values { pointer_mode: Efl.Input.Object_Pointer_Mode; [[Input pointer mode]] } diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index dcb318d..afab40f 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -3647,7 +3647,7 @@ _efl_canvas_object_propagate_events_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Prot return !(obj->no_propagate); } -EOLIAN void +EOLIAN Eina_Bool _efl_canvas_object_pointer_mode_by_device_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Efl_Input_Device *dev, Evas_Object_Pointer_Mode setting) { int addgrab; @@ -3657,13 +3657,13 @@ _efl_canvas_object_pointer_mode_by_device_set(Eo *eo_obj, Evas_Object_Protected_ Evas_Object_Pointer_Data *obj_pdata; pdata = _evas_pointer_data_by_device_get(obj->layer->evas, dev); - if (!pdata) return; + if (!pdata) return EINA_FALSE; obj_pdata = _evas_object_pointer_data_get(pdata, obj); - EINA_SAFETY_ON_NULL_RETURN(obj_pdata); + EINA_SAFETY_ON_NULL_RETURN_VAL(obj_pdata, EINA_FALSE); /* ignore no-ops */ - if (obj_pdata->pointer_mode == setting) return; + if (obj_pdata->pointer_mode == setting) return EINA_FALSE; /* adjust by number of pointer down events */ addgrab = pdata->downs; @@ -3725,6 +3725,7 @@ _efl_canvas_object_pointer_mode_by_device_set(Eo *eo_obj, Evas_Object_Protected_ pdata->mouse_grabbed += addgrab; } obj_pdata->pointer_mode = setting; + return EINA_TRUE; } EOLIAN Evas_Object_Pointer_Mode @@ -3744,7 +3745,7 @@ _efl_canvas_object_pointer_mode_by_device_get(Eo *eo_obj EINA_UNUSED, return obj_pdata->pointer_mode; } -EOLIAN void +EOLIAN Eina_Bool _efl_canvas_object_pointer_mode_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object_Pointer_Mode setting) { --