target: "disclip";
}
program {
- name: "go_reorder_disabled";
+ name: "reorder_end";
signal: "elm,state,reorder,disabled";
source: "elm";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
}
program {
- name: "go_reorder_enabled";
+ name: "reorder_start";
signal: "elm,state,reorder,enabled";
source: "elm";
action: STATE_SET "enabled" 0.0;
target: "disclip";
}
program {
- name: "go_reorder_disabled";
+ name: "reorder_end";
signal: "elm,state,reorder,disabled";
source: "elm";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
}
program {
- name: "go_reorder_enabled";
+ name: "reorder_start";
signal: "elm,state,reorder,enabled";
source: "elm";
action: STATE_SET "enabled" 0.0;
target: "disclip";
}
program {
- name: "go_reorder_disabled";
+ name: "reorder_end";
signal: "elm,state,reorder,disabled";
source: "elm";
action: STATE_SET "default" 0.0;
transition: DECELERATE 0.5;
}
program {
- name: "go_reorder_enabled";
+ name: "reorder_start";
signal: "elm,state,reorder,enabled";
source: "elm";
action: STATE_SET "enabled" 0.0;
void *event_info)
{
Elm_Gen_Item *it = data;
+ EINA_SAFETY_ON_NULL_RETURN(it);
Evas_Event_Mouse_Move *ev = event_info;
Evas_Coord minw = 0, minh = 0, x, y, dx, dy, adx, ady;
Evas_Coord ox, oy, ow, oh, it_scrl_y, y_pos;
return ECORE_CALLBACK_RENEW;
}
- if (!it->wd->decorate_all_mode)
- edje_object_signal_emit(VIEW(it), "elm,state,reorder,enabled", "elm");
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,enabled", "elm");
}
return ECORE_CALLBACK_CANCEL;
}
}
static void
-_mouse_down(void *data,
- Evas *evas __UNUSED__,
- Evas_Object *obj,
- void *event_info)
+_item_unfocusable_set(Elm_Gen_Item *it, Eina_Bool unfocus)
{
- Elm_Gen_Item *it = data;
- Evas_Event_Mouse_Down *ev = event_info;
- Evas_Coord x, y;
Eina_List *l;
Evas_Object *item_obj;
-
- if (ev->button != 1) return;
+ Evas_Object *obj = WIDGET(it);
if (!it->can_focus)
{
EINA_LIST_FOREACH(it->content_objs, l, item_obj)
{
- elm_widget_tree_unfocusable_set(item_obj, EINA_FALSE);
+ if (unfocus) elm_widget_focused_object_clear(item_obj);
+ elm_widget_tree_unfocusable_set(item_obj, unfocus);
}
if (elm_widget_type_get(obj) == _genlist)
{
EINA_LIST_FOREACH(it->item->flip_content_objs, l, item_obj)
{
- elm_widget_tree_unfocusable_set(item_obj, EINA_FALSE);
+ if (unfocus) elm_widget_focused_object_clear(item_obj);
+ elm_widget_tree_unfocusable_set(item_obj, unfocus);
}
EINA_LIST_FOREACH(it->item->deco_all_content_objs, l, item_obj)
{
- elm_widget_tree_unfocusable_set(item_obj, EINA_FALSE);
+ if (unfocus) elm_widget_focused_object_clear(item_obj);
+ elm_widget_tree_unfocusable_set(item_obj, unfocus);
}
}
- it->can_focus = EINA_TRUE;
+ it->can_focus = !unfocus;
}
+}
+
+static void
+_mouse_down(void *data,
+ Evas *evas __UNUSED__,
+ Evas_Object *obj,
+ void *event_info)
+{
+ Elm_Gen_Item *it = data;
+ Evas_Event_Mouse_Down *ev = event_info;
+ Evas_Coord x, y;
+
+ if (ev->button != 1) return;
+
+ _item_unfocusable_set(it, EINA_FALSE);
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
{
it->wd->on_hold = EINA_TRUE;
_item_order_update(EINA_INLIST_GET(it), in);
+ if (!(it->deco_all_view) && (it->item->type != ELM_GENLIST_ITEM_GROUP))
+ {
+ if (it->wd->reorder_mode)
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,mode_set", "elm");
+ else
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,mode_unset", "elm");
+ }
+
treesize = edje_object_data_get(VIEW(it), "treesize");
if (treesize) tsize = atoi(treesize);
if (!it->spacer && treesize)
if (effect_on) edje_object_signal_emit(it->deco_all_view, "elm,state,decorate,enabled,effect", "elm");
else edje_object_signal_emit(it->deco_all_view, "elm,state,decorate,enabled", "elm");
+ if (it->wd->reorder_mode)
+ {
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,mode_unset", "elm");
+ edje_object_signal_emit(it->deco_all_view, "elm,state,reorder,mode_set", "elm");
+ }
+ else
+ edje_object_signal_emit(it->deco_all_view, "elm,state,reorder,mode_unset", "elm");
+
_item_mouse_callbacks_del(it, VIEW(it));
_item_mouse_callbacks_add(it, it->deco_all_view);
void
_item_select(Elm_Gen_Item *it)
{
- Eina_List *l;
- Evas_Object *obj = WIDGET(it);
- Evas_Object *item_obj;
if ((it->generation < it->wd->generation) || (it->decorate_it_set) ||
(it->select_mode == ELM_OBJECT_SELECT_MODE_NONE) ||
}
else if (it->wd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS) return;
- evas_object_ref(obj);
it->walking++;
it->wd->walking++;
- if (it->wd->last_selected_item &&
+ if ((it->wd->last_selected_item) &&
(it != (Elm_Gen_Item *) it->wd->last_selected_item))
- {
- Elm_Gen_Item *_lsit = (Elm_Gen_Item *)it->wd->last_selected_item;
+ _item_unfocusable_set((Elm_Gen_Item *)it->wd->last_selected_item, EINA_TRUE);
- EINA_LIST_FOREACH(_lsit->content_objs, l, item_obj)
- {
- elm_widget_focused_object_clear(item_obj);
- elm_widget_tree_unfocusable_set(item_obj, EINA_TRUE);
- }
- if (elm_widget_type_get(obj) == _genlist)
- {
- EINA_LIST_FOREACH(_lsit->item->flip_content_objs, l, item_obj)
- {
- elm_widget_focused_object_clear(item_obj);
- elm_widget_tree_unfocusable_set(item_obj, EINA_TRUE);
- }
- EINA_LIST_FOREACH(_lsit->item->deco_all_content_objs, l, item_obj)
- {
- elm_widget_focused_object_clear(item_obj);
- elm_widget_tree_unfocusable_set(item_obj, EINA_TRUE);
- }
- }
- _lsit->can_focus = EINA_FALSE;
- }
if (it->func.func) it->func.func((void *)it->func.data, WIDGET(it), it);
if (it->generation == it->wd->generation)
evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, it);
else
it->wd->last_selected_item = (Elm_Object_Item *)it;
}
- evas_object_unref(obj);
}
static Evas_Object *
}
}
}
+ eina_list_free(list);
+
if (wd->calc_job) ecore_job_del(wd->calc_job);
wd->calc_job = ecore_job_add(_calc_job, wd);
}
elm_genlist_reorder_mode_set(Evas_Object *obj,
Eina_Bool reorder_mode)
{
+ Eina_List *list, *l;
+ Elm_Gen_Item *it;
+
ELM_CHECK_WIDTYPE(obj, widtype);
Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
wd->reorder_mode = !!reorder_mode;
+
+ list = elm_genlist_realized_items_get(obj);
+ EINA_LIST_FOREACH(list, l, it)
+ {
+ if (it->item->type != ELM_GENLIST_ITEM_GROUP)
+ {
+ if (wd->reorder_mode)
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,mode_set", "elm");
+ else
+ edje_object_signal_emit(VIEW(it), "elm,state,reorder,mode_unset", "elm");
+ }
+ }
+ eina_list_free(list);
}
EAPI Eina_Bool