propogate pass_events to sub-objects of smart objects...

SVN revision: 10503
This commit is contained in:
Carsten Haitzler 2004-06-14 06:04:22 +00:00
parent e06d785bbb
commit 59419c9aa4
9 changed files with 37 additions and 25 deletions

View File

@ -2,6 +2,14 @@
#include "evas_private.h"
#include "Evas.h"
int
evas_event_passes_through(Evas_Object *obj)
{
if (obj->pass_events) return 1;
if (obj->smart.parent) return evas_event_passes_through(obj->smart.parent);
return 0;
}
Evas_List *
evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y)
{
@ -21,7 +29,7 @@ evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y)
obj = (Evas_Object *)l2;
if (obj == stop) goto done;
if ((!obj->pass_events) && (!obj->smart.smart))
if ((!evas_event_passes_through(obj)) && (!obj->smart.smart))
{
evas_object_clip_recalc(obj);
if ((evas_object_is_in_output_rect(obj, x, y, 1, 1)) &&
@ -363,7 +371,7 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, const void *data)
obj = l->data;
if ((obj->cur.visible) &&
(evas_object_clippers_is_visible(obj)) &&
(!obj->pass_events) &&
(!evas_event_passes_through(obj)) &&
(!obj->smart.smart) &&
(!obj->clip.clipees))
{
@ -436,7 +444,7 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, const void *data)
(obj->cur.visible) &&
(evas_object_clippers_is_visible(obj)) &&
(evas_list_find(ins, obj)) &&
(!obj->pass_events) &&
(!evas_event_passes_through(obj)) &&
(!obj->smart.smart) &&
(!obj->clip.clipees))
{

View File

@ -103,7 +103,7 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
MAGIC_CHECK_END();
if ((x1 == o->cur.x1) && (y1 == o->cur.y1) &&
(x2 == o->cur.x2) && (y2 == o->cur.y2)) return;
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
@ -142,7 +142,7 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,

View File

@ -457,7 +457,7 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
evas_object_inform_call_move(obj);
return;
}
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
@ -466,7 +466,7 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
obj->cur.cache.geometry.validity = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -510,7 +510,7 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
evas_object_inform_call_resize(obj);
return;
}
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
@ -519,7 +519,7 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
obj->cur.cache.geometry.validity = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -585,7 +585,7 @@ evas_object_show(Evas_Object *obj)
obj->cur.visible = 1;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -627,7 +627,7 @@ evas_object_hide(Evas_Object *obj)
obj->cur.visible = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -782,7 +782,7 @@ evas_object_top_at_xy_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include
obj = (Evas_Object *)l2;
if (obj->delete_me) continue;
if ((!include_pass_events_objects) && (obj->pass_events)) continue;
if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
evas_object_clip_recalc(obj);
if ((evas_object_is_in_output_rect(obj, xx, yy, 1, 1)) &&
@ -838,7 +838,7 @@ evas_object_top_in_rectangle_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord
obj = (Evas_Object *)l2;
if (obj->delete_me) continue;
if ((!include_pass_events_objects) && (obj->pass_events)) continue;
if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
evas_object_clip_recalc(obj);
if ((evas_object_is_in_output_rect(obj, xx, yy, ww, hh)) &&
@ -879,7 +879,7 @@ evas_objects_at_xy_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include_pa
obj = (Evas_Object *)l2;
if (obj->delete_me) continue;
if ((!include_pass_events_objects) && (obj->pass_events)) continue;
if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
evas_object_clip_recalc(obj);
if ((evas_object_is_in_output_rect(obj, xx, yy, 1, 1)) &&
@ -924,7 +924,7 @@ evas_objects_in_rectangle_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w,
obj = (Evas_Object *)l2;
if (obj->delete_me) continue;
if ((!include_pass_events_objects) && (obj->pass_events)) continue;
if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
evas_object_clip_recalc(obj);
if ((evas_object_is_in_output_rect(obj, xx, yy, ww, hh)) &&

View File

@ -99,7 +99,7 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON);
return;
MAGIC_CHECK_END();
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
@ -139,7 +139,7 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,

View File

@ -578,7 +578,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
same_font = 1;
if (size == o->cur.size) return;
}
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
@ -705,7 +705,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
o->changed = 1;
evas_object_change(obj);
evas_object_coords_recalc(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,

View File

@ -73,7 +73,7 @@ evas_object_raise(Evas_Object *obj)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -119,7 +119,7 @@ evas_object_lower(Evas_Object *obj)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -173,7 +173,7 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{
@ -227,7 +227,7 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->pass_events)
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
{

View File

@ -127,8 +127,10 @@ evas_common_convert_yuv_420p_601_rgba(DATA8 **src, DATA8 *dst, int w, int h)
#ifndef BUILD_MMX
mmx = 0;
#endif
if (sse) _evas_yv12torgb_sse(src, dst, w, h);
else if (mmx) _evas_yv12torgb_mmx(src, dst, w, h);
if (evas_common_cpu_has_feature(CPU_FEATURE_MMX2))
_evas_yv12torgb_sse(src, dst, w, h);
else if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
_evas_yv12torgb_mmx(src, dst, w, h);
#ifdef BUILD_ALTIVEC
if (evas_common_cpu_has_feature(CPU_FEATURE_ALTIVEC))
_evas_yv12torgb_altivec(src, dst, w, h);

View File

@ -5,6 +5,7 @@
#include "evas_blend_ops.h"
extern DATA8 *_evas_pow_lut;
extern const DATA16 _evas_const_c1[4];
static DATA32 **scale_calc_y_points(DATA32 *src, int sw, int sh, int dh);

View File

@ -578,6 +578,7 @@ void evas_object_recalc_clippees(Evas_Object *obj);
int evas_object_clippers_is_visible(Evas_Object *obj);
int evas_object_clippers_was_visible(Evas_Object *obj);
void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info);
int evas_event_passes_through(Evas_Object *obj);
Evas_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y);
int evas_file_path_is_full_path(char *path);
char *evas_file_path_join(char *path, char *end);