This is fixed in https://phab.enlightenment.org/D2379 On Apr 18, 2015 12:55 AM, "Davide Andreoli" <d...@gurumeditation.it> wrote:
> 2015-04-17 9:31 GMT+02:00 ChunEon Park <her...@naver.com>: > > > correct. > > thank you for reporting. > > > > > thanks for the quick fix. > > still "item,clicked" is never called (dunno if it's related), I opened a > bug for it: > https://phab.enlightenment.org/T2334 > > > > > ------------------------------------ > > -Regards, Hermet- > > > > -----Original Message----- > > From: "Davide Andreoli"<d...@gurumeditation.it> > > To: "Enlightenment developer list"< > > enlightenment-devel@lists.sourceforge.net>; > > Cc: > > Sent: 2015-04-17 (금) 06:01:00 > > Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: > > multibuttonentry: Add item long pressed callback. > > > > 2015-03-28 7:09 GMT+01:00 woochan lee <wc0917....@samsung.com>: > > > > > hermet pushed a commit to branch master. > > > > > > > > > > > > http://git.enlightenment.org/core/elementary.git/commit/?id=2ca3a0824756f5fff03b98f5100acc5b503698e6 > > > > > > commit 2ca3a0824756f5fff03b98f5100acc5b503698e6 > > > Author: woochan lee <wc0917....@samsung.com> > > > Date: Sat Mar 28 15:05:44 2015 +0900 > > > > > > multibuttonentry: Add item long pressed callback. > > > > > > Summary: Add long pressed callback for application. test code > changed > > > to following this change as well. > > > > > > > > I think this new callback have the wrong name, it is called > "longpressed", > > while it should be "item,longpressed" > > as it works on items and give the item in the callback. > > > > In fact this widget have "item,clicked" (that works on items) and > "clicked" > > (that works on the whole widget) > > > > Also note that "item,clicked" seems broken in my tests. It is never fired > > here... > > > > > > > > > @feature > > > > > > Reviewers: seoz, woohyun, Jaehyun, Hermet > > > > > > Differential Revision: https://phab.enlightenment.org/D2103 > > > > > > Conflicts: > > > > > > src/lib/elc_multibuttonentry.c > > > --- > > > src/bin/test_multibuttonentry.c 11 +++++++ > > > src/lib/elc_multibuttonentry.c 55 > > > +++++++++++++++++++++++++++++++++++ > > > src/lib/elc_multibuttonentry.h 1 + > > > src/lib/elm_multibuttonentry.eo 1 + > > > src/lib/elm_widget_multibuttonentry.h 7 ++++- > > > 5 files changed, 74 insertions(+), 1 deletion(-) > > > > > > diff --git a/src/bin/test_multibuttonentry.c > > > b/src/bin/test_multibuttonentry.c > > > index 83da32e..04c6499 100644 > > > --- a/src/bin/test_multibuttonentry.c > > > +++ b/src/bin/test_multibuttonentry.c > > > @@ -120,6 +120,16 @@ _shrink_state_changed_cb(void *data EINA_UNUSED, > > > printf("contracted state changed! \n"); > > > } > > > > > > +// "longpressed" smart callback > > > +static void > > > +_longpressed_cb(void *data EINA_UNUSED, > > > + Evas_Object *obj EINA_UNUSED, > > > + void *event_info EINA_UNUSED) > > > +{ > > > + printf("longpressed! \n"); > > > +} > > > + > > > + > > > // "item verified" confirm callback > > > static Eina_Bool > > > _item_filter_cb(Evas_Object *obj EINA_UNUSED, > > > @@ -198,6 +208,7 @@ _add_multibuttonentry(Evas_Object *parent) > > > evas_object_smart_callback_add(mbe, "expanded", _expanded_cb, > NULL); > > > evas_object_smart_callback_add(mbe, "contracted", _contracted_cb, > > > NULL); > > > evas_object_smart_callback_add(mbe, "shrink,state,changed", > > > _shrink_state_changed_cb, NULL); > > > + evas_object_smart_callback_add(mbe, "longpressed", _longpressed_cb, > > > NULL); > > > > > > btn = _format_change_btn_add(mbe); > > > elm_object_part_content_set(parent, "box", btn); > > > diff --git a/src/lib/elc_multibuttonentry.c > > > b/src/lib/elc_multibuttonentry.c > > > index f1e5e63..9e1a755 100644 > > > --- a/src/lib/elc_multibuttonentry.c > > > +++ b/src/lib/elc_multibuttonentry.c > > > @@ -28,6 +28,7 @@ static const char SIG_UNFOCUSED[] = "unfocused"; > > > static const char SIG_EXPANDED[] = "expanded"; > > > static const char SIG_CONTRACTED[] = "contracted"; > > > static const char SIG_EXPAND_STATE_CHANGED[] = "expand,state,changed"; > > > +static const char SIG_LONGPRESSED[] = "longpressed"; > > > static const Evas_Smart_Cb_Description _smart_callbacks[] = { > > > {SIG_ITEM_SELECTED, ""}, > > > {SIG_ITEM_ADDED, ""}, > > > @@ -39,6 +40,7 @@ static const Evas_Smart_Cb_Description > > > _smart_callbacks[] = { > > > {SIG_EXPANDED, ""}, > > > {SIG_CONTRACTED, ""}, > > > {SIG_EXPAND_STATE_CHANGED, ""}, > > > + {SIG_LONGPRESSED, ""}, > > > {NULL, NULL} > > > }; > > > > > > @@ -513,6 +515,51 @@ _on_item_deleted(void *data, > > > } > > > } > > > > > > +static Eina_Bool > > > +_long_press_cb(void *data) > > > +{ > > > + Elm_Multibuttonentry_Item_Data *it = data; > > > + > > > + ELM_MULTIBUTTONENTRY_DATA_GET(WIDGET(it), sd); > > > + > > > + sd->longpress_timer = NULL; > > > + > > > + evas_object_smart_callback_call(WIDGET(it), SIG_LONGPRESSED, > > > EO_OBJ(it)); > > > + > > > + return ECORE_CALLBACK_CANCEL; > > > +} > > > + > > > +static void > > > +_mouse_down_cb(void *data, > > > + Evas *evas EINA_UNUSED, > > > + Evas_Object *obj EINA_UNUSED, > > > + void *event_info) > > > +{ > > > + Elm_Multibuttonentry_Item_Data *it = data; > > > + Evas_Event_Mouse_Down *ev = event_info; > > > + > > > + ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(WIDGET(it), sd); > > > + > > > + if (ev->button != 1) return; > > > + > > > + ecore_timer_del(sd->longpress_timer); > > > + sd->longpress_timer = ecore_timer_add > > > + (_elm_config->longpress_timeout, _long_press_cb, it); > > > +} > > > + > > > +static void > > > +_mouse_up_cb(void *data, > > > + Evas *evas EINA_UNUSED, > > > + Evas_Object *obj EINA_UNUSED, > > > + void *event_info EINA_UNUSED) > > > +{ > > > + Elm_Multibuttonentry_Item_Data *it = data; > > > + > > > + ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(WIDGET(it), sd); > > > + > > > + ELM_SAFE_FREE(sd->longpress_timer, ecore_timer_del); > > > +} > > > + > > > EOLIAN static void > > > _elm_multibuttonentry_item_elm_widget_item_signal_emit(Eo *eo_item > > > EINA_UNUSED, > > > > > > Elm_Multibuttonentry_Item_Data *item, > > > @@ -664,6 +711,13 @@ _item_new(Elm_Multibuttonentry_Data *sd, > > > (VIEW(item), "mouse,clicked,1", "*", _on_item_clicked, > > EO_OBJ(item)); > > > elm_layout_signal_callback_add > > > (VIEW(item), "elm,deleted", "elm", _on_item_deleted, > EO_OBJ(item)); > > > + evas_object_event_callback_add > > > + (VIEW(item), > > > + EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, item); > > > + evas_object_event_callback_add > > > + (VIEW(item), > > > + EVAS_CALLBACK_MOUSE_UP, _mouse_up_cb, item); > > > + > > > evas_object_show(VIEW(item)); > > > > > > evas_object_smart_calculate(VIEW(item)); > > > @@ -1466,6 +1520,7 @@ _elm_multibuttonentry_evas_object_smart_del(Eo > > *obj, > > > Elm_Multibuttonentry_Data * > > > evas_object_del(sd->label); > > > evas_object_del(sd->guide_text); > > > evas_object_del(sd->end); > > > + ecore_timer_del(sd->longpress_timer); > > > > > > eo_do_super(obj, MY_CLASS, evas_obj_smart_del()); > > > } > > > diff --git a/src/lib/elc_multibuttonentry.h > > > b/src/lib/elc_multibuttonentry.h > > > index 32b590d..d0862fc 100644 > > > --- a/src/lib/elc_multibuttonentry.h > > > +++ b/src/lib/elc_multibuttonentry.h > > > @@ -37,6 +37,7 @@ > > > * - @c "contracted" - when multi-button entry is contracted. > > > * - @c "expand,state,changed" - when shrink mode state of > > > * multi-button entry is changed. > > > + * - @c "longpressed" - when multi-button entry is pressed for a long > > > time. > > > * > > > * Default text parts of the multi-button entry widget that you can > use > > > are: > > > * @li "default" - A label of the multi-button entry > > > diff --git a/src/lib/elm_multibuttonentry.eo > > > b/src/lib/elm_multibuttonentry.eo > > > index 43e13a9..6149ab6 100644 > > > --- a/src/lib/elm_multibuttonentry.eo > > > +++ b/src/lib/elm_multibuttonentry.eo > > > @@ -280,6 +280,7 @@ class Elm_Multibuttonentry (Elm_Layout) > > > expanded; > > > contracted; > > > expand,state,changed; > > > + longpressed; > > > } > > > > > > } > > > diff --git a/src/lib/elm_widget_multibuttonentry.h > > > b/src/lib/elm_widget_multibuttonentry.h > > > index 41d1926..607e05c 100644 > > > --- a/src/lib/elm_widget_multibuttonentry.h > > > +++ b/src/lib/elm_widget_multibuttonentry.h > > > @@ -105,14 +105,19 @@ struct _Elm_Multibuttonentry_Data > > > Eina_Bool last_it_select : 1; > > > Eina_Bool editable : 1; > > > Eina_Bool focused : 1; > > > + > > > + Ecore_Timer *longpress_timer; > > > }; > > > > > > /** > > > * @} > > > */ > > > > > > +#define ELM_MULTIBUTTONENTRY_DATA_GET(o, sd) \ > > > + Elm_Multibuttonentry_Data *sd = eo_data_scope_get(o, > > > ELM_MULTIBUTTONENTRY_CLASS); > > > + > > > #define ELM_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(o, ptr) \ > > > - Elm_Multibuttonentry_Data *ptr = eo_data_scope_get(o, > > > ELM_MULTIBUTTONENTRY_CLASS); \ > > > + ELM_MULTIBUTTONENTRY_DATA_GET(o, ptr); \ > > > if (EINA_UNLIKELY(!ptr)) \ > > > { \ > > > CRI("No widget data for object %p (%s)", \ > > > > > > -- > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > > Develop your own process in accordance with the BPMN 2 standard > > Learn Process modeling best practices with Bonita BPM through live > > exercises > > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- > > event?utm_ > > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > ------------------------------------------------------------------------------ > > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > > Develop your own process in accordance with the BPMN 2 standard > > Learn Process modeling best practices with Bonita BPM through live > > exercises > > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- > > event?utm_ > > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > ------------------------------------------------------------------------------ > BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT > Develop your own process in accordance with the BPMN 2 standard > Learn Process modeling best practices with Bonita BPM through live > exercises > http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- > event?utm_ > source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel