static const char SIG_INDEX_UPDATE[] = "index,update";
static const char SIG_HIGHLIGHTED[] = "highlighted";
static const char SIG_UNHIGHLIGHTED[] = "unhighlighted";
+static const char SIG_LANG_CHANGED[] = "language,changed";
+
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_ACTIVATED, ""},
{SIG_CLICKED_DOUBLE, ""},
{SIG_MOVED, ""},
{SIG_HIGHLIGHTED, ""},
{SIG_UNHIGHLIGHTED, ""},
+ {SIG_LANG_CHANGED, ""},
{NULL, NULL}
};
Evas_Coord *x,
Evas_Coord *y);
+static Eina_Bool
+_elm_gengrid_smart_translate(Evas_Object *obj)
+{
+ evas_object_smart_callback_call(obj, SIG_LANG_CHANGED, NULL);
+
+ return EINA_TRUE;
+}
+
static void
_item_show_region(void *data)
{
Evas_Coord vw = 0, vh = 0;
Elm_Gen_Item *it;
+#if GENGRID_FX_SUPPORT
+ if (sd->fx_first_captured) return;
+#endif
evas_object_geometry_get(sd->pan_obj, NULL, NULL, &cvw, &cvh);
if ((cvw != 0) && (cvh != 0))
ELM_PAN_CLASS(sc)->pos_min_get = _elm_gengrid_pan_smart_pos_min_get;
ELM_PAN_CLASS(sc)->content_size_get =
_elm_gengrid_pan_smart_content_size_get;
+
}
static Eina_Bool
if ((!GG_IT(it)->wsd->fx_mode) || (GG_IT(it)->wsd->gengrid_clearing))
#endif
{
- _elm_gengrid_item_del_common(it);
+ GG_IT(it)->wsd->items = eina_inlist_remove
+ (GG_IT(it)->wsd->items, EINA_INLIST_GET(it));
+
}
+
+ _elm_gengrid_item_del_common(it);
free(it->item);
it->item = NULL;
}
if (!eina_list_data_find(GG_IT(it)->wsd->pending_del_items, it))
GG_IT(it)->wsd->pending_del_items = eina_list_append(GG_IT(it)->wsd->pending_del_items, it);
- evas_event_freeze(evas_object_evas_get(obj));
- GG_IT(it)->wsd->selected = eina_list_remove(GG_IT(it)->wsd->selected, it);
+ evas_object_event_callback_del_full
+ (VIEW(it), EVAS_CALLBACK_MOUSE_DOWN, _item_mouse_down_cb, it);
+ evas_object_event_callback_del_full
+ (VIEW(it), EVAS_CALLBACK_MOUSE_UP, _item_mouse_up_cb, it);
+ evas_object_event_callback_del_full
+ (VIEW(it), EVAS_CALLBACK_MOUSE_MOVE, _item_mouse_move_cb, it);
- _elm_gengrid_item_del_common(it);
- evas_event_thaw(evas_object_evas_get(obj));
- evas_event_thaw_eval(evas_object_evas_get(obj));
+ GG_IT(it)->wsd->items = eina_inlist_remove
+ (GG_IT(it)->wsd->items, EINA_INLIST_GET(it));
+
+ if (GG_IT(it)->wsd->calc_job) ecore_job_del(GG_IT(it)->wsd->calc_job);
+ GG_IT(it)->wsd->calc_job =
+ ecore_job_add(GG_IT(it)->wsd->calc_cb, GG_IT(it)->wsd);
}
#endif
EINA_LIST_FREE(sd->capture_before_items, pi)
{
+ if (pi->proxy) evas_object_smart_member_del(pi->proxy);
if (pi->proxy) evas_object_del(pi->proxy);
free(pi);
}
EINA_LIST_FREE(sd->capture_after_items, pi)
{
+ if (pi->proxy) evas_object_smart_member_del(pi->proxy);
if (pi->proxy) evas_object_del(pi->proxy);
free(pi);
}
free(fi);
}
EINA_LIST_FREE (sd->pending_unrealized_items, it)
- _elm_gengrid_item_unrealize(it, EINA_FALSE);
+ {
+ if ((it) && (GG_IT(it))) GG_IT(it)->has_proxy_it = EINA_FALSE;
+ _elm_gengrid_item_unrealize(it, EINA_FALSE);
+ }
EINA_LIST_FREE (sd->pending_del_items, it)
{
_item_del(it);
/* not a 'focus chain manager' */
ELM_WIDGET_CLASS(sc)->focus_next = NULL;
ELM_WIDGET_CLASS(sc)->focus_direction = NULL;
+ ELM_WIDGET_CLASS(sc)->translate = _elm_gengrid_smart_translate;
ELM_LAYOUT_CLASS(sc)->sizing_eval = _elm_gengrid_smart_sizing_eval;
(evas_object_evas_get(ELM_WIDGET_DATA(GG_IT(it)->wsd)->obj));
if (!pi->proxy) return EINA_FALSE;
evas_object_clip_set(pi->proxy, evas_object_clip_get(GG_IT(it)->wsd->pan_obj));
-
+ evas_object_smart_member_add(pi->proxy, GG_IT(it)->wsd->pan_obj);
+ evas_object_hide(pi->proxy);
evas_object_image_source_set(pi->proxy, VIEW(it));
GG_IT(it)->has_proxy_it = EINA_TRUE;
sd->fx_first_captured = EINA_TRUE;
EINA_LIST_FREE(sd->capture_before_items, pi)
{
+ if (pi->proxy) evas_object_smart_member_del(pi->proxy);
if (pi->proxy) evas_object_del(pi->proxy);
free(pi);
}
{
EINA_LIST_FREE(sd->capture_after_items, pi)
{
+ if (pi->proxy) evas_object_smart_member_del(pi->proxy);
if (pi->proxy) evas_object_del(pi->proxy);
free(pi);
}
{
Elm_Gen_FX_Item *fx_done_it = data;
Elm_Gen_Item *it = NULL;
+ Proxy_Item *pi = NULL;
+ Eina_List *l;
Elm_Gengrid_Smart_Data *sd = GG_IT(fx_done_it->it)->wsd;
if ((!fx_done_it) || (!fx_done_it->it) || (!sd)) return;
_item_del(it);
_elm_widget_item_free((Elm_Widget_Item *)it);
}
+ EINA_LIST_FOREACH(sd->capture_before_items, l, pi)
+ evas_object_hide(pi->proxy);
+ EINA_LIST_FOREACH(sd->capture_after_items, l, pi)
+ evas_object_hide(pi->proxy);
sd->fx_playing = EINA_FALSE;
sd->fx_first_captured = EINA_FALSE;