ooooops. evas bug1 fix fix fix

SVN revision: 7213
This commit is contained in:
Carsten Haitzler 2003-07-22 05:16:47 +00:00
parent baecb9fcf4
commit 2b3b2ff8ca
5 changed files with 139 additions and 101 deletions

View File

@ -102,9 +102,10 @@ evas_object_line_xy_set(Evas_Object *obj, double x1, double y1, double x2, doubl
MAGIC_CHECK_END();
if ((x1 == o->cur.x1) && (y1 == o->cur.y1) &&
(x2 == o->cur.x2) && (y2 == o->cur.y2)) return;
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
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;
@ -140,10 +141,13 @@ evas_object_line_xy_set(Evas_Object *obj, double x1, double y1, double x2, doubl
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);
if (!obj->pass_events)
{
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y);
}
evas_object_inform_call_move(obj);
evas_object_inform_call_resize(obj);
}

View File

@ -455,23 +455,27 @@ evas_object_move(Evas_Object *obj, double x, double y)
evas_object_inform_call_move(obj);
return;
}
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
obj->cur.geometry.x = x;
obj->cur.geometry.y = y;
obj->cur.cache.geometry.validity = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
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);
if (!obj->smart.smart)
{
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);
}
}
evas_object_inform_call_move(obj);
}
@ -503,23 +507,27 @@ evas_object_resize(Evas_Object *obj, double w, double h)
evas_object_inform_call_resize(obj);
return;
}
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
obj->cur.geometry.w = w;
obj->cur.geometry.h = h;
obj->cur.cache.geometry.validity = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
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);
if (!obj->smart.smart)
{
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);
}
}
}
@ -568,14 +576,17 @@ evas_object_show(Evas_Object *obj)
obj->cur.visible = 1;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
if (evas_object_is_in_output_rect(obj,
if (!obj->smart.smart)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1))
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1))
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y);
obj->layer->evas->pointer.y);
}
}
evas_object_inform_call_show(obj);
}
@ -606,33 +617,36 @@ evas_object_hide(Evas_Object *obj)
obj->cur.visible = 0;
evas_object_change(obj);
evas_object_recalc_clippees(obj);
if (!obj->smart.smart)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1))
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y);
/* if ((obj->mouse_in) || (obj->mouse_grabbed)) */
if (!obj->pass_events)
{
if (!obj->smart.smart)
{
obj->mouse_in = 0;
obj->mouse_grabbed = 0;
obj->layer->evas->pointer.object.in = evas_list_remove(obj->layer->evas->pointer.object.in, obj);
if (obj->layer->evas->events_frozen > 0) return;
if (obj->mouse_in)
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1))
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y);
/* if ((obj->mouse_in) || (obj->mouse_grabbed)) */
{
Evas_Event_Mouse_Out ev;
ev.buttons = obj->layer->evas->pointer.button;
ev.output.x = obj->layer->evas->pointer.x;
ev.output.y = obj->layer->evas->pointer.y;
ev.canvas.x = obj->layer->evas->pointer.canvas_x;
ev.canvas.y = obj->layer->evas->pointer.canvas_y;
ev.data = NULL;
ev.modifiers = &(obj->layer->evas->modifiers);
ev.locks = &(obj->layer->evas->locks);
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
obj->mouse_in = 0;
obj->mouse_grabbed = 0;
obj->layer->evas->pointer.object.in = evas_list_remove(obj->layer->evas->pointer.object.in, obj);
if (obj->layer->evas->events_frozen > 0) return;
if (obj->mouse_in)
{
Evas_Event_Mouse_Out ev;
ev.buttons = obj->layer->evas->pointer.button;
ev.output.x = obj->layer->evas->pointer.x;
ev.output.y = obj->layer->evas->pointer.y;
ev.canvas.x = obj->layer->evas->pointer.canvas_x;
ev.canvas.y = obj->layer->evas->pointer.canvas_y;
ev.data = NULL;
ev.modifiers = &(obj->layer->evas->modifiers);
ev.locks = &(obj->layer->evas->locks);
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
}
}
}

View File

@ -99,9 +99,10 @@ evas_object_polygon_point_add(Evas_Object *obj, double x, double y)
MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON);
return;
MAGIC_CHECK_END();
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
p = malloc(sizeof(Evas_Polygon_Point));
if (!p) return;
p->x = x;
@ -138,10 +139,13 @@ evas_object_polygon_point_add(Evas_Object *obj, double x, double y)
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);
if (!obj->pass_events)
{
if ((is ^ was) && obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y);
}
evas_object_inform_call_move(obj);
evas_object_inform_call_resize(obj);
}

View File

@ -502,9 +502,10 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, double size)
same_font = 1;
if (size == o->cur.size) return;
}
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if (!obj->pass_events)
was = evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
/* DO IT */
if (o->engine_data)
obj->layer->evas->engine.func->font_free(obj->layer->evas->engine.data.output,
@ -583,13 +584,16 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, double size)
o->changed = 1;
evas_object_change(obj);
evas_object_coords_recalc(obj);
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);
if (!obj->pass_events)
{
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);
}
evas_object_inform_call_resize(obj);
}

View File

@ -73,13 +73,16 @@ evas_object_raise(Evas_Object *obj)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
if (!obj->smart.smart)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
}
}
evas_object_inform_call_restack(obj);
}
@ -116,13 +119,16 @@ evas_object_lower(Evas_Object *obj)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
if (!obj->smart.smart)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
}
}
evas_object_inform_call_restack(obj);
}
@ -167,13 +173,16 @@ evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
if (!obj->smart.smart)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
}
}
evas_object_inform_call_restack(obj);
}
@ -218,13 +227,16 @@ evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
}
obj->restack = 1;
evas_object_change(obj);
if (!obj->smart.smart)
if (!obj->pass_events)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
if (!obj->smart.smart)
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
evas_event_feed_mouse_move(obj->layer->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y);
}
}
evas_object_inform_call_restack(obj);
}