diff --git a/legacy/evas/src/evas_render.c b/legacy/evas/src/evas_render.c index eafa25bbce..b30694a6d0 100644 --- a/legacy/evas/src/evas_render.c +++ b/legacy/evas/src/evas_render.c @@ -157,6 +157,7 @@ evas_render_updates(Evas e) Evas_List delete_objects; Evas_List l, ll; int output_size_change = 0; + int zoom_changed = 1; void (*func_draw_add_rect) (Display *disp, Imlib_Image dstim, Window win, int x, int y, int w, int h); void * (*func_image_new_from_file) (Display *disp, char *file); void (*func_image_set_borders) (void *im, int left, int right, int top, int bottom); @@ -314,8 +315,8 @@ evas_render_updates(Evas e) { if (((double)(e->current.viewport.w - e->previous.viewport.w) == (double)(e->current.drawable_width - e->previous.drawable_width)) && - ((double)(e->current.viewport.w - e->previous.viewport.w) == - (double)(e->current.drawable_width - e->previous.drawable_width))) + ((double)(e->current.viewport.h - e->previous.viewport.h) == + (double)(e->current.drawable_height - e->previous.drawable_height))) { if ((e->current.drawable_width > e->previous.drawable_width)) evas_update_rect(e, @@ -338,10 +339,13 @@ evas_render_updates(Evas e) e->current.drawable_height - e->previous.drawable_height); } else - evas_update_rect(e, - 0, 0, - e->current.drawable_width, - e->current.drawable_height); + { + zoom_changed = 1; + evas_update_rect(e, + 0, 0, + e->current.drawable_width, + e->current.drawable_height); + } } else if ((e->current.drawable_width != e->previous.drawable_width) || (e->current.drawable_height != e->previous.drawable_height)) @@ -415,6 +419,15 @@ evas_render_updates(Evas e) o->renderer_data.method[e->current.render_method] = NULL; } } + if ((zoom_changed) && + (o->type == OBJECT_TEXT)) + { + if (o->renderer_data.method[e->current.render_method]) + { + func_text_font_free((void *)o->renderer_data.method[e->current.render_method]); + o->renderer_data.method[e->current.render_method] = NULL; + } + } } if (o->changed) {