Eeeeeek! How about keeping the API name with notify? elm_notify_align_set()? ------------------------------------ -Regards, Hermet-
-----Original Message----- From: "Abhinandan Aryadipta"<a.aryadi...@samsung.com> To: <g...@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