I attached improved version of flip patch

Thanks

On Thu, Mar 1, 2012 at 10:52 PM, Hyoyoung Chang <hyoyo...@gmail.com> wrote:
> First of all, thanks for detailed review
>
> On Thu, Mar 1, 2012 at 3:01 PM, Daniel Juyung Seo <seojuyu...@gmail.com> 
> wrote:
>> Thanks Hyoyoung, overall it looks good :)
>> I have some comments.
>>
>> 1. diff option
>> Create a diff with -x -up optoin.
>> It shows c function name for each  changes.
>> This makes review so much easier and faster.
>> $ svn diff -x -up *.c
>>
>> 2. remove default properties from edc.
>> - mouse_events: 1
>> - rel1.relative: 0 0
>> - rel2.relative: 1 1
>>
>> 3. use elm_win_util_standard_add
>> elm_win_add + elm_bg_add is ok but I encourage you to use
>> elm_win_util_standard_add in normal cases.
>> It does elm_win_add + elm_bg_add and reduces 6 lines of code.
> I didn't know it. I'll apply
>>
>> 4. formatting
>> There are some wrong formatted codes.
> In or edc?
>>
>> 5. build warnings
>> test_genlist.c: In function ‘_flip_icon_clicked_cb’:
>> test_genlist.c:2495:82: warning: unused parameter ‘event_info’
>> test_genlist.c: In function ‘gl16_content_get’:
>> test_genlist.c:2516:17: warning: unused variable ‘ic’
>> test_genlist.c: In function ‘test_genlist16’:
>> test_genlist.c:2553:39: warning: unused variable ‘bt’
>> test_genlist.c:2553:33: warning: unused variable ‘bx2’
>
> Yeah, It should be removed
>>
>> 6. In _flip_icon_clicked_cb, you can just do:
>> tit->checked = !tit->checked
>> However, I would recommend to use elm_genlist_item_flip_get() instead
>> of remembering tit->checked.
>> This covers more API usage and it's useful example.
>> And without checked, you don't even need to use tit array, you can
>> just pass "(void *)(long) i" as an item data.
>> If you don't prefer to use that casting trick, you can just use tit
>> but without checked member.
> U're right :)
>>
>> 7. const to getters.
>> Yes, add "const" to getters.
>> EAPI Eina_Bool elm_genlist_item_flip_get(const Elm_Object_Item *it);
> Yeah i'll add it
>>
>> 8. in elm_genlist_item_flip_set
>> Instead of
>> _it->flipped = EINA_TRUE / EINA_FALSE;
>> You can do
>> _it->flipped = flip;
>>
>> 9. floating item bug
>> a. flip many items
>> b. scroll
>> Then I can see floating items bug. I attached screenshot.
>>
>> This also happens easily in this case:
>> a. flip many items
>> b. drag flipped item and scroll it out of viewport.
>>
>> 10. if statement in elm_genlist_item_flip_set
>> You already checked if _it->flipped equals to flip,
>> so you do not need to check _it->flipped again.
>>
>> if (_it->flipped == flip) return; <---- you already checked it
>> if (flip)
>> else
>>  {
>>     if (_it->flipped) <---- do not need to check this
>>     else
>>  }
> First checking is to verify changed.
> Second checking is about previous status.
> So It leaves at it is.
> I don't think it's good or clean code either.
> But checking is right. Maybe it should be re-written to make clean code.
>>
>> These are just trivial comments.
>> Please apply them.
>> Otherwise, this patch looks good :)
>> Thanks.
> you're always passionate.
> Thanks very much for detail review.
>
>>
>> Daniel Juyung Seo (SeoZ)
>>
>> On Wed, Feb 29, 2012 at 9:17 PM, Hyoyoung Chang <hyoyo...@gmail.com> wrote:
>>> Dear all.
>>>
>>> I made a patch to introduce new genlist item mode.
>>> Two public apis are added.
>>> +EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool flip);
>>> +EAPI Eina_Bool elm_genlist_item_flip_get(Elm_Object_Item *it);
>>>
>>> It provides on-the-flying item change. It works like that a new item
>>> added on existed item.
>>> In elementary test, you can test it.
>>> It's useful at adding widgets or show buttons in genlist item.
>>>
>>> Thanks.
>>>
>>> ------------------------------------------------------------------------------
>>> Virtualization & Cloud Management Using Capacity Planning
>>> Cloud computing makes use of virtualization - but cloud computing
>>> also focuses on allowing computing to be delivered as a service.
>>> http://www.accelacomm.com/jaw/sfnl/114/51521223/
>>> _______________________________________________
>>> enlightenment-devel mailing list
>>> enlightenment-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>>
>>
>> ------------------------------------------------------------------------------
>> Virtualization & Cloud Management Using Capacity Planning
>> Cloud computing makes use of virtualization - but cloud computing
>> also focuses on allowing computing to be delivered as a service.
>> http://www.accelacomm.com/jaw/sfnl/114/51521223/
>> _______________________________________________
>> enlightenment-devel mailing list
>> enlightenment-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
Index: elementary/src/lib/elm_genlist.c
===================================================================
--- elementary/src/lib/elm_genlist.c    (리비전 68609)
+++ elementary/src/lib/elm_genlist.c    (작업 사본)
@@ -898,7 +898,7 @@ _mouse_move(void        *data,
         if (!it->wd->on_hold)
           {
              it->wd->on_hold = EINA_TRUE;
-             if (!it->wd->wasselected)
+             if ((!it->wd->wasselected) && (!it->flipped))
                {
                   _item_unhighlight(it);
                   _item_unselect(it);
@@ -985,7 +985,7 @@ _mouse_move(void        *data,
              ecore_timer_del(it->long_timer);
              it->long_timer = NULL;
           }
-        if (!it->wd->wasselected)
+        if ((!it->wd->wasselected) && (!it->flipped))
           {
              _item_unhighlight(it);
              _item_unselect(it);
@@ -1369,7 +1369,7 @@ _mouse_up(void        *data,
    if (it->wd->longpressed)
      {
         it->wd->longpressed = EINA_FALSE;
-        if (!it->wd->wasselected)
+        if ((!it->wd->wasselected) && (!it->flipped))
           {
              _item_unhighlight(it);
              _item_unselect(it);
@@ -1627,7 +1627,7 @@ _item_cache_find(Elm_Gen_Item *it)
         if ((itc->tree == tree) &&
             (itc->compress == it->wd->compress) &&
             (((!it->itc->item_style) && (!itc->item_style)) ||
-             (it->itc->item_style && itc->item_style && 
+             (it->itc->item_style && itc->item_style &&
             (!strcmp(it->itc->item_style, itc->item_style)))))
           {
              it->wd->item_cache = eina_inlist_remove(it->wd->item_cache,
@@ -1893,6 +1893,39 @@ _item_state_realize(Elm_Gen_Item *it,
      }
 }
 
+static Eina_List *
+_item_flips_realize(Elm_Gen_Item *it,
+                    Evas_Object *target,
+                    Eina_List **source)
+{
+   Eina_List *res = NULL;
+
+   if (it->itc->func.content_get)
+     {
+        const Eina_List *l;
+        const char *key;
+        Evas_Object *ic = NULL;
+
+        *source = elm_widget_stringlist_get(edje_object_data_get(target, 
"flips"));
+
+        EINA_LIST_FOREACH(*source, l, key)
+          {
+             if (it->itc->func.content_get)
+               ic = it->itc->func.content_get
+                  ((void *)it->base.data, WIDGET(it), key);
+             if (ic)
+               {
+                  res = eina_list_append(res, ic);
+                  edje_object_part_swallow(target, key, ic);
+                  evas_object_show(ic);
+                  elm_widget_sub_object_add(WIDGET(it), ic);
+               }
+          }
+     }
+
+   return res;
+}
+
 static void
 _item_realize(Elm_Gen_Item *it,
               int               in,
@@ -1920,7 +1953,7 @@ _item_realize(Elm_Gen_Item *it,
      }
    it->item->order_num_in = in;
 
-   if (it->item->nocache)
+   if ((it->item->nocache) && (!it->flipped))
      it->item->nocache = EINA_FALSE;
    else
      itc = _item_cache_find(it);
@@ -2034,6 +2067,12 @@ _item_realize(Elm_Gen_Item *it,
         it->content_objs = _item_content_realize(it, VIEW(it), &it->contents, 
NULL);
         _item_state_realize(it, VIEW(it), &it->states, NULL);
 
+        if (it->flipped)
+          {
+             edje_object_signal_emit(VIEW(it), "elm,state,flip,enabled", 
"elm");
+             it->content_objs = _item_flips_realize(it, VIEW(it), 
&it->contents);
+          }
+
         if (!it->item->mincalcd)
           {
              Evas_Coord mw = -1, mh = -1;
@@ -2394,7 +2433,7 @@ _item_block_position(Item_Block *itb,
                     }
                   else
                     {
-                       if (!it->dragging) _elm_genlist_item_unrealize(it, 
EINA_FALSE);
+                       if ((!it->dragging) || it->flipped) 
_elm_genlist_item_unrealize(it, EINA_FALSE);
                     }
                }
              in++;
@@ -3255,6 +3294,7 @@ _edit_mode_item_realize(Elm_Gen_Item *it, Eina_Boo
                                   _multi_move, it);
 
    _item_text_realize(it, it->edit_obj, &it->item->edit_texts, NULL);
+   if (it->flipped)  edje_object_signal_emit(it->edit_obj, 
"elm,state,flip,enabled", "elm");
    it->item->edit_content_objs =
      _item_content_realize(it, it->edit_obj, &it->item->edit_contents, NULL);
    _item_state_realize(it, it->edit_obj, &it->item->edit_states, NULL);
@@ -3288,7 +3328,7 @@ _edit_mode_item_unrealize(Elm_Gen_Item *it)
    elm_widget_stringlist_free(it->item->edit_states);
    it->item->edit_states = NULL;
    EINA_LIST_FREE(it->item->edit_content_objs, icon)
-      evas_object_del(icon);
+     evas_object_del(icon);
    edje_object_message_signal_process(it->edit_obj);
 
    evas_object_event_callback_del_full(it->edit_obj, EVAS_CALLBACK_MOUSE_DOWN,
@@ -5651,6 +5691,43 @@ elm_genlist_item_class_unref(Elm_Genlist_Item_Clas
      elm_genlist_item_class_free(itc);
 }
 
+EAPI void
+elm_genlist_item_flip_set(Elm_Object_Item *it,
+                          Eina_Bool flip)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+
+   flip = !!flip;
+   if (_it->flipped == flip) return;
+
+   if (flip)
+     {
+        _elm_genlist_item_unrealize(_it, EINA_FALSE);
+        if (_it->selected) _item_unselect(_it);
+
+        _it->flipped = flip;
+        _it->item->nocache = 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);
+     }
+   else
+     {
+        _it->flipped = flip;
+        _it->item->nocache = EINA_TRUE;
+        _item_cache_zero(_it->wd);
+        elm_genlist_item_update(it);
+     }
+}
+
+EAPI Eina_Bool
+elm_genlist_item_flip_get(const Elm_Object_Item *it)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+   Elm_Gen_Item *_it = (Elm_Gen_Item *) it;
+   return _it->flipped;
+}
+
 /* for gengrid as of now */
 void
 _elm_genlist_page_relative_set(Evas_Object *obj,
Index: elementary/src/lib/elm_genlist.h
===================================================================
--- elementary/src/lib/elm_genlist.h    (리비전 68609)
+++ elementary/src/lib/elm_genlist.h    (작업 사본)
@@ -1943,5 +1943,38 @@ EAPI void               elm_genlist_edit_mode_set(
 EAPI Eina_Bool          elm_genlist_edit_mode_get(const Evas_Object *obj);
 
 /**
+ * Set the flip state of given genlist item.
+ *
+ * @param it The genlist item object
+ * @param flip The flip mode
+ * (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * This function sets the flip state of given genlist item.
+ * Flip mode overrides current item object.
+ * It can be used for on-the-flying item replace.
+ *
+ * @see elm_genlist_item_flip_get()
+ *
+ * @ingroup Genlist
+ */
+
+EAPI void elm_genlist_item_flip_set(Elm_Object_Item *it, Eina_Bool flip);
+
+/**
+ * Get the flip state of given genlist item.
+ *
+ * @param it The genlist item object
+ *
+ * This function returns the flip state of given genlist item.
+ * If parameter is invalid, returns EINA_FALSE.
+ *
+ * @see elm_genlist_item_flip_set()
+ *
+ * @ingroup Genlist
+ */
+
+EAPI Eina_Bool elm_genlist_item_flip_get(const Elm_Object_Item *it);
+
+/**
  * @}
  */
Index: elementary/src/lib/elm_gen_common.h
===================================================================
--- elementary/src/lib/elm_gen_common.h (리비전 68609)
+++ elementary/src/lib/elm_gen_common.h (작업 사본)
@@ -71,6 +71,7 @@ struct Elm_Gen_Item
    Eina_Bool                 group : 1;
    Eina_Bool                 reorder : 1;
    Eina_Bool                 mode_set : 1; /* item uses style mode for 
highlight/select */
+   Eina_Bool                 flipped : 1;
 };
 
 typedef struct _Pan Pan;
Index: elementary/src/bin/test.c
===================================================================
--- elementary/src/bin/test.c   (리비전 68609)
+++ elementary/src/bin/test.c   (작업 사본)
@@ -85,6 +85,7 @@ void test_genlist12(void *data, Evas_Object *obj,
 void test_genlist13(void *data, Evas_Object *obj, void *event_info);
 void test_genlist14(void *data, Evas_Object *obj, void *event_info);
 void test_genlist15(void *data, Evas_Object *obj, void *event_info);
+void test_genlist16(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer2(void *data, Evas_Object *obj, void *event_info);
 void test_gesture_layer3(void *data, Evas_Object *obj, void *event_info);
@@ -427,6 +428,7 @@ add_tests:
    ADD_TEST(NULL, "Lists", "Genlist Tree, Insert Sorted", test_genlist13);
    ADD_TEST(NULL, "Lists", "Genlist Tree, Insert Relative", test_genlist14);
    ADD_TEST(NULL, "Lists", "Genlist Edit Mode", test_genlist15);
+   ADD_TEST(NULL, "Lists", "Genlist Flip Mode", test_genlist16);
    ADD_TEST(NULL, "Lists", "GenGrid", test_gengrid);
    ADD_TEST(NULL, "Lists", "GenGrid 2", test_gengrid2);
    ADD_TEST(NULL, "Lists", "GenGrid Group", test_gengrid3);
Index: elementary/src/bin/test_genlist.c
===================================================================
--- elementary/src/bin/test_genlist.c   (리비전 68609)
+++ elementary/src/bin/test_genlist.c   (작업 사본)
@@ -2491,4 +2491,114 @@ test_genlist15(void *data __UNUSED__, Evas_Object
    evas_object_resize(win, 520, 520);
    evas_object_show(win);
 }
+
+static void _flip_icon_clicked_cb(void *data, Evas_Object *obj __UNUSED__, 
void *event_info __UNUSED__)
+{
+   const Testitem *tit = data;
+
+   if (elm_genlist_item_flip_get(tit->item))
+     elm_genlist_item_flip_set(tit->item, EINA_FALSE);
+   else
+     elm_genlist_item_flip_set(tit->item, EINA_TRUE);
+}
+
+char *gl16_text_get(void *data, Evas_Object *obj __UNUSED__, const char *part 
__UNUSED__)
+{
+   const Testitem *tit = data;
+   char buf[256];
+   snprintf(buf, sizeof(buf), "Item #%i", tit->mode);
+   return strdup(buf);
+}
+
+Evas_Object *gl16_content_get(void *data, Evas_Object *obj, const char *part)
+{
+   Testitem *tit = data;
+   char buf[PATH_MAX];
+
+   if (!strcmp(part, "elm.text.flip"))
+     {
+        Evas_Object *btn = elm_button_add(obj);
+        elm_object_text_set(btn, "flipped content placement");
+        evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+        evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
+        evas_object_smart_callback_add(btn, "clicked", _flip_icon_clicked_cb, 
(void *)tit);
+        evas_object_show(btn);
+        return btn;
+     }
+   else if (!strcmp(part, "elm.edit.icon.1"))
+     {
+        Evas_Object *icn = elm_icon_add(obj);
+        snprintf(buf, sizeof(buf), "%s/images/icon_04.png", PACKAGE_DATA_DIR);
+        elm_icon_file_set(icn, buf, NULL);
+        evas_object_propagate_events_set(icn, EINA_FALSE);
+        evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 
1);
+        return icn;
+     }
+   else if (!strcmp(part, "elm.edit.icon.2"))
+     {
+        Evas_Object *icn = elm_icon_add(obj);
+        snprintf(buf, sizeof(buf), "%s/images/icon_09.png", PACKAGE_DATA_DIR);
+        elm_icon_file_set(icn, buf, NULL);
+        evas_object_propagate_events_set(icn, EINA_FALSE);
+        evas_object_size_hint_aspect_set(icn, EVAS_ASPECT_CONTROL_VERTICAL, 1, 
1);
+        evas_object_smart_callback_add(icn, "clicked", _flip_icon_clicked_cb, 
(void *)tit);
+        return icn;
+     }
+   else return NULL;
+}
+
+void
+test_genlist16(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void 
*event_info __UNUSED__)
+{
+   Evas_Object *win, *bg, *bx, *gl;
+   int i;
+   static Testitem tit[100];
+
+   win = elm_win_add(NULL, "genlist16", ELM_WIN_BASIC);
+   elm_win_title_set(win, "Genlist Flip Mode");
+   elm_win_autodel_set(win, EINA_TRUE);
+
+   bg = elm_bg_add(win);
+   elm_win_resize_object_add(win, bg);
+   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_show(bg);
+
+   bx = elm_box_add(win);
+   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(win, bx);
+   evas_object_show(bx);
+
+   gl = elm_genlist_add(win);
+   evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_show(gl);
+
+   elm_genlist_edit_mode_set(gl, EINA_TRUE);
+   elm_genlist_always_select_mode_set(gl, EINA_TRUE);
+
+   itc15 = elm_genlist_item_class_new();
+   itc15->item_style     = "default";
+   itc15->func.text_get = gl16_text_get;
+   itc15->func.content_get = gl16_content_get;
+   itc15->func.state_get = gl_state_get;
+   itc15->func.del       = NULL;
+   itc15->edit_item_style = "edit";
+
+   for (i = 0; i < 100; i++)
+     {
+        tit[i].mode = i;
+        tit[i].item = elm_genlist_item_append(gl, itc15,
+                                              &(tit[i])/* item data */,
+                                              NULL/* parent */,
+                                              ELM_GENLIST_ITEM_NONE/* flags */,
+                                              gl_sel/* func */,
+                                              (void *)(long)&(tit[i])/* func 
data */);
+     }
+   elm_genlist_item_class_free(itc15);
+   elm_box_pack_end(bx, gl);
+   evas_object_show(bx);
+
+   evas_object_resize(win, 520, 520);
+   evas_object_show(win);
+}
 #endif
Index: elementary/data/themes/widgets/genlist.edc
===================================================================
--- elementary/data/themes/widgets/genlist.edc  (리비전 68609)
+++ elementary/data/themes/widgets/genlist.edc  (작업 사본)
@@ -3,6 +3,7 @@ group { name: "elm/genlist/item/default/default";
    data.item: "texts" "elm.text";
    data.item: "contents" "elm.swallow.icon elm.swallow.end";
    data.item: "treesize" "20";
+   data.item: "flips" "elm.text.flip";
    //      data.item: "states" "";
    images {
       image: "bt_sm_base1.png" COMP;
@@ -165,6 +166,10 @@ group { name: "elm/genlist/item/default/default";
                offset:   -1   -5;
             }
          }
+         description { state: "flip_enabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
       }
       part { name: "elm.swallow.end";
          clip_to: "disclip";
@@ -183,6 +188,10 @@ group { name: "elm/genlist/item/default/default";
                offset:   -5   -5;
             }
          }
+         description { state: "flip_enabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
       }
       part { name: "elm.text";
          clip_to: "disclip";
@@ -219,7 +228,29 @@ group { name: "elm/genlist/item/default/default";
             color: 224 224 224 255;
             color3: 0 0 0 64;
          }
+         description { state: "flip_enabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
       }
+      part { name: "elm.text.flip";
+         clip_to: "disclip";
+         type: SWALLOW;
+         scale: 1;
+         description { state: "default" 0.0;
+            visible: 0;
+            rel1 {
+               to_y: "elm.text";
+            }
+            rel2 {
+               to_y: "elm.text";
+            }
+         }
+         description { state: "flip_enabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 1;
+         }
+      }
       part { name: "fg1";
          clip_to: "disclip";
          mouse_events: 0;
@@ -363,6 +394,24 @@ group { name: "elm/genlist/item/default/default";
          target:  "reorder_bg";
          transition: DECELERATE 0.5;
       }
+      program { name: "flip_enabled";
+         signal: "elm,state,flip,enabled";
+         source: "elm";
+         action: STATE_SET "flip_enabled" 0.0;
+         target: "elm.text";
+         target: "elm.text.flip";
+         target: "elm.swallow.icon";
+         target: "elm.swallow.end";
+      }
+      program { name: "flip_disabled";
+         signal: "elm,state,flip,disabled";
+         source: "elm";
+         action: STATE_SET "default" 0.0;
+         target: "elm.text";
+         target: "elm.text.flip";
+         target: "elm.swallow.icon";
+         target: "elm.swallow.end";
+      }
    }
 }
 group { name: "elm/genlist/item/group_index/default";
@@ -9302,6 +9351,10 @@ group { name: "elm/genlist/item/edit/default";
             inherit: "default" 0.0;
             align: 0.0 0.5;
          }
+         description { state: "disabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
       }
       part { name: "elm.padding.icon1.right";
          type: RECT;
@@ -9333,6 +9386,16 @@ group { name: "elm/genlist/item/edit/default";
                to_x: "elm.padding.icon2.left";
             }
          }
+         description { state: "flipped" 0.0;
+            inherit: "default" 0.0;
+            rel1 {
+               to_x: "elm.padding.left";
+            }
+            rel2 {
+               relative: 1.3 1.0;
+               to_x: "elm.padding.right";
+            }
+         }
       }
       part { name: "elm.padding.icon2.left";
          type: RECT;
@@ -9374,6 +9437,10 @@ group { name: "elm/genlist/item/edit/default";
             inherit: "default" 0.0;
             align: 1.0 0.5;
          }
+         description { state: "disabled" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
       }
       part { name: "disclip";
          type: RECT;
@@ -9473,5 +9540,30 @@ group { name: "elm/genlist/item/edit/default";
          target: "elm.edit.icon.1";
          target: "elm.edit.icon.2";
       }
+      program {
+         name:    "enable_flip_mode";
+         signal:  "elm,state,flip,enabled";
+         source:  "elm";
+         action:  STATE_SET "disabled" 0.0;
+         target:  "elm.edit.icon.1";
+         target:  "elm.edit.icon.2";
+         after:   "enable_flip_mode_next";
+      }
+      program {
+         name:    "enable_flip_mode_next";
+         action:  STATE_SET "flipped" 0.0;
+         transition: DECELERATE 0.5;
+         target:  "elm.swallow.edit.content";
+      }
+      program {
+         name:    "disable_flip_mode";
+         signal:  "elm,state,flip,disabled";
+         source:  "elm";
+         action:  STATE_SET "default" 0.0;
+         transition: DECELERATE 0.5;
+         target:  "elm.swallow.edit.content";
+         target:  "elm.edit.icon.1";
+         target:  "elm.edit.icon.2";
+      }
    }
 }
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to