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