Evas_Object *bg;
Evas_Object *btn_layout;
Eina_List *items;
+ int wipe_dir;
int btn_cnt;
Elm_Ctxpopup_Arrow arrow_priority[4];
Eina_Bool scroller_disabled:1;
if ((!wd) || (!rect))
{
+ wd->wipe_dir = ELM_FX_WIPE_DIR_UP;
return ELM_CTXPOPUP_ARROW_DOWN;
}
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
rect->y = y;
rect->w = base_w;
rect->h = base_h;
+ wd->wipe_dir = ELM_FX_WIPE_DIR_UP;
return ELM_CTXPOPUP_ARROW_DOWN;
}
ADJUST_POS_X(x);
y -= (base_h + finger_size);
arrow = ELM_CTXPOPUP_ARROW_DOWN;
+ wd->wipe_dir = ELM_FX_WIPE_DIR_UP;
break;
case ELM_CTXPOPUP_ARROW_RIGHT:
ADJUST_POS_Y(y);
x -= (base_w + finger_size);
arrow = ELM_CTXPOPUP_ARROW_RIGHT;
+ wd->wipe_dir = ELM_FX_WIPE_DIR_LEFT;
break;
case ELM_CTXPOPUP_ARROW_LEFT:
ADJUST_POS_Y(y);
x += finger_size;
arrow = ELM_CTXPOPUP_ARROW_LEFT;
+ wd->wipe_dir = ELM_FX_WIPE_DIR_RIGHT;
break;
case ELM_CTXPOPUP_ARROW_UP:
ADJUST_POS_X(x);
y += finger_size;
arrow = ELM_CTXPOPUP_ARROW_UP;
+ wd->wipe_dir = ELM_FX_WIPE_DIR_DOWN;
break;
default:
break;
ADJUST_POS_X(x);
y -= (base_h + finger_size);
arrow = ELM_CTXPOPUP_ARROW_DOWN;
+ wd->wipe_dir = ELM_FX_WIPE_DIR_UP;
}
rect->x = x;
evas_object_show(wd->arrow);
wd->visible = EINA_TRUE;
-
}
static void
}
static void
+_show_effect_done(void *data, Elm_Transit *transit)
+{
+ //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented on the edje.
+ Widget_Data *wd = data;
+ elm_transit_fx_clear(transit);
+
+ if(wd->box)
+ elm_transit_fx_insert(transit, elm_fx_color_add(wd->box, 0, 0, 0, 0, 255, 255, 255, 255 ));
+ if(wd->content)
+ elm_transit_fx_insert(transit, elm_fx_color_add(wd->content, 0, 0, 0, 0, 255, 255, 255, 255 ));
+ if(wd->btn_layout)
+ elm_transit_fx_insert(transit, elm_fx_color_add(wd->btn_layout, 0, 0, 0, 0, 255, 255, 255, 255 ));
+ elm_transit_run(transit, 0.2);
+ elm_transit_completion_callback_set(transit, NULL, NULL);
+ elm_transit_del(transit);
+ edje_object_signal_emit(wd->base, "elm,state,show", "elm");
+}
+
+static void
+_show_effect(Widget_Data* wd)
+{
+ //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented on the edje.
+ Elm_Transit* transit;
+
+ if(wd->box)
+ evas_object_color_set(wd->box, 0, 0, 0, 0 );
+ if(wd->content)
+ evas_object_color_set(wd->content, 0, 0, 0, 0);
+ if(wd->btn_layout)
+ evas_object_color_set(wd->btn_layout, 0, 0, 0, 0);
+
+ transit = elm_transit_add(wd->base);
+ elm_transit_fx_insert(transit, elm_fx_color_add( wd->base, 0, 0, 0, 0, 255, 255, 255, 255 ) );
+ elm_transit_fx_insert(transit, elm_fx_wipe_add( wd->base, ELM_FX_WIPE_TYPE_SHOW, wd->wipe_dir) );
+ elm_transit_curve_style_set( transit, ELM_ANIMATOR_CURVE_OUT);
+ elm_transit_completion_callback_set( transit, _show_effect_done, wd);
+ elm_transit_run(transit, 0.5 );
+}
+
+static void
_ctxpopup_scroller_resize(void *data, Evas *e, Evas_Object * obj,
void *event_info)
{
if (!wd)
return;
- if (wd->visible)
+ if (wd->visible) {
_sizing_eval(data);
+ _show_effect(wd);
+ }
}
static void
evas_map_point_image_uv_set(map, 2, w, h);
evas_map_point_image_uv_set(map, 3, w2, h);
evas_map_point_coord_set(map, 0, x + w2, y, 0);
- evas_map_point_coord_set(map, 1, w, y, 0);
- evas_map_point_coord_set(map, 2, w, h2, 0);
+ evas_map_point_coord_set(map, 1, x + w, y, 0);
+ evas_map_point_coord_set(map, 2, x +w, h2, 0);
evas_map_point_coord_set(map, 3, x + w2, h2, 0);
break;
case ELM_FX_WIPE_DIR_RIGHT: