fix line draw bug - add event pass through flag for objects

SVN revision: 3219
This commit is contained in:
Carsten Haitzler 2000-08-22 03:45:58 +00:00
parent 3a0a2fe1fa
commit eb7ec35dbc
4 changed files with 12 additions and 2 deletions

View File

@ -152,6 +152,8 @@ struct _Evas_Object_Any
int delete_me;
int pass_events;
void (*object_free) (Evas_Object _o);
void (*object_renderer_data_free) (Evas _e, Evas_Object _o);
@ -270,6 +272,7 @@ void evas_set_gradient(Evas e, Evas_Object o, Evas_Gradient grad);
void evas_set_angle(Evas e, Evas_Object o, double angle);
void evas_set_zoom_scale(Evas e, Evas_Object o, int scale);
void evas_set_line_xy(Evas e, Evas_Object o, double x1, double y1, double x2, double y2);
void evas_set_pass_events(Evas e, Evas_Object o, int pass_events);
/* cache settings for performance */
void evas_set_font_cache(Evas e, int size);

View File

@ -32,7 +32,7 @@ _evas_highest_object_at_point(Evas e, int x, int y)
Evas_Object ob;
ob = ll->data;
if (ob->current.visible)
if ((ob->current.visible) && (!ob->pass_events))
{
if (_evas_point_in_object(e, ob, x, y))
o = ob;
@ -58,7 +58,7 @@ _evas_objects_at_point(Evas e, int x, int y)
Evas_Object ob;
ob = ll->data;
if (ob->current.visible)
if ((ob->current.visible) && (!ob->pass_events))
{
if (_evas_point_in_object(e, ll->data, x, y))
objs = evas_list_prepend(objs, ll->data);

View File

@ -416,6 +416,7 @@ void __evas_imlib_line_draw(Display *disp, Window win,
else x = x2;
if (y1 < y2) y = y1;
else y = y2;
w++; h++;
for(l = drawable_list; l; l = l->next)
{
Evas_Imlib_Drawable *dr;

View File

@ -138,6 +138,12 @@ evas_set_zoom_scale(Evas e, Evas_Object o, int scale)
e->changed = 1;
}
void
evas_set_pass_events(Evas e, Evas_Object o, int pass_events)
{
o->pass_events = 1;
}
void
evas_set_font_cache(Evas e, int size)
{