static const char SIG_NAME_LOADED_FAIL[] = "name,loaded,fail";
static const char SIG_OVERLAY_CLICKED[] = "overlay,clicked";
static const char SIG_OVERLAY_DEL[] = "overlay,del";
+static const char SIG_LANG_CHANGED[] = "language,changed";
+
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{SIG_CLICKED, ""},
{SIG_CLICKED_DOUBLE, ""},
{SIG_NAME_LOADED_FAIL, ""},
{SIG_OVERLAY_CLICKED, ""},
{SIG_OVERLAY_DEL, ""},
+ {SIG_LANG_CHANGED, ""},
{NULL, NULL}
};
(ELM_MAP_PAN_SMART_NAME, _elm_map_pan, Elm_Map_Pan_Smart_Class,
Elm_Pan_Smart_Class, elm_pan_smart_class_get, NULL);
+static Eina_Bool
+_elm_map_smart_translate(Evas_Object *obj)
+{
+ evas_object_smart_callback_call(obj, SIG_LANG_CHANGED, NULL);
+ return EINA_TRUE;
+}
+
static void
_edj_overlay_size_get(Elm_Map_Smart_Data *sd,
Evas_Coord *w,
{
Evas_Coord vx, vy, sx, sy;
- _viewport_coord_get(sd, &vx, &vy, NULL, NULL);
- evas_object_geometry_get(sd->pan_obj, &sx, &sy, NULL, NULL);
- if (xx) *xx = x - vx + sx;
- if (yy) *yy = y - vy + sy;
+ if (!strcmp(sd->engine->name, INTERNAL_ENGINE_NAME))
+ {
+ _viewport_coord_get(sd, &vx, &vy, NULL, NULL);
+ evas_object_geometry_get(sd->pan_obj, &sx, &sy, NULL, NULL);
+ if (xx) *xx = x - vx + sx;
+ if (yy) *yy = y - vy + sy;
+ }
+ else
+ {
+ if (xx) *xx = x;
+ if (yy) *yy = y;
+ }
}
// Map coordinates to canvas geometry
Evas_Coord *yy)
{
_coord_to_canvas_no_rotation(sd, x, y, &x, &y);
- _rotate_do(x, y, sd->pan_rotate.cx, sd->pan_rotate.cy, sd->pan_rotate.d, &x, &y);
+ if (!strcmp(sd->engine->name, INTERNAL_ENGINE_NAME))
+ {
+ _rotate_do(x, y, sd->pan_rotate.cx, sd->pan_rotate.cy, sd->pan_rotate.d, &x, &y);
+ }
if (xx) *xx = x;
if (yy) *yy = y;
}
h = ovl->h;
}
_coord_to_canvas(ovl->wsd, ovl->x, ovl->y, &x, &y);
-
- if (!strcmp(ovl->wsd->engine->name, INTERNAL_ENGINE_NAME))
- _obj_place(disp, x - (w / 2), y - (h / 2), w, h);
- else
- {
- 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);
- }
+ _obj_place(disp, x - (w / 2), y - (h / 2), w, h);
}
static void
x = x + ((double)w * 0.5);
y = y + ((double)h * 0.5);
sd->engine->rotate(ELM_WIDGET_DATA(sd)->obj, angle, x, y, 0);
+ _overlay_place(sd);
}
return EVAS_EVENT_FLAG_NONE;
}
static void
+_elm_map_smart_calculate(Evas_Object *obj)
+{
+ ELM_MAP_DATA_GET(obj, sd);
+
+ if (strcmp(sd->engine->name, INTERNAL_ENGINE_NAME))
+ _overlay_place(sd);
+}
+
+static void
_elm_map_smart_move(Evas_Object *obj,
Evas_Coord x,
Evas_Coord y)
if (!strcmp(sd->engine->name, INTERNAL_ENGINE_NAME))
evas_object_move(sd->hit_rect, x, y);
- else sd->engine->move(obj, x, y);
+ else
+ {
+ sd->engine->move(obj, x, y);
+ _overlay_place(sd);
+ }
}
static void
if (!strcmp(sd->engine->name, INTERNAL_ENGINE_NAME))
evas_object_resize(sd->hit_rect, w, h);
- else sd->engine->resize(obj, w, h);
+ else
+ {
+ sd->engine->resize(obj, w, h);
+ _overlay_place(sd);
+ }
}
static void
{
ELM_WIDGET_CLASS(sc)->base.add = _elm_map_smart_add;
ELM_WIDGET_CLASS(sc)->base.del = _elm_map_smart_del;
+ ELM_WIDGET_CLASS(sc)->base.calculate = _elm_map_smart_calculate;
+
ELM_WIDGET_CLASS(sc)->base.move = _elm_map_smart_move;
ELM_WIDGET_CLASS(sc)->base.resize = _elm_map_smart_resize;
ELM_WIDGET_CLASS(sc)->base.member_add = _elm_map_smart_member_add;
ELM_WIDGET_CLASS(sc)->on_focus = _elm_map_smart_on_focus;
ELM_WIDGET_CLASS(sc)->theme = _elm_map_smart_theme;
ELM_WIDGET_CLASS(sc)->event = _elm_map_smart_event;
+ ELM_WIDGET_CLASS(sc)->translate = _elm_map_smart_translate;
}
#endif
}
else ERR("Not supported overlay type: %d", overlay->type);
- evas_object_smart_changed(overlay->wsd->pan_obj);
+ if (!strcmp(overlay->wsd->engine->name, INTERNAL_ENGINE_NAME))
+ evas_object_smart_changed(overlay->wsd->pan_obj);
+ else _overlay_place(overlay->wsd);
#else
(void)overlay;
(void)lon;