diff src/event.c @ 70:92cfabe22d6b

find_shape_at_pos() finds a shape from clean ones.
author Thinker K.F. Li <thinker@branda.to>
date Wed, 13 Aug 2008 09:12:09 +0800
parents 581a03196093
children 23bc382d9683
line wrap: on
line diff
--- a/src/event.c	Wed Aug 13 08:21:06 2008 +0800
+++ b/src/event.c	Wed Aug 13 09:12:09 2008 +0800
@@ -84,7 +84,7 @@
     }
 }
 
-static geo_t *find_pos_in_geo(redraw_man_t *rdman,
+static geo_t *find_geo_in_pos(redraw_man_t *rdman,
 			      co_aix x, co_aix y, int *in_stroke) {
     geo_t *geo;
     geo_t **geos;
@@ -96,6 +96,8 @@
     cr = rdman->cr;
     for(i = rdman->n_gen_geos - 1; i >= 0; i--) {
 	geo = geos[i];
+	if(geo->flags & GEF_DIRTY)
+	    continue;
 	shape = geo->shape;
 	draw_shape_path(shape, cr);
 	if(shape->fill) {
@@ -127,7 +129,7 @@
     if(r != OK)
 	return NULL;
 
-    geo = find_pos_in_geo(rdman, x, y, in_stroke);
+    geo = find_geo_in_pos(rdman, x, y, in_stroke);
     if(geo == NULL)
 	return NULL;