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);

-- 


Reply via email to