evas - supplemented more cases for object_freeze_events completion.
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 31 Oct 2011 14:50:00 +0000 (14:50 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 31 Oct 2011 14:50:00 +0000 (14:50 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@64564 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_events.c
src/lib/canvas/evas_object_line.c
src/lib/canvas/evas_object_main.c
src/lib/canvas/evas_object_polygon.c
src/lib/canvas/evas_object_text.c
src/lib/canvas/evas_stack.c

index a8fa6dc..1243d67 100644 (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))))
index c7f9dce..b09a6e2 100644 (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);
index a9d27f1..34de412 100644 (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)))
index f0de112..cbc1802 100644 (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,
index e55fef2..6c30fcc 100644 (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);
 }
index dbbd1e9..8ab6e80 100644 (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)
                {