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?