if (!strcmp(ovl->wsd->engine->name, INTERNAL_ENGINE_NAME))
_obj_place(disp, x - (w / 2), y - (h / 2), w, h);
else
- _obj_place(disp, ovl->x - (w / 2), ovl->y - (h / 2), w, h);
+ {
+ evas_object_geometry_get(ovl->wsd->layout, &x, &y, NULL, NULL);
+ _obj_place(disp, (x + ovl->x) - (w / 2), (y + ovl->y) - (h / 2), w, h);
+ }
}
static void
sz = ftell(f);
if (sz > 0)
{
- char *buf;
-
- fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
+ char *buf = malloc(sz + 1);
if (buf)
{
+ memset(buf, 0, sz + 1);
+ rewind(f);
if (fread(buf, 1, sz, f))
{
eina_simple_xml_parse
(buf, sz, EINA_TRUE, _xml_route_dump_cb, &dump);
}
- free(buf);
+ else
+ free(buf);
}
}
fclose(f);
sz = ftell(f);
if (sz > 0)
{
- char *buf;
-
- fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
+ char *buf = malloc(sz + 1);
if (buf)
{
+ memset(buf, 0, sz + 1);
+ rewind(f);
if (fread(buf, 1, sz, f))
{
eina_simple_xml_parse
sz = ftell(f);
if (sz > 0)
{
- char *buf;
-
- fseek(f, 0, SEEK_SET);
- buf = malloc(sz);
+ char *buf = malloc(sz + 1);
if (buf)
{
+ memset(buf, 0, sz + 1);
+ rewind(f);
if (fread(buf, 1, sz, f))
{
eina_simple_xml_parse
return EVAS_EVENT_FLAG_NONE;
}
-
static Evas_Event_Flags
_pinch_momentum_start_cb(void *data,
void *ei)
sd->pinch_pan.y = mi->y1;
_overlay_place(sd);
}
+ // FIXME: Because n line move has some bouncing bug,
+ // perpect is calculated here
+ if (sd->pinch_pan.perspect >= 90)
+ sd->pinch_pan.perspect = 90;
+ else if (sd->pinch_pan.perspect <= 0)
+ sd->pinch_pan.perspect = 0;
+ sd->pinch_pan.perspect_y = mi->y1;
return EVAS_EVENT_FLAG_NONE;
}
sd->pinch_pan.y = mi->y2;
_overlay_place(sd);
}
+ // FIXME: Because n line move has some bouncing bug,
+ // perpect is calculated here
+ sd->pinch_pan.perspect += (mi->y2 - sd->pinch_pan.perspect_y);
+ sd->pinch_pan.perspect_y = mi->y2;
return EVAS_EVENT_FLAG_NONE;
}
return EVAS_EVENT_FLAG_NONE;
}
+static Evas_Event_Flags
+_pinch_n_lines_move_cb(void *data,
+ void *ei)
+{
+ Elm_Map_Smart_Data *sd = data;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EVAS_EVENT_FLAG_NONE);
+ Elm_Gesture_Line_Info *li = ei;
+
+ if (strcmp(sd->engine->name, INTERNAL_ENGINE_NAME) &&
+ (li->momentum.n == 2) &&
+ (((170 <= li->angle) && (li->angle <=190)) ||
+ (350 <= li->angle) || (li->angle <=10)))
+ {
+ sd->engine->perpective(ELM_WIDGET_DATA(sd)->obj, sd->pinch_pan.perspect, 0);
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags
+_pinch_n_lines_end_cb(void *data,
+ void *ei)
+{
+ Elm_Map_Smart_Data *sd = data;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EVAS_EVENT_FLAG_NONE);
+ Elm_Gesture_Line_Info *li = ei;
+
+ if (strcmp(sd->engine->name, INTERNAL_ENGINE_NAME) &&
+ (li->momentum.n == 2) &&
+ (((170 <= li->angle) && (li->angle <=190)) ||
+ (350 <= li->angle) || (li->angle <=10)))
+ {
+ sd->engine->perpective(ELM_WIDGET_DATA(sd)->obj, sd->pinch_pan.perspect, 0);
+ }
+
+ return EVAS_EVENT_FLAG_NONE;
+}
static void
_elm_map_pan_smart_pos_set(Evas_Object *obj,
Evas_Coord x,
if (sd->scr_timer)
{
- sd->scr_timer = NULL;
ecore_timer_del(sd->scr_timer);
+ sd->scr_timer = NULL;
}
if (sd->zoom_animator)
{
else return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
- sd->s_iface->content_pos_set(obj, x, y);
+ sd->s_iface->content_pos_set(obj, x, y, EINA_TRUE);
return EINA_TRUE;
}
elm_gesture_layer_cb_set
(priv->g_layer, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_END,
_pinch_momentum_end_cb, priv);
+ elm_gesture_layer_cb_set
+ (priv->g_layer, ELM_GESTURE_N_LINES, ELM_GESTURE_STATE_MOVE,
+ _pinch_n_lines_move_cb, priv);
+ elm_gesture_layer_cb_set
+ (priv->g_layer, ELM_GESTURE_N_LINES, ELM_GESTURE_STATE_END,
+ _pinch_n_lines_end_cb, priv);
priv->mode = ELM_MAP_ZOOM_MODE_MANUAL;
priv->zoom_min = priv->engine->zoom_min;