evas - supplemented more cases for object_freeze_events completion.

SVN revision: 64564
This commit is contained in:
ChunEon Park 2011-10-31 14:50:00 +00:00
parent 160370b0e6
commit 9db17a253c
6 changed files with 82 additions and 62 deletions

View File

@ -579,6 +579,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
if (((evas_object_clippers_is_visible(obj)) || if (((evas_object_clippers_is_visible(obj)) ||
(obj->mouse_grabbed)) && (obj->mouse_grabbed)) &&
(!evas_event_passes_through(obj)) && (!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees)) (!obj->clip.clipees))
{ {
if ((px != x) || (py != y)) if ((px != x) || (py != y))
@ -699,6 +700,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
(obj->mouse_grabbed)) && (obj->mouse_grabbed)) &&
(eina_list_data_find(ins, obj)) && (eina_list_data_find(ins, obj)) &&
(!evas_event_passes_through(obj)) && (!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees) && (!obj->clip.clipees) &&
((!obj->precise_is_inside) || ((!obj->precise_is_inside) ||
(evas_object_is_inside(obj, x, y)))) (evas_object_is_inside(obj, x, y))))
@ -1088,6 +1090,7 @@ evas_event_feed_multi_move(Evas *e,
if (((evas_object_clippers_is_visible(obj)) || if (((evas_object_clippers_is_visible(obj)) ||
(obj->mouse_grabbed)) && (obj->mouse_grabbed)) &&
(!evas_event_passes_through(obj)) && (!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees)) (!obj->clip.clipees))
{ {
ev.cur.canvas.x = x; ev.cur.canvas.x = x;
@ -1148,6 +1151,7 @@ evas_event_feed_multi_move(Evas *e,
(obj->mouse_grabbed)) && (obj->mouse_grabbed)) &&
(eina_list_data_find(ins, obj)) && (eina_list_data_find(ins, obj)) &&
(!evas_event_passes_through(obj)) && (!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees) && (!obj->clip.clipees) &&
((!obj->precise_is_inside) || ((!obj->precise_is_inside) ||
(evas_object_is_inside(obj, x, y)))) (evas_object_is_inside(obj, x, y))))

View File

@ -12,10 +12,10 @@ struct _Evas_Object_Line
DATA32 magic; DATA32 magic;
struct { struct {
struct { struct {
int x1, y1, x2, y2; int x1, y1, x2, y2;
struct { struct {
Evas_Coord w, h; Evas_Coord w, h;
} object; } object;
} cache; } cache;
Evas_Coord x1, y1, x2, y2; Evas_Coord x1, y1, x2, y2;
} cur, prev; } cur, prev;
@ -106,30 +106,32 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
(x2 == o->cur.x2) && (y2 == o->cur.y2)) return; (x2 == o->cur.x2) && (y2 == o->cur.y2)) return;
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!evas_event_passes_through(obj)) if (!evas_event_passes_through(obj) &&
was = evas_object_is_in_output_rect(obj, !evas_event_freezes_through(obj))
obj->layer->evas->pointer.x, was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
1, 1);
} }
if (x1 < x2) if (x1 < x2)
{ {
min_x = x1; min_x = x1;
max_x = x2; max_x = x2;
} }
else else
{ {
min_x = x2; min_x = x2;
max_x = x1; max_x = x1;
} }
if (y1 < y2) if (y1 < y2)
{ {
min_y = y1; min_y = y1;
max_y = y2; max_y = y2;
} }
else else
{ {
min_y = y2; min_y = y2;
max_y = y1; max_y = y1;
} }
obj->cur.geometry.x = min_x; obj->cur.geometry.x = min_x;
obj->cur.geometry.y = min_y; obj->cur.geometry.y = min_y;
@ -146,18 +148,19 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
evas_object_clip_dirty(obj); evas_object_clip_dirty(obj);
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
is = evas_object_is_in_output_rect(obj, is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x, obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.y, 1, 1);
if (!evas_event_passes_through(obj)) if (!evas_event_passes_through(obj) &&
{ !evas_event_freezes_through(obj))
if ((is ^ was) && obj->cur.visible) {
evas_event_feed_mouse_move(obj->layer->evas, if ((is ^ was) && obj->cur.visible)
obj->layer->evas->pointer.x, evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.y, obj->layer->evas->pointer.x,
obj->layer->evas->last_timestamp, obj->layer->evas->pointer.y,
NULL); obj->layer->evas->last_timestamp,
} NULL);
}
} }
evas_object_inform_call_move(obj); evas_object_inform_call_move(obj);
evas_object_inform_call_resize(obj); evas_object_inform_call_resize(obj);

View File

@ -448,7 +448,7 @@ evas_object_del(Evas_Object *obj)
EAPI void EAPI void
evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
{ {
int is, was = 0, pass = 0; int is, was = 0, pass = 0, freeze = 0;
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return; return;
@ -464,7 +464,8 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
pass = evas_event_passes_through(obj); pass = evas_event_passes_through(obj);
if (!pass) freeze = evas_event_freezes_through(obj);
if ((!pass) && (!freeze))
was = evas_object_is_in_output_rect(obj, was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x, obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.y, 1, 1);
@ -507,7 +508,7 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
EAPI void EAPI void
evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{ {
int is, was = 0, pass = 0; int is, was = 0, pass = 0, freeze =0;
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return; return;
@ -524,7 +525,8 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
pass = evas_event_passes_through(obj); pass = evas_event_passes_through(obj);
if (!pass) freeze = evas_event_freezes_through(obj);
if ((!pass) && (!freeze))
was = evas_object_is_in_output_rect(obj, was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x, obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.y, 1, 1);
@ -858,7 +860,8 @@ evas_object_show(Evas_Object *obj)
{ {
evas_object_clip_across_clippees_check(obj); evas_object_clip_across_clippees_check(obj);
evas_object_recalc_clippees(obj); evas_object_recalc_clippees(obj);
if (!evas_event_passes_through(obj)) if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{ {
if (!obj->smart.smart) if (!obj->smart.smart)
{ {
@ -900,7 +903,8 @@ evas_object_hide(Evas_Object *obj)
{ {
evas_object_clip_across_clippees_check(obj); evas_object_clip_across_clippees_check(obj);
evas_object_recalc_clippees(obj); evas_object_recalc_clippees(obj);
if (!evas_event_passes_through(obj)) if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{ {
if ((!obj->smart.smart) || if ((!obj->smart.smart) ||
((obj->cur.map) && (obj->cur.map->count == 4) && (obj->cur.usemap))) ((obj->cur.map) && (obj->cur.map->count == 4) && (obj->cur.usemap)))

View File

@ -102,14 +102,16 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON); MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON);
return; return;
MAGIC_CHECK_END(); MAGIC_CHECK_END();
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!evas_event_passes_through(obj)) if (!evas_event_passes_through(obj) &&
!evas_event_freezes_through(obj))
was = evas_object_is_in_output_rect(obj, was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x, obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.y,
1, 1);
} }
if (!o->points) if (!o->points)
{ {
o->offset.x = obj->cur.geometry.x; o->offset.x = obj->cur.geometry.x;
@ -172,7 +174,8 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
is = evas_object_is_in_output_rect(obj, is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x, obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.y, 1, 1);
if (!evas_event_passes_through(obj)) if (!evas_event_passes_through(obj) &&
!evas_event_freezes_through(obj) )
{ {
if ((is ^ was) && obj->cur.visible) if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, evas_event_feed_mouse_move(obj->layer->evas,

View File

@ -314,7 +314,7 @@ EAPI void
evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size size) evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size size)
{ {
Evas_Object_Text *o; Evas_Object_Text *o;
int is, was = 0, pass = 0; int is, was = 0, pass = 0, freeze = 0;
Evas_Font_Description *fdesc; Evas_Font_Description *fdesc;
if ((!font) || (size <= 0)) return; if ((!font) || (size <= 0)) return;
@ -344,11 +344,12 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
pass = evas_event_passes_through(obj); pass = evas_event_passes_through(obj);
if (!pass) freeze = evas_event_freezes_through(obj);
was = evas_object_is_in_output_rect(obj, if ((!pass) && (!freeze))
obj->layer->evas->pointer.x, was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
} }
#ifdef EVAS_FRAME_QUEUING #ifdef EVAS_FRAME_QUEUING
@ -359,8 +360,8 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
/* DO IT */ /* DO IT */
if (o->font) if (o->font)
{ {
evas_font_free(obj->layer->evas, o->font); evas_font_free(obj->layer->evas, o->font);
o->font = NULL; o->font = NULL;
} }
o->font = evas_font_load(obj->layer->evas, o->cur.fdesc, o->cur.source, o->font = evas_font_load(obj->layer->evas, o->cur.fdesc, o->cur.source,
@ -386,18 +387,19 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
evas_object_coords_recalc(obj); evas_object_coords_recalc(obj);
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!pass) if ((!pass) && (!freeze))
{ {
is = evas_object_is_in_output_rect(obj, is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x, obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1); obj->layer->evas->pointer.y,
if ((is ^ was) && obj->cur.visible) 1, 1);
evas_event_feed_mouse_move(obj->layer->evas, if ((is ^ was) && obj->cur.visible)
obj->layer->evas->pointer.x, evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.y, obj->layer->evas->pointer.x,
obj->layer->evas->last_timestamp, obj->layer->evas->pointer.y,
NULL); obj->layer->evas->last_timestamp,
} NULL);
}
} }
evas_object_inform_call_resize(obj); evas_object_inform_call_resize(obj);
} }

View File

@ -68,7 +68,8 @@ evas_object_raise(Evas_Object *obj)
evas_object_inform_call_restack(obj); evas_object_inform_call_restack(obj);
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!evas_event_passes_through(obj)) if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{ {
if (!obj->smart.smart) if (!obj->smart.smart)
{ {
@ -117,7 +118,8 @@ evas_object_lower(Evas_Object *obj)
evas_object_inform_call_restack(obj); evas_object_inform_call_restack(obj);
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!evas_event_passes_through(obj)) if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{ {
if (!obj->smart.smart) if (!obj->smart.smart)
{ {
@ -197,7 +199,8 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
evas_object_inform_call_restack(obj); evas_object_inform_call_restack(obj);
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!evas_event_passes_through(obj)) if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{ {
if (!obj->smart.smart) if (!obj->smart.smart)
{ {
@ -277,7 +280,8 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
evas_object_inform_call_restack(obj); evas_object_inform_call_restack(obj);
if (obj->layer->evas->events_frozen <= 0) if (obj->layer->evas->events_frozen <= 0)
{ {
if (!evas_event_passes_through(obj)) if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{ {
if (!obj->smart.smart) if (!obj->smart.smart)
{ {