elementary/pager - prevent to push a existed content. if existed content could be...
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 4 Jun 2011 08:08:48 +0000 (08:08 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 4 Jun 2011 08:08:48 +0000 (08:08 +0000)
git-svn-id: https://svn.enlightenment.org/svn/e/trunk/elementary@59954 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elm_pager.c

index 96bec5c..e7cdd7a 100644 (file)
@@ -49,6 +49,7 @@ static void _theme_hook(Evas_Object *obj);
 static void _sizing_eval(Evas_Object *obj);
 static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _sub_del(void *data, Evas_Object *obj, void *event_info);
+static Item *_item_get(Evas_Object *obj, Evas_Object *content);
 
 static const char SIG_HIDE_FINISHED[] = "hide,finished";
 
@@ -96,6 +97,23 @@ _theme_hook(Evas_Object *obj)
    _sizing_eval(obj);
 }
 
+static Item *
+_item_get(Evas_Object *obj, Evas_Object *content)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Item *it;
+   Eina_List *l;
+   if (!wd) return;
+
+   EINA_LIST_FOREACH(wd->stack, l, it)
+     {
+        if (it->content == content)
+          return it;
+     }
+
+   return NULL;
+}
+
 static Eina_Bool
 _elm_pager_focus_next_hook(const Evas_Object *obj, Elm_Focus_Direction dir, Evas_Object **next)
 {
@@ -311,6 +329,7 @@ elm_pager_add(Evas_Object *parent)
  * @param content The object to push
  *
  * @ingroup Pager
+ * @warning It will be failed if the content exists on the stack already. 
  */
 EAPI void
 elm_pager_content_push(Evas_Object *obj, Evas_Object *content)
@@ -320,6 +339,9 @@ elm_pager_content_push(Evas_Object *obj, Evas_Object *content)
    Item *it = ELM_NEW(Item);
    Evas_Coord x, y, w, h;
    if (!wd) return;
+
+   if (_item_get(obj, content)) return;
+
    if (!it) return;
    it->obj = obj;
    it->content = content;