A ctxpopup can be created with elm_ctxpopup_add()
and when shown, it
automatically chooses an area inside its parent object's view (set via
elm_ctxpopup_hover_parent_set()
) to optimally fit into it.
Evas_Object *ctxpopup = elm_ctxpopup_add(parent);
The context popup orientation can be set with
elm_ctxpopup_horizontal_set()
. Here we set it to horizontal.
elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE);
We can also disable auto hiding if we want the ctxpopup never to be hidden. (Auto hide is enabled by default.)
elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE);
The ctxpopup can contain a small number of items. Each of them can have a label and an icon. Here we append an item with the āTestā label and no icon.
Elm_Object_Item *it = elm_ctxpopup_item_append(ctxpopup, "test", NULL, _ctxpopup_item_cb, NULL);
The _ctxpopup_item_cb()
callback will be called when the item is clicked. This
is how to write the definition of this callback.
static void _ctxpopup_item_cb(void *data, Evas_Object *obj, void *event_info) { printf("ctxpopup item selected\n"); }
Then the item label is set to āNew labelā.
elm_object_item_part_text_set(it, "default", "New label");
And its icon is modified to the standard āhomeā icon.
Evas_Object *home_icon = elm_icon_add(ctxpopup); elm_icon_standard_set(home_icon, "home"); elm_object_item_part_content_set(it, "icon", home_icon);
The context popup emits the ādismissedā signal when it is dismissed. We can register a callback to this signal. The event_info parameter is NULL.
evas_object_smart_callback_add(ctxpopup, "dismissed", _dismissed_cb, data);
static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info) { printf("ctxpopup dismissed\n"); }