From eb7ec35dbc9536a823147d2281a2cabd31763395 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 22 Aug 2000 03:45:58 +0000 Subject: [PATCH] fix line draw bug - add event pass through flag for objects SVN revision: 3219 --- legacy/evas/src/Evas.h | 3 +++ legacy/evas/src/evas_events.c | 4 ++-- legacy/evas/src/evas_imlib_routines.c | 1 + legacy/evas/src/evas_misc.c | 6 ++++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/legacy/evas/src/Evas.h b/legacy/evas/src/Evas.h index f90de75e59..e6ed3c1a5b 100644 --- a/legacy/evas/src/Evas.h +++ b/legacy/evas/src/Evas.h @@ -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); diff --git a/legacy/evas/src/evas_events.c b/legacy/evas/src/evas_events.c index 7a84c0c6fa..c1140633a8 100644 --- a/legacy/evas/src/evas_events.c +++ b/legacy/evas/src/evas_events.c @@ -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); diff --git a/legacy/evas/src/evas_imlib_routines.c b/legacy/evas/src/evas_imlib_routines.c index d243220b06..cb59514c5c 100644 --- a/legacy/evas/src/evas_imlib_routines.c +++ b/legacy/evas/src/evas_imlib_routines.c @@ -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; diff --git a/legacy/evas/src/evas_misc.c b/legacy/evas/src/evas_misc.c index 664ae25e64..98acd03062 100644 --- a/legacy/evas/src/evas_misc.c +++ b/legacy/evas/src/evas_misc.c @@ -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) {