EAPI void evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2) { Evas_Object_Line *o; Evas_Coord min_x, max_x, min_y, max_y; int is, was = 0; MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); o = (Evas_Object_Line *)(obj->object_data); MAGIC_CHECK(o, Evas_Object_Line, MAGIC_OBJ_LINE); return; MAGIC_CHECK_END(); if ((x1 == o->cur.x1) && (y1 == o->cur.y1) && (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 (x1 < x2) { min_x = x1; max_x = x2; } else { min_x = x2; max_x = x1; } if (y1 < y2) { min_y = y1; max_y = y2; } else { min_y = y2; max_y = y1; } obj->cur.geometry.x = min_x; obj->cur.geometry.y = min_y; obj->cur.geometry.w = max_x - min_x + 2; obj->cur.geometry.h = max_y - min_y + 2; //// obj->cur.cache.geometry.validity = 0; o->cur.x1 = x1 - min_x; o->cur.y1 = y1 - min_y; o->cur.x2 = x2 - min_x; o->cur.y2 = y2 - min_y; o->changed = 1; evas_object_change(obj); evas_object_coords_recalc(obj); 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); } } evas_object_inform_call_move(obj); evas_object_inform_call_resize(obj); }
static void _line_xy_set(Eo *eo_obj, void *_pd, va_list *list) { Evas_Coord x1 = va_arg(*list, Evas_Coord); Evas_Coord y1 = va_arg(*list, Evas_Coord); Evas_Coord x2 = va_arg(*list, Evas_Coord); Evas_Coord y2 = va_arg(*list, Evas_Coord); Evas_Object_Line *o = _pd; Evas_Coord min_x, max_x, min_y, max_y; int is, was = 0; MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if ((x1 == o->cur.x1) && (y1 == o->cur.y1) && (x2 == o->cur.x2) && (y2 == o->cur.y2)) return; Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); if (!(obj->layer->evas->is_frozen)) { if (!evas_event_passes_through(eo_obj, obj) && !evas_event_freezes_through(eo_obj, obj) && !evas_object_is_source_invisible(eo_obj, obj)) was = evas_object_is_in_output_rect(eo_obj, obj, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, 1, 1); } if (x1 < x2) { min_x = x1; max_x = x2; } else { min_x = x2; max_x = x1; } if (y1 < y2) { min_y = y1; max_y = y2; } else { min_y = y2; max_y = y1; } obj->cur.geometry.x = min_x; obj->cur.geometry.y = min_y; obj->cur.geometry.w = max_x - min_x + 2; obj->cur.geometry.h = max_y - min_y + 2; //// obj->cur.cache.geometry.validity = 0; o->cur.x1 = x1 - min_x; o->cur.y1 = y1 - min_y; o->cur.x2 = x2 - min_x; o->cur.y2 = y2 - min_y; o->changed = EINA_TRUE; evas_object_change(eo_obj, obj); evas_object_coords_recalc(eo_obj, obj); evas_object_clip_dirty(eo_obj, obj); if (!(obj->layer->evas->is_frozen)) { is = evas_object_is_in_output_rect(eo_obj, obj, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, 1, 1); if (!evas_event_passes_through(eo_obj, obj) && !evas_event_freezes_through(eo_obj, obj) && !evas_object_is_source_invisible(eo_obj, obj)) { if ((is ^ was) && obj->cur.visible) evas_event_feed_mouse_move(obj->layer->evas->evas, obj->layer->evas->pointer.x, obj->layer->evas->pointer.y, obj->layer->evas->last_timestamp, NULL); } } evas_object_inform_call_move(eo_obj, obj); evas_object_inform_call_resize(eo_obj); }