raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8ca7a21403f93f69bfc921f85b8df95ab6edbe43

commit 8ca7a21403f93f69bfc921f85b8df95ab6edbe43
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Sun Feb 23 22:11:02 2014 +0900

    textgrid - out-of-bounds chars cause update artifacts - fix.
    
    over-redner by 1 char cell in each direction of an update region to
    clean up overflow artifacts.
---
 src/lib/evas/canvas/evas_object_textgrid.c | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_textgrid.c 
b/src/lib/evas/canvas/evas_object_textgrid.c
index a68480e..0020ed0 100644
--- a/src/lib/evas/canvas/evas_object_textgrid.c
+++ b/src/lib/evas/canvas/evas_object_textgrid.c
@@ -915,13 +915,29 @@ evas_object_textgrid_render_pre(Evas_Object *eo_obj,
                {
                   Evas_Object_Textgrid_Row *r = &(o->cur.rows[i]);
                   if (r->ch1 >= 0)
-                    evas_add_rect(&obj->layer->evas->clip_changes,
-                                  obj->cur->geometry.x + 
-                                  (r->ch1 * o->cur.char_width),
-                                  obj->cur->geometry.y + 
-                                  (i * o->cur.char_height),
-                                  (r->ch2 - r->ch1 + 1) * o->cur.char_width,
-                                  o->cur.char_height);
+                    {
+                       Evas_Coord chx, chy, chw, chh;
+                       
+                       chx = r->ch1 * o->cur.char_width;
+                       chy = i * o->cur.char_height;
+                       chw = (r->ch2 - r->ch1 + 1) * o->cur.char_width;
+                       chh = o->cur.char_height;
+                       
+                       chx -= o->cur.char_width;
+                       chy -= o->cur.char_height;
+                       chw += o->cur.char_width * 2;
+                       chh += o->cur.char_height * 2;
+                       
+                       chx += obj->cur->geometry.x;
+                       chy += obj->cur->geometry.y;
+                       RECTS_CLIP_TO_RECT(chx, chy, chw, chh,
+                                          obj->cur->cache.clip.x,
+                                          obj->cur->cache.clip.y,
+                                          obj->cur->cache.clip.w,
+                                          obj->cur->cache.clip.h);
+                       evas_add_rect(&obj->layer->evas->clip_changes,
+                                     chx, chy, chw, chh);
+                    }
                }
           }
      }

-- 


Reply via email to