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)) ||
(obj->mouse_grabbed)) &&
(!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees))
{
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)) &&
(eina_list_data_find(ins, obj)) &&
(!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees) &&
((!obj->precise_is_inside) ||
(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)) ||
(obj->mouse_grabbed)) &&
(!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees))
{
ev.cur.canvas.x = x;
@ -1148,6 +1151,7 @@ evas_event_feed_multi_move(Evas *e,
(obj->mouse_grabbed)) &&
(eina_list_data_find(ins, obj)) &&
(!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)) &&
(!obj->clip.clipees) &&
((!obj->precise_is_inside) ||
(evas_object_is_inside(obj, x, y))))

View File

@ -12,10 +12,10 @@ struct _Evas_Object_Line
DATA32 magic;
struct {
struct {
int x1, y1, x2, y2;
struct {
Evas_Coord w, h;
} object;
int x1, y1, x2, y2;
struct {
Evas_Coord w, h;
} object;
} cache;
Evas_Coord x1, y1, x2, y2;
} 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;
if (obj->layer->evas->events_frozen <= 0)
{
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);
if (!evas_event_passes_through(obj) &&
!evas_event_freezes_through(obj))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
1, 1);
}
if (x1 < x2)
{
min_x = x1;
max_x = x2;
min_x = x1;
max_x = x2;
}
else
{
min_x = x2;
max_x = x1;
min_x = x2;
max_x = x1;
}
if (y1 < y2)
{
min_y = y1;
max_y = y2;
min_y = y1;
max_y = y2;
}
else
{
min_y = y2;
max_y = y1;
min_y = y2;
max_y = y1;
}
obj->cur.geometry.x = min_x;
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);
if (obj->layer->evas->events_frozen <= 0)
{
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!evas_event_passes_through(obj))
{
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
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,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
evas_object_inform_call_move(obj);
evas_object_inform_call_resize(obj);

View File

@ -448,7 +448,7 @@ evas_object_del(Evas_Object *obj)
EAPI void
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);
return;
@ -464,7 +464,8 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
if (obj->layer->evas->events_frozen <= 0)
{
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,
obj->layer->evas->pointer.x,
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
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);
return;
@ -524,7 +525,8 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
if (obj->layer->evas->events_frozen <= 0)
{
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,
obj->layer->evas->pointer.x,
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_recalc_clippees(obj);
if (!evas_event_passes_through(obj))
if ((!evas_event_passes_through(obj)) &&
(!evas_event_freezes_through(obj)))
{
if (!obj->smart.smart)
{
@ -900,7 +903,8 @@ evas_object_hide(Evas_Object *obj)
{
evas_object_clip_across_clippees_check(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) ||
((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);
return;
MAGIC_CHECK_END();
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,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
obj->layer->evas->pointer.y,
1, 1);
}
if (!o->points)
{
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,
obj->layer->evas->pointer.x,
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,

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 *o;
int is, was = 0, pass = 0;
int is, was = 0, pass = 0, freeze = 0;
Evas_Font_Description *fdesc;
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)
{
pass = evas_event_passes_through(obj);
if (!pass)
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
pass = evas_event_passes_through(obj);
freeze = evas_event_freezes_through(obj);
if ((!pass) && (!freeze))
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
}
#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 */
if (o->font)
{
evas_font_free(obj->layer->evas, o->font);
o->font = NULL;
evas_font_free(obj->layer->evas, o->font);
o->font = NULL;
}
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);
if (obj->layer->evas->events_frozen <= 0)
{
if (!pass)
{
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
if ((!pass) && (!freeze))
{
is = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
1, 1);
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
evas_object_inform_call_resize(obj);
}

View File

@ -68,7 +68,8 @@ evas_object_raise(Evas_Object *obj)
evas_object_inform_call_restack(obj);
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)
{
@ -117,7 +118,8 @@ evas_object_lower(Evas_Object *obj)
evas_object_inform_call_restack(obj);
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)
{
@ -197,7 +199,8 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
evas_object_inform_call_restack(obj);
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)
{
@ -277,7 +280,8 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
evas_object_inform_call_restack(obj);
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)
{