scalabiity = daynamically resized popup area.  
 
------------------------------------
-Regards, Hermet- 

-----Original Message-----
From: "Daniel Juyung Seo"<seojuyu...@gmail.com> 
To: "Enlightenment developer list"<enlightenment-devel@lists.sourceforge.net>; 
Cc: <g...@lists.enlightenment.org>; 
Sent: 2013-11-08 (금) 13:58:32
Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: popup: Added 
support for popup move. elm_popup_move.

On Fri, Nov 8, 2013 at 1:47 PM, ChunEon Park <hermet>@naver.com> wrote:

> Convenient ok. but convenient API even should not break the concept.
>

It does not break popup concept. It is still relative to its parent once
the patch is revised as I mentioned earlier.


> The api sound like it does not care the scalability and popup concept.
>

What do you mean by scalability here? Any example?
That is nothing to do with scalability.
If application uses coordinate, app will call elm_config_scale_get() * xxx.
See all the APIs that use coordinate as a parameter.

Thanks.

Daniel Juyung Seo (SeoZ)


> If you really intended that popup does not care the scalability,
> then ie, elm_popup_fixed_pos_set() will be nicer to me.
> or not, then align_set() should be there.
>
> If more other people agree on the API addition,  then I will not care this
> anymore.
>
> Thanks.
>
> -----Original Message-----
> From: "Daniel Juyung Seo"<seojuyung2>@gmail.com>
> To: "Enlightenment developer list"<
> enlightenment-devel@lists.sourceforge.net>;
> Cc: <git>@lists.enlightenment.org>;
> Sent: 2013-11-08 (금) 09:06:45
> Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: popup: Added
> support for popup move. elm_popup_move.
>
> On Mon, Nov 4, 2013 at 7:05 PM, ChunEon Park <hermet>@naver.com> wrote:
>
> > It says in popup doc.
> >
> > * The popup widget displays its content with a particular orientation in
> >  * the parent area.
> >
> >
> I already read that but that does not mean we can not add this api.
> Notify already has align_set which we can position notify wherever we want.
> Popup is a wrapper of notify and utility widget for convenience.
> It should be convenicent and easy to use.
>
>
> >
> > Absulte coordinates would break this action.
> > People hardly understand if they use that kind of API.
> >
> > If they call elm_popup_move(100, 100); then popup should be (100, 100)
> > position.
> > But in some case if the parent is moved to 200, 200,
> > then will you keep the popup position (100, 100)?
> >
> >
> You're right.
> elm_popup_move() should be changed to be relative to its parent. I missed
> that part.
> It should keep using coordinate but relative to its parent.
> The patch needs to be revised.
>
>
> > if the popup is moved to 200, 200,
> > then user may understand this behavior is bug.
> >
> > Relative value is simple and easy to understand in this case.
> >
> >
> But in a real life case, especially a product, we use pixel more than
> relative values.
> So without elm_popup_move, applications should track the parent geometry
> change and calculate parent geometry and itself all the time to give a
> relative paramters to elm_popup_align_set.
> I can easily imagine troubles already.
>
> Anyhow, there is no rush on this patch.
> We can just create and use elm_popup_align_set() and do all the
> calculations in the application side which will be so redundant among many
> apps.
> Thanks.
>
> Daniel Juyung Seo (SeoZ)
>
>
>
> > ------------------------------------
> > -Regards, Hermet-
> >
> > -----Original Message-----
> > From: "Daniel Juyung Seo"<seojuyung2>@gmail.com>
> > To: "Enlightenment developer list"<
> > enlightenment-devel@lists.sourceforge.net>;
> > Cc: <git>@lists.enlightenment.org>;
> > Sent: 2013-11-04 (월) 18:19:16
> > Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: popup:
> Added
> > support for popup move. elm_popup_move.
> >
> > On Mon, Nov 4, 2013 at 5:14 PM, ChunEon Park <hermet>@naver.com> wrote:
> >
> > > Regardless of the API useful,  I don't  agree pushing the API at this
> > > moment.
> > >
> > > It wil break popup concept. otherwise, similiar behavior of move() and
> > > align() will be conflicted.
> > >
> >
> > How does that break popup concept? That's interesting.
> > Where is it described?
> >
> > Daniel Juyung Seo (SeoZ)
> >
> >
> > > if you agree align_set() can cover the popup_move()
> > > please just keep the align_set() only.
> > >
> > >
> > > ------------------------------------
> > > -Regards, Hermet-
> > >
> > > -----Original Message-----
> > > From: "Daniel Juyung Seo"<seojuyung2>@gmail.com>
> > > To: "Enlightenment developer list"<
> > > enlightenment-devel@lists.sourceforge.net>;
> > > Cc: <git>@lists.enlightenment.org>;
> > > Sent: 2013-11-04 (월) 16:29:02
> > > Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: popup:
> > Added
> > > support for popup move. elm_popup_move.
> > >
> > > On Mon, Nov 4, 2013 at 2:42 PM, ChunEon Park <hermet>@naver.com>
> wrote:
> > >
> > > > Abosulte position for the popup is insane if the parent position is
> > > > changed.
> > > > And totally popup is depends on the notify, it should follow the
> notify
> > > > concept.
> > > >
> > > >
> > > Agreed. I also suggested to create elm_popup_align_set() instead of
> this.
> > > And he suggested elm_popup_move() to use pixel which I found it useful.
> > >
> > > Because the author of this commit is away, I will fix it before the
> > today's
> > > feature freeze:
> > > 1. adding elm_popup_align_set()
> > > 2. fixing elm_popup_move() to depend on its parent position.
> > > 3. (optional) adding elm_notify_move() to use pixel
> > >
> > > Thanks.
> > >
> > > Daniel Juyung Seo (SeoZ)
> > >
> > >
> > > >
> > > > ------------------------------------
> > > > -Regards, Hermet-
> > > >
> > > > -----Original Message-----
> > > > From: "Daniel Juyung Seo"<seojuyung2>@gmail.com>
> > > > To: "Enlightenment developer list"<
> > > > enlightenment-devel@lists.sourceforge.net>;
> > > > Cc: <git>@lists.enlightenment.org>;
> > > > Sent: 2013-11-04 (월) 14:37:54
> > > > Subject: Re: [E-devel] [EGIT] [core/elementary] master 01/01: popup:
> > > Added
> > > > support for popup move. elm_popup_move.
> > > >
> > > > On Mon, Nov 4, 2013 at 2:31 PM, ChunEon Park <hermet>@naver.com>
> > wrote:
> > > >
> > > > > Eeeeeek!
> > > > >
> > > > > How about keeping the API name with notify?
> > > > > elm_notify_align_set()?
> > > > >
> > > >
> > > > Thanks for the interest and comments but the concept is different
> from
> > > > align_set.
> > > > elm_notify_align_set() gets relative position as a parameter but
> > > > elm_popup_move() gets absolute pixel information just like
> > > elm_menu_move().
> > > > So elm_popup_move() is correct.
> > > >
> > > > EAPI void                         elm_notify_align_set(Evas_Object
> > *obj,
> > > > double horizontal, double vertical);
> > > > EAPI void                         elm_menu_move(Evas_Object *obj,
> > > > Evas_Coord x, Evas_Coord y);
> > > > EAPI void elm_popup_move(Evas_Object *obj, Evas_Coord x, Evas_Coord
> y);
> > > >
> > > > Thanks.
> > > >
> > > > Daniel Juyung Seo (SeoZ)
> > > >
> > > >
> > > >
> > > > >
> > > > > ------------------------------------
> > > > > -Regards, Hermet-
> > > > >
> > > > >
> > > > > -----Original Message-----
> > > > > From: "Abhinandan Aryadipta"<a.aryadipta>@samsung.com>
> > > > > To: <git>@lists.enlightenment.org>;
> > > > > Cc:
> > > > > Sent: 2013-11-03 (일) 23:29:06
> > > > > Subject: [EGIT] [core/elementary] master 01/01: popup: Added
> support
> > > for
> > > > > popup move. elm_popup_move.
> > > > >
> > > > > seoz pushed a commit to branch master.
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> http://git.enlightenment.org/core/elementary.git/commit/?id=f67ecb2028dd663aa4b0d9fe78b2a392ac169e7e
> > > > >
> > > > > commit f67ecb2028dd663aa4b0d9fe78b2a392ac169e7e
> > > > > Author: Abhinandan Aryadipta <a.aryadipta>@samsung.com>
> > > > > Date:   Sun Nov 3 23:01:19 2013 +0900
> > > > >
> > > > >     popup: Added support for popup move. elm_popup_move.
> > > > >
> > > > >     Summary: Added support for popup move
> > > > >
> > > > >     Test Plan: elm_popup_move
> > > > >
> > > > >     Reviewers: seoz, singh.amitesh, tasn, Hermet
> > > > >
> > > > >     CC: raster
> > > > >
> > > > >     Differential Revision: https://phab.enlightenment.org/D247
> > > > > ---
> > > > >  ChangeLog                    4 ++++
> > > > >  NEWS                         1 +
> > > > >  src/bin/test_popup.c        58
> > > > > ++++++++++++++++++++++++++++++++++++++++++++++
> > > > >  src/lib/elc_popup.c         41 ++++++++++++++++++++++++++++++++
> > > > >  src/lib/elc_popup_eo.h      14 +++++++++++
> > > > >  src/lib/elc_popup_legacy.h  15 ++++++++++++
> > > > >  6 files changed, 133 insertions(+)
> > > > >
> > > > > diff --git a/ChangeLog b/ChangeLog
> > > > > index 66e4536..434f65f 100644
> > > > > --- a/ChangeLog
> > > > > +++ b/ChangeLog
> > > > > @@ -1741,3 +1741,7 @@
> > > > >          * genlist , gengrid: Add
> > > > > ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL.
> > > > >          It disallow multiple selection when clicked without
> control
> > > > > pressed although
> > > > >          multiple selection is enabled.
> > > > > +
> > > > > +2013-10-03  Abhinandan Aryadipta (aryarockstar)
> > > > > +
> > > > > +        * Popup - Added elm_popup_move() api.
> > > > > diff --git a/NEWS b/NEWS
> > > > > index 4ba58bf..fece1e7 100644
> > > > > --- a/NEWS
> > > > > +++ b/NEWS
> > > > > @@ -102,6 +102,7 @@ Additions:
> > > > >     * Add "virtualkeypad,size,changed" callback on virtualkeypad
> min
> > > size
> > > > > change for conformant.
> > > > >     * Add elm_slider_step_get(), elm_slider_step_set() for slider.
> > > > >     * Add ELM_OBJECT_MULTIPLE_SELECT_MODE_WITH_CONTROL select mode
> > for
> > > > > genlist/gengrid.
> > > > > +   * Add support elm_popup_move() for popup.
> > > > >
> > > > >  Improvements:
> > > > >
> > > > > diff --git a/src/bin/test_popup.c b/src/bin/test_popup.c
> > > > > index fa2d06e..945c3df 100644
> > > > > --- a/src/bin/test_popup.c
> > > > > +++ b/src/bin/test_popup.c
> > > > > @@ -22,6 +22,35 @@ _popup_close_cb(void *data, Evas_Object *obj
> > > > > EINA_UNUSED,
> > > > >  }
> > > > >
> > > > >  static void
> > > > > +_popup_move_cb(void *data, Evas_Object *obj EINA_UNUSED,
> > > > > +               void *event_info EINA_UNUSED)
> > > > > +{
> > > > > +   static int k=0;
> > > > > +
> > > > > +   if (k == 0)
> > > > > +     elm_popup_move(data, -10, 50);//negative x
> > > > > +   else if (k == 1)
> > > > > +     elm_popup_move(data, 40, -100);//negative y
> > > > > +   else if (k == 2)
> > > > > +     elm_popup_move(data, 0, 0);//zero x zero y
> > > > > +   else if (k == 3)
> > > > > +     elm_popup_move(data, 40, 50);
> > > > > +   else if (k == 4)
> > > > > +     elm_popup_move(data, 80, 100);
> > > > > +   else if (k == 5)
> > > > > +     elm_popup_move(data, 120, 150);
> > > > > +   else if (k == 6)
> > > > > +     elm_popup_move(data, 160, 200);
> > > > > +   else if (k == 7)
> > > > > +     elm_popup_move(data, 500, 9999);//excess y
> > > > > +   else
> > > > > +     elm_popup_move(data, 9999, 500);//excess x
> > > > > +   k++;
> > > > > +   if (k > 8)
> > > > > +     k = 0;
> > > > > +}
> > > > > +
> > > > > +static void
> > > > >  _g_popup_response_cb(void *data, Evas_Object *obj EINA_UNUSED,
> > > > >               void *event_info EINA_UNUSED)
> > > > >  {
> > > > > @@ -467,6 +496,33 @@ _popup_transparent_cb(void *data, Evas_Object
> > *obj
> > > > > EINA_UNUSED,
> > > > >  }
> > > > >
> > > > >  static void
> > > > > +_popup_transparent_move_cb(void *data, Evas_Object *obj
> EINA_UNUSED,
> > > > > +                           void *event_info EINA_UNUSED)
> > > > > +{
> > > > > +   Evas_Object *popup;
> > > > > +   Evas_Object *btn, *btn1;
> > > > > +
> > > > > +   popup = elm_popup_add(data);
> > > > > +   elm_object_style_set(popup, "transparent");
> > > > > +   elm_object_text_set(popup, "This Popup has transparent
> > > background");
> > > > > +
> > > > > +   // popup buttons
> > > > > +   btn = elm_button_add(popup);
> > > > > +   elm_object_text_set(btn, "Move");
> > > > > +   elm_object_part_content_set(popup, "button1", btn);
> > > > > +   evas_object_smart_callback_add(btn, "clicked", _popup_move_cb,
> > > > popup);
> > > > > +
> > > > > +   btn1 = elm_button_add(popup);
> > > > > +   elm_object_text_set(btn1, "Close");
> > > > > +   elm_object_part_content_set(popup, "button2", btn1);
> > > > > +   evas_object_smart_callback_add(btn1, "clicked",
> _popup_close_cb,
> > > > > popup);
> > > > > +
> > > > > +   // popup show should be called after adding all the contents
> and
> > > the
> > > > > buttons
> > > > > +   // of popup to set the focus into popup's contents correctly.
> > > > > +   evas_object_show(popup);
> > > > > +}
> > > > > +
> > > > > +static void
> > > > >  _list_cb(void *data, Evas_Object *obj EINA_UNUSED, void
> *event_info
> > > > > EINA_UNUSED)
> > > > >  {
> > > > >     evas_object_del(data);
> > > > > @@ -543,6 +599,8 @@ test_popup(void *data EINA_UNUSED, Evas_Object
> > *obj
> > > > > EINA_UNUSED,
> > > > >
> > >  _popup_center_text_3button_add_remove_button_cb,
> > > > > win);
> > > > >     elm_list_item_append(list, "popup-transparent", NULL, NULL,
> > > > >                          _popup_transparent_cb, win);
> > > > > +   elm_list_item_append(list, "popup-transparent-move", NULL,
> NULL,
> > > > > +                        _popup_transparent_move_cb, win);
> > > > >     elm_list_item_append(list, "popup-center-title + list content
> + 1
> > > > > button",
> > > > >                          NULL, NULL,
> > > > > _popup_center_title_list_content_1button_cb,
> > > > >                          win);
> > > > > diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c
> > > > > index f873cff..c5b5c98 100644
> > > > > --- a/src/lib/elc_popup.c
> > > > > +++ b/src/lib/elc_popup.c
> > > > > @@ -1755,6 +1755,45 @@ _orient_get(Eo *obj EINA_UNUSED, void *_pd,
> > > > va_list
> > > > > *list)
> > > > >  }
> > > > >
> > > > >  EAPI void
> > > > > +elm_popup_move(Evas_Object *obj,
> > > > > +               Evas_Coord x, Evas_Coord y)
> > > > > +{
> > > > > +   ELM_POPUP_CHECK(obj);
> > > > > +   eo_do(obj, elm_obj_popup_move(x, y));
> > > > > +}
> > > > > +
> > > > > +static void
> > > > > +_move(Eo *obj, void *_pd, va_list *list)
> > > > > +{
> > > > > +   Evas_Coord x = va_arg(*list, Evas_Coord);
> > > > > +   Evas_Coord y = va_arg(*list, Evas_Coord);
> > > > > +   Evas_Coord tw, th, w, h;
> > > > > +   Evas_Object *top;
> > > > > +   Elm_Popup_Smart_Data *sd = _pd;
> > > > > +
> > > > > +   top = elm_widget_top_get(obj);
> > > > > +   if (!top)
> > > > > +     {
> > > > > +        ERR("The top parent is NULL! : popup=%p", obj);
> > > > > +        return;
> > > > > +     }
> > > > > +
> > > > > +   evas_object_geometry_get(top, NULL, NULL, &tw, &th);
> > > > > +   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
> > > > > +
> > > > > +   if (x < 0) x = 0;
> > > > > +   if (y < 0) y = 0;
> > > > > +   if ((x > (tw - w)) && (tw - w > 0))
> > > > > +     x = tw - w;
> > > > > +   if ((y > (th - h)) && (th - h > 0))
> > > > > +     y = th - h;
> > > > > +   if ((x > tw)  (y > th)  (w > tw)  (h > th))
> > > > > +     elm_notify_align_set(sd->notify, 0.5, 0.5);
> > > > > +   else
> > > > > +     elm_notify_align_set(sd->notify, ((double)x/(double)tw),
> > > > > ((double)y/(double)th));
> > > > > +}
> > > > > +
> > > > > +EAPI void
> > > > >  elm_popup_timeout_set(Evas_Object *obj,
> > > > >                        double timeout)
> > > > >  {
> > > > > @@ -1921,6 +1960,7 @@ _class_constructor(Eo_Class *klass)
> > > > >
> > > > >
>  EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET),
> > > > > _allow_events_set),
> > > > >
> > > > >
>  EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET),
> > > > > _allow_events_get),
> > > > >
> >  EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND),
> > > > > _item_append),
> > > > > +        EO_OP_FUNC(ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_MOVE),
> > > _move),
> > > > >          EO_OP_FUNC_SENTINEL
> > > > >    };
> > > > >     eo_class_funcs_set(klass, func_desc);
> > > > > @@ -1937,6 +1977,7 @@ static const Eo_Op_Description op_desc[] = {
> > > > >       EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET,
> "Sets
> > > > > whether events should be passed to by a click outside."),
> > > > >       EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET,
> > "Returns
> > > > > value indicating whether allow event is enabled or not."),
> > > > >       EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND, "Add a
> new
> > > item
> > > > > to a Popup object."),
> > > > > +     EO_OP_DESCRIPTION(ELM_OBJ_POPUP_SUB_ID_MOVE, "Move the popup
> > > > > relative to its top parent."),
> > > > >       EO_OP_DESCRIPTION_SENTINEL
> > > > >  };
> > > > >  static const Eo_Class_Description class_desc = {
> > > > > diff --git a/src/lib/elc_popup_eo.h b/src/lib/elc_popup_eo.h
> > > > > index 6d09109..75bf885 100644
> > > > > --- a/src/lib/elc_popup_eo.h
> > > > > +++ b/src/lib/elc_popup_eo.h
> > > > > @@ -20,6 +20,7 @@ enum
> > > > >     ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_SET,
> > > > >     ELM_OBJ_POPUP_SUB_ID_ALLOW_EVENTS_GET,
> > > > >     ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND,
> > > > > +   ELM_OBJ_POPUP_SUB_ID_MOVE,
> > > > >     ELM_OBJ_POPUP_SUB_ID_LAST
> > > > >  };
> > > > >
> > > > > @@ -138,6 +139,19 @@ enum
> > > > >   * @see elm_popup_item_append
> > > > >   */
> > > > >  #define elm_obj_popup_item_append(label, icon, func, data, ret)
> > > > > ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_ITEM_APPEND),
> > EO_TYPECHECK(const
> > > > char
> > > > > *, label), EO_TYPECHECK(Evas_Object *, icon),
> > > EO_TYPECHECK(Evas_Smart_Cb,
> > > > > func), EO_TYPECHECK(const void *, data),
> EO_TYPECHECK(Elm_Object_Item
> > > **,
> > > > > ret)
> > > > > +
> > > > > +/**
> > > > > + * @def elm_obj_popup_move
> > > > > + * @since 1.8
> > > > > + *
> > > > > + * @brief Move the popup relative to its top parent
> > > > > + *
> > > > > + * @param[in] x
> > > > > + * @param[in] y
> > > > > + *
> > > > > + * @see elm_popup_move
> > > > > + */
> > > > > +#define elm_obj_popup_move(x, y)
> > > > > ELM_OBJ_POPUP_ID(ELM_OBJ_POPUP_SUB_ID_MOVE),
> EO_TYPECHECK(Evas_Coord,
> > > x),
> > > > > EO_TYPECHECK(Evas_Coord, y)
> > > > >  /**
> > > > >   * @}
> > > > >   */
> > > > > diff --git a/src/lib/elc_popup_legacy.h
> b/src/lib/elc_popup_legacy.h
> > > > > index 0f2d08f..2530ba0 100644
> > > > > --- a/src/lib/elc_popup_legacy.h
> > > > > +++ b/src/lib/elc_popup_legacy.h
> > > > > @@ -136,3 +136,18 @@ EAPI Eina_Bool
> elm_popup_allow_events_get(const
> > > > > Evas_Object *obj);
> > > > >   * and item(s) can be there in a popup content area.
> > > > >   */
> > > > >  EAPI Elm_Object_Item *elm_popup_item_append(Evas_Object *obj,
> const
> > > char
> > > > > *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
> > > > > EINA_ARG_NONNULL(1);
> > > > > +
> > > > > +/**
> > > > > + * @since 1.8
> > > > > + *
> > > > > + * @brief Move the popup relative to its top parent
> > > > > + *
> > > > > + * @param obj popup object
> > > > > + * @param x X position to move the popup object to, in canvas
> units,
> > > > > + * with relative to its top parent object.
> > > > > + * @param y Y position to move the popup object to, in canvas
> units,
> > > > > + * with relative to its top parent object.
> > > > > + *
> > > > > + * @ingroup Popup
> > > > > + */
> > > > > +EAPI void elm_popup_move(Evas_Object *obj, Evas_Coord x,
> Evas_Coord
> > > y);
> > > > >
> > > > > --
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> ------------------------------------------------------------------------------
> > > > > Android is increasing in popularity, but the open development
> > platform
> > > > that
> > > > > developers love is also attractive to malware creators. Download
> this
> > > > white
> > > > > paper to learn more about secure code signing practices that can
> help
> > > > keep
> > > > > Android apps secure.
> > > > >
> > > >
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > > > > _______________________________________________
> > > > > enlightenment-devel mailing list
> > > > > enlightenment-devel@lists.sourceforge.net
> > > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > > >
> > > >
> > > >
> > >
> >
> ------------------------------------------------------------------------------
> > > > Android is increasing in popularity, but the open development
> platform
> > > that
> > > > developers love is also attractive to malware creators. Download this
> > > white
> > > > paper to learn more about secure code signing practices that can help
> > > keep
> > > > Android apps secure.
> > > >
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > > > _______________________________________________
> > > > enlightenment-devel mailing list
> > > > enlightenment-devel@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > >
> > > >
> > >
> >
> ------------------------------------------------------------------------------
> > > > Android is increasing in popularity, but the open development
> platform
> > > that
> > > > developers love is also attractive to malware creators. Download this
> > > white
> > > > paper to learn more about secure code signing practices that can help
> > > keep
> > > > Android apps secure.
> > > >
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > > > _______________________________________________
> > > > enlightenment-devel mailing list
> > > > enlightenment-devel@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > > >
> > >
> > >
> >
> ------------------------------------------------------------------------------
> > > Android is increasing in popularity, but the open development platform
> > that
> > > developers love is also attractive to malware creators. Download this
> > white
> > > paper to learn more about secure code signing practices that can help
> > keep
> > > Android apps secure.
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> > >
> >
> ------------------------------------------------------------------------------
> > > Android is increasing in popularity, but the open development platform
> > that
> > > developers love is also attractive to malware creators. Download this
> > white
> > > paper to learn more about secure code signing practices that can help
> > keep
> > > Android apps secure.
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> >
> >
> ------------------------------------------------------------------------------
> > Android is increasing in popularity, but the open development platform
> that
> > developers love is also attractive to malware creators. Download this
> white
> > paper to learn more about secure code signing practices that can help
> keep
> > Android apps secure.
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
> >
> ------------------------------------------------------------------------------
> > Android is increasing in popularity, but the open development platform
> that
> > developers love is also attractive to malware creators. Download this
> white
> > paper to learn more about secure code signing practices that can help
> keep
> > Android apps secure.
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models.
> Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and
> register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
> ------------------------------------------------------------------------------
> November Webinars for C, C++, Fortran Developers
> Accelerate application performance with scalable programming models.
> Explore
> techniques for threading, error checking, porting, and tuning. Get the most
> from the latest Intel processors and coprocessors. See abstracts and
> register
> http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to