ChangeLog and @since

Vincent

On Thu, 27 Oct 2011, Enlightenment SVN wrote:

> Log:
> evas - added new API evas_object_freeze_events_set/get
>
>  and will handle for the key events also soon.
>
>
>
> Author:       hermet
> Date:         2011-10-27 03:36:09 -0700 (Thu, 27 Oct 2011)
> New Revision: 64432
> Trac:         http://trac.enlightenment.org/e/changeset/64432
>
> Modified:
>  trunk/evas/src/lib/Evas.h trunk/evas/src/lib/canvas/evas_events.c 
> trunk/evas/src/lib/canvas/evas_object_smart.c 
> trunk/evas/src/lib/include/evas_inline.x 
> trunk/evas/src/lib/include/evas_private.h
>
> Modified: trunk/evas/src/lib/Evas.h
> ===================================================================
> --- trunk/evas/src/lib/Evas.h 2011-10-27 10:17:44 UTC (rev 64431)
> +++ trunk/evas/src/lib/Evas.h 2011-10-27 10:36:09 UTC (rev 64432)
> @@ -3922,6 +3922,7 @@
>  * @see evas_object_pass_events_get() for an example
>  * @see evas_object_repeat_events_set()
>  * @see evas_object_propagate_events_set()
> + * @see evas_object_freeze_events_set()
>  */
> EAPI void              evas_object_pass_events_set        (Evas_Object *obj, 
> Eina_Bool pass) EINA_ARG_NONNULL(1);
>
> @@ -3942,6 +3943,7 @@
>  * @see evas_object_pass_events_set()
>  * @see evas_object_repeat_events_get()
>  * @see evas_object_propagate_events_get()
> + * @see evas_object_freeze_events_get()
>  */
> EAPI Eina_Bool         evas_object_pass_events_get        (const Evas_Object 
> *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
>
> @@ -3967,8 +3969,9 @@
>  * See the full @ref Example_Evas_Stacking "example".
>  *
>  * @see evas_object_repeat_events_get()
> - * @see evas_object_pass_events_get()
> - * @see evas_object_propagate_events_get()
> + * @see evas_object_pass_events_set()
> + * @see evas_object_propagate_events_set()
> + * @see evas_object_freeze_events_set()
>  */
> EAPI void              evas_object_repeat_events_set      (Evas_Object *obj, 
> Eina_Bool repeat) EINA_ARG_NONNULL(1);
>
> @@ -3980,8 +3983,9 @@
>  * or not (@c EINA_FALSE)
>  *
>  * @see evas_object_repeat_events_set() for an example
> - * @see evas_object_pass_events_set()
> - * @see evas_object_propagate_events_set()
> + * @see evas_object_pass_events_get()
> + * @see evas_object_propagate_events_get()
> + * @see evas_object_freeze_events_get()
>  */
> EAPI Eina_Bool         evas_object_repeat_events_get      (const Evas_Object 
> *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
>
> @@ -4002,10 +4006,10 @@
>  * not be propagated on to the smart object of which @p obj is a
>  * member.  The default value is @c EINA_TRUE.
>  *
> - * @see evas_object_event_callback_add()
>  * @see evas_object_propagate_events_get()
> - * @see evas_object_repeat_events_get()
> - * @see evas_object_pass_events_get()
> + * @see evas_object_repeat_events_set()
> + * @see evas_object_pass_events_set()
> + * @see evas_object_freeze_events_set()
>  */
> EAPI void              evas_object_propagate_events_set   (Evas_Object *obj, 
> Eina_Bool prop) EINA_ARG_NONNULL(1);
>
> @@ -4016,14 +4020,50 @@
>  * @return whether @p obj is set to propagate events (@c EINA_TRUE)
>  * or not (@c EINA_FALSE)
>  *
> - * @see evas_object_event_callback_add()
>  * @see evas_object_propagate_events_set()
> - * @see evas_object_repeat_events_set()
> - * @see evas_object_pass_events_set()
> + * @see evas_object_repeat_events_get()
> + * @see evas_object_pass_events_get()
> + * @see evas_object_freeze_events_get()
>  */
> EAPI Eina_Bool         evas_object_propagate_events_get   (const Evas_Object 
> *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
>
> /**
> + * Set whether an Evas object is to freeze (discard) events.
> + *
> + * @param obj the Evas object to operate on
> + * @param pass whether @p obj is to freeze events (@c EINA_TRUE) or not
> + * (@c EINA_FALSE)
> + *
> + * If @p freeze is @c EINA_TRUE, it will make events on @p obj to be @b
> + * discarded. Unlike evas_object_pass_events_set(), events will not be
> + * passed to @b next lower object. This API can be used for blocking
> + * events while @p obj is on transiting.
> + *
> + * If @p freeze is @c EINA_FALSE, events will be processed on that
> + * object as normal.
> + *
> + * @see evas_object_freeze_events_get()
> + * @see evas_object_pass_events_set()
> + * @see evas_object_repeat_events_set()
> + * @see evas_object_propagate_events_set()
> + */
> +EAPI void              evas_object_freeze_events_set(Evas_Object *obj, 
> Eina_Bool freeze) EINA_ARG_NONNULL(1);
> +
> +/**
> + * Determine whether an object is set to freeze (discard) events.
> + *
> + * @param obj the Evas object to get information from.
> + * @return freeze whether @p obj is set to freeze events (@c EINA_TRUE) or
> + * not (@c EINA_FALSE)
> + *
> + * @see evas_object_freeze_events_set()
> + * @see evas_object_pass_events_get()
> + * @see evas_object_repeat_events_get()
> + * @see evas_object_propagate_events_get()
> + */
> +EAPI Eina_Bool         evas_object_freeze_events_get(const Evas_Object *obj) 
> EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
> +
> +/**
>  * @}
>  */
>
>
> Modified: trunk/evas/src/lib/canvas/evas_events.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_events.c   2011-10-27 10:17:44 UTC (rev 
> 64431)
> +++ trunk/evas/src/lib/canvas/evas_events.c   2011-10-27 10:36:09 UTC (rev 
> 64432)
> @@ -90,7 +90,8 @@
>                   if (inside && ((!obj->precise_is_inside) ||
>                                  (evas_object_is_inside(obj, x, y))))
>                     {
> -                       in = eina_list_append(in, obj);
> +                       if (!evas_event_freezes_through(obj))
> +                         in = eina_list_append(in, obj);
>                        if (!obj->repeat_events)
>                          {
>                             *no_rep = 1;
> @@ -229,8 +230,10 @@
>     * get a new event list, otherwise, keep the current grabbed list. */
>    if (e->pointer.mouse_grabbed == 0)
>      {
> -        Eina_List *ins;
> -        ins = evas_event_objects_event_list(e, NULL, e->pointer.x, 
> e->pointer.y);
> +        Eina_List *ins = evas_event_objects_event_list(e,
> +                                                       NULL,
> +                                                       e->pointer.x,
> +                                                       e->pointer.y);
>         /* free our old list of ins */
>         e->pointer.object.in = eina_list_free(e->pointer.object.in);
>         /* and set up the new one */
> @@ -248,7 +251,6 @@
>    EINA_LIST_FOREACH(copy, l, obj)
>      {
>         if (obj->delete_me) continue;
> -
>         ev.canvas.x = e->pointer.x;
>         ev.canvas.y = e->pointer.y;
>         _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, 
> obj->mouse_grabbed);
> @@ -1376,6 +1378,40 @@
> }
>
> EAPI void
> +evas_object_freeze_events_set(Evas_Object *obj, Eina_Bool freeze)
> +{
> +   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
> +   return;
> +   MAGIC_CHECK_END();
> +
> +   freeze = !!freeze;
> +   if (obj->freeze_events == freeze) return;
> +   obj->freeze_events = freeze;
> +   evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE);
> +   if (evas_object_is_in_output_rect(obj,
> +                                     obj->layer->evas->pointer.x,
> +                                     obj->layer->evas->pointer.y, 1, 1) &&
> +       ((!obj->precise_is_inside) ||
> +        (evas_object_is_inside(obj,
> +                               obj->layer->evas->pointer.x,
> +                               obj->layer->evas->pointer.y))))
> +     evas_event_feed_mouse_move(obj->layer->evas,
> +                                obj->layer->evas->pointer.x,
> +                                obj->layer->evas->pointer.y,
> +                                obj->layer->evas->last_timestamp,
> +                                NULL);
> +}
> +
> +EAPI Eina_Bool
> +evas_object_freeze_events_get(const Evas_Object *obj)
> +{
> +   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
> +   return 0;
> +   MAGIC_CHECK_END();
> +   return obj->freeze_events;
> +}
> +
> +EAPI void
> evas_object_pass_events_set(Evas_Object *obj, Eina_Bool pass)
> {
>    MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
> @@ -1384,7 +1420,7 @@
>    pass = !!pass;
>    if (obj->pass_events == pass) return;
>    obj->pass_events = pass;
> -   evas_object_smart_member_cache_invalidate(obj);
> +   evas_object_smart_member_cache_invalidate(obj, EINA_TRUE, EINA_FALSE);
>    if (evas_object_is_in_output_rect(obj,
>                                      obj->layer->evas->pointer.x,
>                                      obj->layer->evas->pointer.y, 1, 1) &&
>
> Modified: trunk/evas/src/lib/canvas/evas_object_smart.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_smart.c     2011-10-27 10:17:44 UTC 
> (rev 64431)
> +++ trunk/evas/src/lib/canvas/evas_object_smart.c     2011-10-27 10:36:09 UTC 
> (rev 64432)
> @@ -164,7 +164,7 @@
>    obj->layer->usage++;
>    obj->smart.parent = smart_obj;
>    o->contained = eina_inlist_append(o->contained, EINA_INLIST_GET(obj));
> -   evas_object_smart_member_cache_invalidate(obj);
> +   evas_object_smart_member_cache_invalidate(obj, EINA_TRUE, EINA_TRUE);
>    obj->restack = 1;
>    evas_object_change(obj);
>    evas_object_mapped_clip_across_mark(obj);
> @@ -191,7 +191,7 @@
>    o = (Evas_Object_Smart *)(obj->smart.parent->object_data);
>    o->contained = eina_inlist_remove(o->contained, EINA_INLIST_GET(obj));
>    obj->smart.parent = NULL;
> -   evas_object_smart_member_cache_invalidate(obj);
> +   evas_object_smart_member_cache_invalidate(obj, EINA_TRUE, EINA_TRUE);
>    obj->layer->usage--;
>    obj->cur.layer = obj->layer->layer;
>    evas_object_inject(obj, obj->layer->evas);
> @@ -751,7 +751,9 @@
> }
>
> void
> -evas_object_smart_member_cache_invalidate(Evas_Object *obj)
> +evas_object_smart_member_cache_invalidate(Evas_Object *obj,
> +                                          Eina_Bool pass_events,
> +                                          Eina_Bool freeze_events)
> {
>    Evas_Object_Smart *o;
>    Evas_Object *member;
> @@ -760,13 +762,18 @@
>    return;
>    MAGIC_CHECK_END();
>
> -   obj->parent_cache.pass_events_valid = EINA_FALSE;
> +   if (pass_events)
> +     obj->parent_cache.pass_events_valid = EINA_FALSE;
> +   if (freeze_events)
> +     obj->parent_cache.freeze_events_valid = EINA_FALSE;
>
>    o = obj->object_data;
>    if (o->magic != MAGIC_OBJ_SMART) return;
>
> -   EINA_INLIST_FOREACH(o->contained, member);
> -     evas_object_smart_member_cache_invalidate(member);
> +   EINA_INLIST_FOREACH(o->contained, member)
> +     evas_object_smart_member_cache_invalidate(member,
> +                                               pass_events,
> +                                               freeze_events);
> }
>
> void
>
> Modified: trunk/evas/src/lib/include/evas_inline.x
> ===================================================================
> --- trunk/evas/src/lib/include/evas_inline.x  2011-10-27 10:17:44 UTC (rev 
> 64431)
> +++ trunk/evas/src/lib/include/evas_inline.x  2011-10-27 10:36:09 UTC (rev 
> 64432)
> @@ -70,6 +70,22 @@
>    return 0;
> }
>
> +static inline Eina_Bool
> +evas_event_freezes_through(Evas_Object *obj)
> +{
> +   if (obj->freeze_events) return EINA_TRUE;
> +   if (obj->parent_cache.freeze_events_valid)
> +     return obj->parent_cache.freeze_events;
> +   if (obj->smart.parent)
> +     {
> +        Eina_Bool freeze = evas_event_freezes_through(obj->smart.parent);
> +        obj->parent_cache.freeze_events_valid = EINA_TRUE;
> +        obj->parent_cache.freeze_events = freeze;
> +        return freeze;
> +     }
> +   return EINA_FALSE;
> +}
> +
> static inline int
> evas_event_passes_through(Evas_Object *obj)
> {
>
> Modified: trunk/evas/src/lib/include/evas_private.h
> ===================================================================
> --- trunk/evas/src/lib/include/evas_private.h 2011-10-27 10:17:44 UTC (rev 
> 64431)
> +++ trunk/evas/src/lib/include/evas_private.h 2011-10-27 10:36:09 UTC (rev 
> 64432)
> @@ -580,11 +580,14 @@
>
>    Eina_Bool                   store : 1;
>    Eina_Bool                   pass_events : 1;
> +   Eina_Bool                   freeze_events : 1;
> +   Eina_Bool                   repeat_events : 1;
>    struct  {
>       Eina_Bool                pass_events : 1;
>       Eina_Bool                pass_events_valid : 1;
> +      Eina_Bool                freeze_events : 1;
> +      Eina_Bool                freeze_events_valid : 1;
>    } parent_cache;
> -   Eina_Bool                   repeat_events : 1;
>    Eina_Bool                   restack : 1;
>    Eina_Bool                   is_active : 1;
>    Eina_Bool                   precise_is_inside : 1;
> @@ -978,7 +981,7 @@
> Evas_Font_Description *evas_font_desc_ref(Evas_Font_Description *fdesc);
> void * evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char 
> *source, Evas_Font_Size size);
> void evas_font_load_hinting_set(Evas *evas, void *font, int hinting);
> -void evas_object_smart_member_cache_invalidate(Evas_Object *obj);
> +void evas_object_smart_member_cache_invalidate(Evas_Object *obj, Eina_Bool 
> pass_events, Eina_Bool freeze_events);
> void evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int 
> *t, int *b);
> void _evas_object_text_rehint(Evas_Object *obj);
> void _evas_object_textblock_rehint(Evas_Object *obj);
>
>
> ------------------------------------------------------------------------------
> The demand for IT networking professionals continues to grow, and the
> demand for specialized networking skills is growing even more rapidly.
> Take a complimentary Learning@Cisco Self-Assessment and learn
> about Cisco certifications, training, and career opportunities.
> http://p.sf.net/sfu/cisco-dev2dev
> _______________________________________________
> enlightenment-svn mailing list
> enlightenment-...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>
>

------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to