fix moving edje obj aroudn with maps in it.

SVN revision: 46385
This commit is contained in:
Carsten Haitzler 2010-02-23 08:37:30 +00:00
parent 1ddbe5c5b1
commit 79b6821f90
3 changed files with 45 additions and 30 deletions

View File

@ -221,10 +221,8 @@ _edje_recalc_do(Edje *ed)
ed->postponed = 0;
evas_object_smart_need_recalculate_set(ed->obj, 0);
if (!ed->dirty)
{
return;
}
if (!ed->dirty) return;
ed->have_mapped_part = 0;
ed->dirty = 0;
ed->state++;
for (i = 0; i < ed->table_parts_size; i++)
@ -250,6 +248,12 @@ _edje_recalc_do(Edje *ed)
#endif
}
void
_edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep)
{
_edje_part_recalc(ed, ep, FLAG_XY);
}
int
_edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y)
{
@ -2032,6 +2036,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
if (ep->param2) desc2 = ep->param2->description;
pos = ep->description_pos;
ed->have_mapped_part = 1;
// create map and populate with part geometry
map = evas_map_new(4);
evas_map_util_points_populate_from_geometry

View File

@ -832,6 +832,7 @@ struct _Edje
unsigned int text_part_change : 1;
unsigned int all_part_change : 1;
#endif
unsigned int have_mapped_part : 1;
lua_State *L;
};
@ -1215,6 +1216,7 @@ Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp,
void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2);
void _edje_recalc(Edje *ed);
void _edje_recalc_do(Edje *ed);
void _edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep);
int _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y);
void _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y);

View File

@ -122,26 +122,34 @@ _edje_smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y)
return;
}
if (_edje_lua_script_only(ed))
{
_edje_lua_script_only_move(ed);
return;
}
for (i = 0; i < ed->table_parts_size; i++)
{
Edje_Real_Part *ep;
Evas_Coord ox, oy;
_edje_lua_script_only_move(ed);
return;
}
ep = ed->table_parts[i];
evas_object_geometry_get(ep->object, &ox, &oy, NULL, NULL);
evas_object_move(ep->object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y);
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
_edje_entry_real_part_configure(ep);
if (ep->swallowed_object)
{
evas_object_geometry_get(ep->swallowed_object, &ox, &oy, NULL, NULL);
evas_object_move(ep->swallowed_object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y);
}
if (ed->have_mapped_part)
{
ed->dirty = 1;
_edje_recalc_do(ed);
}
else
{
for (i = 0; i < ed->table_parts_size; i++)
{
Edje_Real_Part *ep;
Evas_Coord ox, oy;
ep = ed->table_parts[i];
evas_object_geometry_get(ep->object, &ox, &oy, NULL, NULL);
evas_object_move(ep->object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y);
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
_edje_entry_real_part_configure(ep);
if (ep->swallowed_object)
{
evas_object_geometry_get(ep->swallowed_object, &ox, &oy, NULL, NULL);
evas_object_move(ep->swallowed_object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y);
}
}
}
// _edje_emit(ed, "move", NULL);
}
@ -191,10 +199,10 @@ _edje_smart_show(Evas_Object * obj)
return;
}
if (_edje_lua_script_only(ed))
{
_edje_lua_script_only_show(ed);
return;
}
{
_edje_lua_script_only_show(ed);
return;
}
_edje_emit(ed, "show", NULL);
}
@ -214,10 +222,10 @@ _edje_smart_hide(Evas_Object * obj)
return;
}
if (_edje_lua_script_only(ed))
{
_edje_lua_script_only_hide(ed);
return;
}
{
_edje_lua_script_only_hide(ed);
return;
}
_edje_emit(ed, "hide", NULL);
}