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