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

Reply via email to