seoz pushed a commit to branch master. http://git.enlightenment.org/tools/elm-theme-viewer.git/commit/?id=168163b34d437c895dde9a1209a347d6f02ba87b
commit 168163b34d437c895dde9a1209a347d6f02ba87b Author: Daniel Juyung Seo <seojuyu...@gmail.com> Date: Tue Dec 9 03:10:20 2014 +0900 widget: Add ctxpopup support. --- src/bin/widget.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/bin/widget.c b/src/bin/widget.c index 536b284..c920f7b 100644 --- a/src/bin/widget.c +++ b/src/bin/widget.c @@ -360,6 +360,66 @@ _widget_colorselector_create(Evas_Object *parent, const char *style) return o; } +// ctxpopup +static Evas_Object *ctxpopup = NULL; // singleton +static void +_widget_ctxpopup_dismissed_cb(void *data EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(ctxpopup); + ctxpopup = NULL; +} + +static void +_widget_ctxpopup_del_request(void *data EINA_UNUSED, Evas *e EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + evas_object_del(ctxpopup); + ctxpopup = NULL; +} + +static void +_widget_ctxpopup_launch(void *data, Evas *e EINA_UNUSED, + Evas_Object *obj EINA_UNUSED, void *event_info) +{ + Evas_Event_Mouse_Down *ev = event_info; + Evas_Object *o = NULL; + + if (ctxpopup) evas_object_del(ctxpopup); + + ctxpopup = o = elm_ctxpopup_add(gd->win); + elm_object_style_set(o, data); + evas_object_smart_callback_add(o, "dismissed", + _widget_ctxpopup_dismissed_cb, NULL); + elm_ctxpopup_item_append(o, "Ctxpopup #1", NULL, _widget_ctxpopup_dismissed_cb, NULL); + elm_ctxpopup_item_append(o, "Ctxpopup #2", NULL, _widget_ctxpopup_dismissed_cb, NULL); + elm_ctxpopup_item_append(o, "Ctxpopup #3", NULL, _widget_ctxpopup_dismissed_cb, NULL); + elm_ctxpopup_item_append(o, "Ctxpopup #4", NULL, _widget_ctxpopup_dismissed_cb, NULL); + elm_ctxpopup_item_append(o, "Ctxpopup #5", NULL, _widget_ctxpopup_dismissed_cb, NULL); + + evas_object_move(o, ev->canvas.x, ev->canvas.y); + evas_object_show(o); +} + +static Evas_Object * +_widget_ctxpopup_create(Evas_Object *parent, const char *style) +{ + Evas_Object *o = NULL; + + o = elm_label_add(parent); + EXPAND(o); FILL(o); + elm_object_text_set(o, "Click here to create a ctxpopup"); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, + _widget_ctxpopup_launch, style); + evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, + _widget_ctxpopup_del_request, NULL); + evas_object_show(o); + + return o; +} + // datetime static Evas_Object * _widget_datetime_create(Evas_Object *parent, const char *style) @@ -2204,6 +2264,7 @@ widget_create(Evas_Object *parent, Widget_Type widget, const char *orig_style) ADD_WIDGET(check, ETV_ID_CHECK, style); ADD_WIDGET(clock, ETV_ID_CLOCK, style); ADD_WIDGET(colorselector, ETV_ID_COLORSELECTOR, style); + ADD_WIDGET(ctxpopup, ETV_ID_CTXPOPUP, style); ADD_WIDGET(datetime, ETV_ID_DATETIME, style); ADD_WIDGET2(entry, ETV_ID_ENTRY, orig_style, style); ADD_WIDGET(ews, ETV_ID_EWS, orig_style); --