Elementary genlist: Do not call "realized"/"unrealized" smart
authorseoz <seoz@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 14 Apr 2011 11:41:07 +0000 (11:41 +0000)
committerseoz <seoz@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 14 Apr 2011 11:41:07 +0000 (11:41 +0000)
callbacks if those are internal size calculation purpose.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@58660 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elm_genlist.c

index 7a9bb91..96d19cc 100644 (file)
@@ -430,7 +430,7 @@ static void      _theme_hook(Evas_Object *obj);
 static void      _show_region_hook(void        *data,
                                    Evas_Object *obj);
 static void      _sizing_eval(Evas_Object *obj);
-static void      _item_unrealize(Elm_Genlist_Item *it);
+static void      _item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc);
 static void      _item_block_unrealize(Item_Block *itb);
 static void      _calc_job(void *data);
 static void      _on_focus_hook(void        *data,
@@ -916,7 +916,7 @@ _item_del(Elm_Genlist_Item *it)
    it->wd->walking -= it->walking;
    if (it->wd->show_item == it) it->wd->show_item = NULL;
    if (it->selected) it->wd->selected = eina_list_remove(it->wd->selected, it);
-   if (it->realized) _item_unrealize(it);
+   if (it->realized) _item_unrealize(it, EINA_FALSE);
    if (it->block) _item_block_del(it);
    if ((!it->delete_me) && (it->itc->func.del))
      it->itc->func.del((void *)it->base.data, it->base.widget);
@@ -1410,7 +1410,7 @@ _mouse_up(void        *data,
      {
         if (it->want_unrealize)
           {
-             _item_unrealize(it);
+             _item_unrealize(it, EINA_FALSE);
              if (it->block->want_unrealize)
                _item_block_unrealize(it->block);
           }
@@ -1878,16 +1878,16 @@ _item_realize(Elm_Genlist_Item *it,
    it->want_unrealize = EINA_FALSE;
 
    if (itc) _item_cache_free(itc);
-   evas_object_smart_callback_call(it->base.widget, "realized", it);
+   if (!calc) evas_object_smart_callback_call(it->base.widget, "realized", it);
 }
 
 static void
-_item_unrealize(Elm_Genlist_Item *it)
+_item_unrealize(Elm_Genlist_Item *it, Eina_Bool calc)
 {
    Evas_Object *icon;
 
    if (!it->realized) return;
-   evas_object_smart_callback_call(it->base.widget, "unrealized", it);
+   if (!calc) evas_object_smart_callback_call(it->base.widget, "unrealized", it);
    if (it->long_timer)
      {
         ecore_timer_del(it->long_timer);
@@ -1944,13 +1944,13 @@ _item_block_recalc(Item_Block *itb,
                   if (changed)
                     {
                        _item_realize(it, in, EINA_TRUE);
-                       _item_unrealize(it);
+                       _item_unrealize(it, EINA_TRUE);
                     }
                }
              else
                {
                   _item_realize(it, in, EINA_TRUE);
-                  _item_unrealize(it);
+                  _item_unrealize(it, EINA_TRUE);
                }
           }
         else
@@ -2007,7 +2007,7 @@ _item_block_unrealize(Item_Block *itb)
                   it->want_unrealize = EINA_TRUE;
                }
              else
-               _item_unrealize(it);
+               _item_unrealize(it, EINA_FALSE);
           }
      }
    if (!dragging)
@@ -2069,7 +2069,7 @@ _item_block_position(Item_Block *itb,
                     }
                   else
                     {
-                       if (!it->dragging) _item_unrealize(it);
+                       if (!it->dragging) _item_unrealize(it, EINA_FALSE);
                     }
                }
              in++;
@@ -2103,7 +2103,7 @@ _group_items_recalc(void *data)
         else if (!git->want_realize && git->realized)
           {
              if (!git->dragging)
-               _item_unrealize(git);
+               _item_unrealize(git, EINA_FALSE);
           }
      }
 }
@@ -2282,14 +2282,14 @@ _update_job(void *data)
                   it->updateme = EINA_FALSE;
                   if (it->realized)
                     {
-                       _item_unrealize(it);
+                       _item_unrealize(it, EINA_FALSE);
                        _item_realize(it, num, EINA_FALSE);
                        position = 1;
                     }
                   else
                     {
                        _item_realize(it, num, EINA_TRUE);
-                       _item_unrealize(it);
+                       _item_unrealize(it, EINA_TRUE);
                     }
                   if ((it->minw != itminw) || (it->minh != itminh))
                     recalc = 1;
@@ -3179,7 +3179,7 @@ elm_genlist_clear(Evas_Object *obj)
         if (it->flags & ELM_GENLIST_ITEM_GROUP)
           it->wd->group_items = eina_list_remove(it->wd->group_items, it);
         elm_widget_item_pre_notify_del(it);
-        if (it->realized) _item_unrealize(it);
+        if (it->realized) _item_unrealize(it, EINA_FALSE);
         if (((wd->clear_me) || (!it->delete_me)) && (it->itc->func.del))
           it->itc->func.del((void *)it->base.data, it->base.widget);
         if (it->long_timer) ecore_timer_del(it->long_timer);
@@ -4041,7 +4041,7 @@ elm_genlist_item_del(Elm_Genlist_Item *it)
                                               it);
         if (it->block)
           {
-             if (it->realized) _item_unrealize(it);
+             if (it->realized) _item_unrealize(it, EINA_FALSE);
              it->block->changed = EINA_TRUE;
              if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
              it->wd->calc_job = ecore_job_add(_calc_job, it->wd);