EEXT_CALLBACK_BACK is not called for Ctxpopup

EEXT_CALLBACK_BACK is not called for Ctxpopup

BY 11 Jun 2018 Native Application Development

According to Tizen samples and documentation, to support the hardware Back/More button one needs to add the code:

eext_object_event_callback_add(ad->ctxpopup, EEXT_CALLBACK_BACK, eext_ctxpopup_back_cb, NULL);

But, eext_ctxpopup_back_cb is never called (for Ctxpopup), if I do so.

Here is the corresponding code (that creates Ctxpopup):

static void win_more_cb(void* data, Evas_Object* obj, void* event_info) {
    appdata_s* ad = data;
    if (ad->ctxpopup != NULL) evas_object_del(ad->ctxpopup);

    ad->ctxpopup = elm_ctxpopup_add(ad->win);
    elm_object_style_set(ad->ctxpopup, "more/default");

    eext_object_event_callback_add(ad->ctxpopup, EEXT_CALLBACK_BACK, _eext_ctxpopup_back_cb, NULL);
    eext_object_event_callback_add(ad->ctxpopup, EEXT_CALLBACK_MORE, _eext_ctxpopup_back_cb, NULL);
    evas_object_smart_callback_add(ad->ctxpopup, "dismissed", ctxpopup_dismissed_cb, NULL);

    elm_ctxpopup_item_append(ad->ctxpopup, "Add", NULL, ctxpopup_add_cb, NULL);

    move_more_ctxpopup(ad->ctxpopup);
    evas_object_show(ad->ctxpopup);
}

As you see, I replaced eext_ctxpopup_back_cb with _eext_ctxpopup_back_cb (starts with ‘_’). The replacement function writes logs – that’s how I know, that the callback is never called. Instead, callbacks, which were set for ad->win are called:

eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_cb, ad);
eext_object_event_callback_add(ad->win, EEXT_CALLBACK_MORE, win_more_cb, ad);

What’s wrong? My guess is that Ctxpopup does not receive events, but why?

Written by