, m_gengrid(nullptr)
, m_empty_layout(nullptr)
, m_itemToShow(nullptr)
+ , m_last_pressed_gengrid_item(nullptr)
, m_item_class(nullptr)
{
m_edjFilePath = EDJE_DIR;
}
}
+Evas_Event_Flags TabUI::_gesture_occured(void * data, void * event_info)
+{
+ BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+ auto flag = EVAS_EVENT_FLAG_NONE;
+ if (data && event_info) {
+ auto tabUI = static_cast<TabUI*>(data);
+ auto info = static_cast<Elm_Gesture_Line_Info*>(event_info);
+ if (info->momentum.mx != 0) {
+ //ignore too small gestures
+ if (abs(info->momentum.mx) < tabUI->GESTURE_MOMENTUM_MIN)
+ return flag;
+ tabUI->_close_tab_clicked(data, nullptr, nullptr);
+ }
+ } else {
+ BROWSER_LOGW("[%s] data or event_info = nullptr", __PRETTY_FUNCTION__);
+ }
+ return flag;
+}
+
void TabUI::_new_tab_clicked(void * data, Evas_Object*, void*)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
auto button = elm_button_add(obj);
elm_object_style_set(button, "invisible_button");
evas_object_smart_callback_add(button, "clicked", _gengrid_tab_clicked, data);
+
+ auto gesture = elm_gesture_layer_add(obj);
+ elm_gesture_layer_attach(gesture, button);
+ elm_gesture_layer_cb_add(gesture, ELM_GESTURE_N_LINES, ELM_GESTURE_STATE_MOVE,
+ _gesture_occured, data);
return button;
}
} else {
return nullptr;
}
-void TabUI::_gengrid_tab_pressed(void *, Evas_Object *, void *event_info)
+void TabUI::_gengrid_tab_pressed(void *data, Evas_Object *, void *event_info)
{
BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
if (event_info) {
auto object_item = static_cast<Elm_Object_Item*>(event_info);
+ auto tabUI = static_cast<TabUI*>(data);
+ tabUI->m_last_pressed_gengrid_item = object_item;
elm_object_signal_emit(
elm_object_item_part_content_get(object_item, "elm.icon"),
"on_mouse_down", "ui");
TabData* itemData = static_cast<TabData*>(data);
Elm_Object_Item* it = elm_gengrid_selected_item_get(itemData->tabUI->m_gengrid);
+
+ if (!it && itemData->tabUI->m_last_pressed_gengrid_item) {
+ it = itemData->tabUI->m_last_pressed_gengrid_item;
+ itemData->tabUI->m_last_pressed_gengrid_item = nullptr;
+ }
+
+ if (!it) {
+ BROWSER_LOGE("[%s] Delete called without selected and pressed item", __PRETTY_FUNCTION__);
+ return;
+ }
+
auto prev = elm_gengrid_item_prev_get(it);
auto next = elm_gengrid_item_next_get(it);
elm_object_item_del(it);
static void _cm_sync_clicked(void*, Evas_Object*, void*);
static void _cm_secret_clicked(void*, Evas_Object*, void*);
static void _cm_close_clicked(void*, Evas_Object*, void*);
+ static Evas_Event_Flags _gesture_occured(void * data, void * event_info);
SharedNaviframeWrapper m_naviframe;
void createTabUILayout();
Evas_Object *m_empty_layout;
Elm_Object_Item* m_itemToShow;
+ Elm_Object_Item* m_last_pressed_gengrid_item;
Elm_Gengrid_Item_Class * m_item_class;
std::string m_edjFilePath;
const unsigned int GENGRID_ITEM_HEIGHT = 312;
const unsigned int GENGRID_ITEM_WIDTH_LANDSCAPE = 636;
const unsigned int GENGRID_ITEM_HEIGHT_LANDSCAPE = 274;
+ const unsigned int GESTURE_MOMENTUM_MIN = 2000;
};
}
}