forked from enlightenment/efl
From: Seunggyun Kim <sgyun.kim@samsung.com>
Subject: [E-devel] [Patch] Group index support I added group index feature. This feature support to show item indicates group index. I attached capture images showing group index. As you can see attached png images, Group index item includes same group items. The group index is shown until every items that have same group index are scrolled. so group index realize/unrealize is not excuteded in _item_block_position function. instead of the function, group index is controlled in _pan_calculate function. "Genlist Group" and "Genlist Group Tree" menu is added in elementary_test. you can test group index operations in elementary_test. This patch is not support elm_genlist_item_insert_before/after operation of group index. We are now considering the operations in group index., This patch assumes that the previous 2 patches are already applied to upstream. '[E-devel] [Patch] Tree support for elm_genlist_item_prepend() API.' '[E-devel] [Patch] Tree support for elm_genlist_item_insert_before/after() APIs', So this patch does not include the changes of the previous patch. I separated this patch. - 004.elm_genlist.c.patch.txt Patch for src/lib/elm_genlist.c - 005.test_genlist.c.patch.txt Patch for src/bin/test_genlist.c - 006.genlist.patch.txt Patch for data/theme/default.edc And you have to add attached group_index.png file into 'data/themes' 'group_index.png' file is group index background image. Daniel Juyung Seo help make test code and refactoring group index code. SVN revision: 55925
This commit is contained in:
parent
f00ecc9242
commit
73b7fe6228
|
@ -216,7 +216,8 @@ icon_arrow_down_left.png \
|
||||||
icon_arrow_down_right.png \
|
icon_arrow_down_right.png \
|
||||||
icon_arrow_up_left.png \
|
icon_arrow_up_left.png \
|
||||||
icon_arrow_up_right.png \
|
icon_arrow_up_right.png \
|
||||||
thumb_shadow.png
|
thumb_shadow.png \
|
||||||
|
group_index.png
|
||||||
|
|
||||||
default.edj: Makefile $(EXTRA_DIST)
|
default.edj: Makefile $(EXTRA_DIST)
|
||||||
$(EDJE_CC) $(EDJE_FLAGS) \
|
$(EDJE_CC) $(EDJE_FLAGS) \
|
||||||
|
|
|
@ -16521,6 +16521,282 @@ collections {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
group { name: "elm/genlist/item/group_index/default";
|
||||||
|
alias: "elm/genlist/item_odd/group_index/default";
|
||||||
|
data.item: "stacking" "above";
|
||||||
|
data.item: "selectraise" "on";
|
||||||
|
data.item: "labels" "elm.text";
|
||||||
|
data.item: "icons" "elm.swallow.icon elm.swallow.end";
|
||||||
|
data.item: "treesize" "20";
|
||||||
|
// data.item: "states" "";
|
||||||
|
images {
|
||||||
|
image: "bt_sm_base1.png" COMP;
|
||||||
|
image: "bt_sm_shine.png" COMP;
|
||||||
|
image: "bt_sm_hilight.png" COMP;
|
||||||
|
image: "ilist_item_shadow.png" COMP;
|
||||||
|
image: "group_index.png" COMP;
|
||||||
|
}
|
||||||
|
parts {
|
||||||
|
part {
|
||||||
|
name: "event";
|
||||||
|
type: RECT;
|
||||||
|
repeat_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
color: 0 0 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base_sh";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
align: 0.0 0.0;
|
||||||
|
min: 0 10;
|
||||||
|
fixed: 1 1;
|
||||||
|
rel1 {
|
||||||
|
to: "base";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 0 0;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to: "base";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -1 0;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "ilist_item_shadow.png";
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part {
|
||||||
|
name: "base";
|
||||||
|
mouse_events: 0;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
image {
|
||||||
|
normal: "group_index.png";
|
||||||
|
border: 2 2 2 2;
|
||||||
|
}
|
||||||
|
fill.smooth: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "bg";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_base1.png";
|
||||||
|
border: 6 6 6 6;
|
||||||
|
}
|
||||||
|
image.middle: SOLID;
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: -2 -2;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: 1 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.pad";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
relative: 0.0 0.0;
|
||||||
|
offset: 4 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: 4 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.icon";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.pad";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -1 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.pad";
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -1 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.swallow.end";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: SWALLOW;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
fixed: 1 0;
|
||||||
|
align: 1.0 0.5;
|
||||||
|
aspect: 1.0 1.0;
|
||||||
|
aspect_preference: VERTICAL;
|
||||||
|
rel1 {
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: -5 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
relative: 1.0 1.0;
|
||||||
|
offset: -5 -5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "elm.text";
|
||||||
|
clip_to: "disclip";
|
||||||
|
type: TEXT;
|
||||||
|
effect: SOFT_SHADOW;
|
||||||
|
mouse_events: 0;
|
||||||
|
scale: 1;
|
||||||
|
description {
|
||||||
|
state: "default" 0.0;
|
||||||
|
// min: 16 16;
|
||||||
|
rel1 {
|
||||||
|
to_x: "elm.swallow.icon";
|
||||||
|
relative: 1.0 0.0;
|
||||||
|
offset: 0 4;
|
||||||
|
}
|
||||||
|
rel2 {
|
||||||
|
to_x: "elm.swallow.end";
|
||||||
|
relative: 0.0 1.0;
|
||||||
|
offset: -1 -5;
|
||||||
|
}
|
||||||
|
color: 0 0 0 255;
|
||||||
|
color3: 0 0 0 0;
|
||||||
|
text {
|
||||||
|
font: "Sans";
|
||||||
|
size: 10;
|
||||||
|
min: 1 1;
|
||||||
|
// min: 0 1;
|
||||||
|
align: 0.0 0.5;
|
||||||
|
text_class: "list_item";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 224 224 224 255;
|
||||||
|
color3: 0 0 0 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg1";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.relative: 1.0 0.5;
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_hilight.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "fg2";
|
||||||
|
clip_to: "disclip";
|
||||||
|
mouse_events: 0;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
visible: 0;
|
||||||
|
color: 255 255 255 0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
image {
|
||||||
|
normal: "bt_sm_shine.png";
|
||||||
|
border: 6 6 6 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
description { state: "selected" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
visible: 1;
|
||||||
|
color: 255 255 255 255;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
part { name: "disclip";
|
||||||
|
type: RECT;
|
||||||
|
description { state: "default" 0.0;
|
||||||
|
rel1.to: "bg";
|
||||||
|
rel2.to: "bg";
|
||||||
|
}
|
||||||
|
description { state: "disabled" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 64;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
programs {
|
||||||
|
// signal: elm,state,%s,active
|
||||||
|
// a "check" item named %s went active
|
||||||
|
// signal: elm,state,%s,passive
|
||||||
|
// a "check" item named %s went passive
|
||||||
|
// default is passive
|
||||||
|
program {
|
||||||
|
name: "go_active";
|
||||||
|
signal: "elm,state,selected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "selected" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_passive";
|
||||||
|
signal: "elm,state,unselected";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "bg";
|
||||||
|
target: "fg1";
|
||||||
|
target: "fg2";
|
||||||
|
target: "elm.text";
|
||||||
|
transition: LINEAR 0.1;
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_disabled";
|
||||||
|
signal: "elm,state,disabled";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "disabled" 0.0;
|
||||||
|
target: "disclip";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "go_enabled";
|
||||||
|
signal: "elm,state,enabled";
|
||||||
|
source: "elm";
|
||||||
|
action: STATE_SET "default" 0.0;
|
||||||
|
target: "disclip";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
group { name: "elm/genlist/item_compress/message/default";
|
group { name: "elm/genlist/item_compress/message/default";
|
||||||
data.item: "stacking" "above";
|
data.item: "stacking" "above";
|
||||||
data.item: "selectraise" "on";
|
data.item: "selectraise" "on";
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 217 B |
|
@ -65,6 +65,8 @@ void test_genlist4(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_genlist5(void *data, Evas_Object *obj, void *event_info);
|
void test_genlist5(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_genlist6(void *data, Evas_Object *obj, void *event_info);
|
void test_genlist6(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_genlist7(void *data, Evas_Object *obj, void *event_info);
|
void test_genlist7(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
void test_genlist8(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
void test_genlist9(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_table(void *data, Evas_Object *obj, void *event_info);
|
void test_table(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_gengrid(void *data, Evas_Object *obj, void *event_info);
|
void test_gengrid(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_gengrid2(void *data, Evas_Object *obj, void *event_info);
|
void test_gengrid2(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
@ -299,6 +301,8 @@ my_win_main(char *autorun)
|
||||||
ADD_TEST("Genlist 5", test_genlist5);
|
ADD_TEST("Genlist 5", test_genlist5);
|
||||||
ADD_TEST("Genlist 7", test_genlist7);
|
ADD_TEST("Genlist 7", test_genlist7);
|
||||||
ADD_TEST("Genlist Tree", test_genlist6);
|
ADD_TEST("Genlist Tree", test_genlist6);
|
||||||
|
ADD_TEST("Genlist Group", test_genlist8);
|
||||||
|
ADD_TEST("Genlist Group Tree", test_genlist9);
|
||||||
ADD_TEST("GenGrid", test_gengrid);
|
ADD_TEST("GenGrid", test_gengrid);
|
||||||
ADD_TEST("GenGrid 2", test_gengrid2);
|
ADD_TEST("GenGrid 2", test_gengrid2);
|
||||||
ADD_TEST("Checks", test_check);
|
ADD_TEST("Checks", test_check);
|
||||||
|
|
|
@ -1313,4 +1313,316 @@ test_genlist7(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
|
||||||
evas_object_resize(win, 320, 320);
|
evas_object_resize(win, 320, 320);
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************/
|
||||||
|
|
||||||
|
static Elm_Genlist_Item_Class itc_group;
|
||||||
|
char *gl8_label_get(void *data, Evas_Object *obj __UNUSED__, const char *part __UNUSED__)
|
||||||
|
{
|
||||||
|
char buf[256];
|
||||||
|
snprintf(buf, sizeof(buf), "Group Index # %i (Item # %i)", (int)((long)data / 10), (int)(long)data);
|
||||||
|
return strdup(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_bt_show_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
elm_genlist_item_top_show(data);
|
||||||
|
//elm_genlist_item_show(data);
|
||||||
|
//elm_genlist_item_middle_show(data);
|
||||||
|
}
|
||||||
|
static void
|
||||||
|
_bt_bring_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
elm_genlist_item_top_bring_in(data);
|
||||||
|
//elm_genlist_item_bring_in(data);
|
||||||
|
//elm_genlist_item_middle_bring_in(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
|
||||||
|
Elm_Genlist_Item *gli = NULL, *git = NULL;
|
||||||
|
int i, bt_count, bt_num;
|
||||||
|
|
||||||
|
win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
|
||||||
|
elm_win_title_set(win, "Genlist Group");
|
||||||
|
elm_win_autodel_set(win, 1);
|
||||||
|
|
||||||
|
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_smart_callback_add(gl, "selected", _gl_selected, NULL);
|
||||||
|
evas_object_smart_callback_add(gl, "clicked", _gl_clicked, NULL);
|
||||||
|
evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
|
||||||
|
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_box_pack_end(bx, gl);
|
||||||
|
evas_object_show(gl);
|
||||||
|
|
||||||
|
itc1.item_style = "default";
|
||||||
|
itc1.func.label_get = gl_label_get;
|
||||||
|
itc1.func.icon_get = gl_icon_get;
|
||||||
|
itc1.func.state_get = gl_state_get;
|
||||||
|
itc1.func.del = gl_del;
|
||||||
|
|
||||||
|
itc_group.item_style = "group_index";
|
||||||
|
itc_group.func.label_get = gl8_label_get;
|
||||||
|
itc_group.func.icon_get = NULL;
|
||||||
|
itc_group.func.state_get = NULL;
|
||||||
|
itc_group.func.del = gl_del;
|
||||||
|
|
||||||
|
bx2 = elm_box_add(win);
|
||||||
|
elm_box_horizontal_set(bx2, EINA_TRUE);
|
||||||
|
elm_box_homogenous_set(bx2, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
|
||||||
|
bt_num = 0;
|
||||||
|
bt[bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Show 0");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx2, bt[bt_num]);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Show 26");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx2, bt[bt_num]);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Show 101");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx2, bt[bt_num]);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Show 480");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx2, bt[bt_num]);
|
||||||
|
|
||||||
|
elm_box_pack_end(bx, bx2);
|
||||||
|
evas_object_show(bx2);
|
||||||
|
|
||||||
|
bx3 = elm_box_add(win);
|
||||||
|
elm_box_horizontal_set(bx3, EINA_TRUE);
|
||||||
|
elm_box_homogenous_set(bx3, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(bx3, EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_size_hint_align_set(bx3, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Bring top 0");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx3, bt[bt_num]);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Bring top 31");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx3, bt[bt_num]);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Bring top 239");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx3, bt[bt_num]);
|
||||||
|
|
||||||
|
bt[++bt_num] = elm_button_add(win);
|
||||||
|
elm_button_label_set(bt[bt_num], "Bring top 477");
|
||||||
|
evas_object_size_hint_align_set(bt[bt_num], EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(bt[bt_num], EVAS_HINT_EXPAND, 0.0);
|
||||||
|
evas_object_show(bt[bt_num]);
|
||||||
|
elm_box_pack_end(bx3, bt[bt_num]);
|
||||||
|
|
||||||
|
elm_box_pack_end(bx, bx3);
|
||||||
|
evas_object_show(bx3);
|
||||||
|
|
||||||
|
bt_count = 0;
|
||||||
|
for (i = 0; i < 500; i++)
|
||||||
|
{
|
||||||
|
if (!(i % 10))
|
||||||
|
{
|
||||||
|
gli = git = elm_genlist_item_append(gl, &itc_group,
|
||||||
|
(void *)(long)i/* item data */,
|
||||||
|
NULL/* parent */,
|
||||||
|
ELM_GENLIST_ITEM_GROUP,
|
||||||
|
gl_sel/* func */,
|
||||||
|
(void *)(long)(i * 10)/* func data */);
|
||||||
|
}
|
||||||
|
else if (git)
|
||||||
|
{
|
||||||
|
gli = elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)(long)i/* item data */,
|
||||||
|
git/* parent */,
|
||||||
|
ELM_GENLIST_ITEM_NONE,
|
||||||
|
gl_sel/* func */,
|
||||||
|
(void *)(long)(i * 10)/* func data */);
|
||||||
|
}
|
||||||
|
//elm_genlist_item_display_only_set(gli, EINA_TRUE);
|
||||||
|
switch (i)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
evas_object_smart_callback_add(bt[0], "clicked", _bt_show_cb, gli);
|
||||||
|
evas_object_smart_callback_add(bt[4], "clicked", _bt_bring_cb, gli);
|
||||||
|
break;
|
||||||
|
case 26:
|
||||||
|
evas_object_smart_callback_add(bt[1], "clicked", _bt_show_cb, gli);
|
||||||
|
break;
|
||||||
|
case 31:
|
||||||
|
evas_object_smart_callback_add(bt[5], "clicked", _bt_bring_cb, gli);
|
||||||
|
break;
|
||||||
|
case 101:
|
||||||
|
evas_object_smart_callback_add(bt[2], "clicked", _bt_show_cb, gli);
|
||||||
|
break;
|
||||||
|
case 239:
|
||||||
|
evas_object_smart_callback_add(bt[6], "clicked", _bt_bring_cb, gli);
|
||||||
|
break;
|
||||||
|
case 477:
|
||||||
|
evas_object_smart_callback_add(bt[7], "clicked", _bt_bring_cb, gli);
|
||||||
|
break;
|
||||||
|
case 480:
|
||||||
|
evas_object_smart_callback_add(bt[3], "clicked", _bt_show_cb, gli);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
evas_object_resize(win, 480, 800);
|
||||||
|
evas_object_show(win);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************/
|
||||||
|
|
||||||
|
static void
|
||||||
|
gl9_exp(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||||
|
{
|
||||||
|
Elm_Genlist_Item *it = event_info;
|
||||||
|
Evas_Object *gl = elm_genlist_item_genlist_get(it);
|
||||||
|
int val = (int)(long)elm_genlist_item_data_get(it);
|
||||||
|
val *= 10;
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)(long)(val + 1)/* item data */, it/* parent */,
|
||||||
|
ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)(long)(val + 2)/* item data */, it/* parent */,
|
||||||
|
ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)(long)(val + 3)/* item data */, it/* parent */,
|
||||||
|
ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
}
|
||||||
|
static void
|
||||||
|
gl9_con(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||||
|
{
|
||||||
|
Elm_Genlist_Item *it = event_info;
|
||||||
|
elm_genlist_item_subitems_clear(it);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gl9_exp_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||||
|
{
|
||||||
|
Elm_Genlist_Item *it = event_info;
|
||||||
|
elm_genlist_item_expanded_set(it, EINA_TRUE);
|
||||||
|
}
|
||||||
|
static void
|
||||||
|
gl9_con_req(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||||
|
{
|
||||||
|
Elm_Genlist_Item *it = event_info;
|
||||||
|
elm_genlist_item_expanded_set(it, EINA_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test_genlist9(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *bg, *gl, *bx;
|
||||||
|
Elm_Genlist_Item *git;
|
||||||
|
|
||||||
|
win = elm_win_add(NULL, "genlist-group-tree", ELM_WIN_BASIC);
|
||||||
|
elm_win_title_set(win, "Genlist Group Tree");
|
||||||
|
elm_win_autodel_set(win, 1);
|
||||||
|
|
||||||
|
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_smart_callback_add(gl, "selected", _gl_selected, NULL);
|
||||||
|
evas_object_smart_callback_add(gl, "clicked", _gl_clicked, NULL);
|
||||||
|
evas_object_smart_callback_add(gl, "longpressed", _gl_longpress, NULL);
|
||||||
|
evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_box_pack_end(bx, gl);
|
||||||
|
evas_object_show(gl);
|
||||||
|
|
||||||
|
itc1.item_style = "default";
|
||||||
|
itc1.func.label_get = gl_label_get;
|
||||||
|
itc1.func.icon_get = gl_icon_get;
|
||||||
|
itc1.func.state_get = gl_state_get;
|
||||||
|
itc1.func.del = gl_del;
|
||||||
|
|
||||||
|
itc_group.item_style = "group_index";
|
||||||
|
itc_group.func.label_get = gl8_label_get;
|
||||||
|
itc_group.func.icon_get = NULL;
|
||||||
|
itc_group.func.state_get = NULL;
|
||||||
|
itc_group.func.del = gl_del;
|
||||||
|
|
||||||
|
git = elm_genlist_item_append(gl, &itc_group,
|
||||||
|
(void *)0/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)1/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)2/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)3/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
git = elm_genlist_item_append(gl, &itc_group,
|
||||||
|
(void *)4/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_GROUP, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)5/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)6/* item data */, git/* parent */, ELM_GENLIST_ITEM_NONE, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
elm_genlist_item_append(gl, &itc1,
|
||||||
|
(void *)7/* item data */, git/* parent */, ELM_GENLIST_ITEM_SUBITEMS, gl4_sel/* func */,
|
||||||
|
NULL/* func data */);
|
||||||
|
|
||||||
|
evas_object_smart_callback_add(gl, "expand,request", gl9_exp_req, gl);
|
||||||
|
evas_object_smart_callback_add(gl, "contract,request", gl9_con_req, gl);
|
||||||
|
evas_object_smart_callback_add(gl, "expanded", gl9_exp, gl);
|
||||||
|
evas_object_smart_callback_add(gl, "contracted", gl9_con, gl);
|
||||||
|
|
||||||
|
evas_object_resize(win, 480, 800);
|
||||||
|
evas_object_show(win);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1684,7 +1684,8 @@ extern "C" {
|
||||||
typedef enum _Elm_Genlist_Item_Flags
|
typedef enum _Elm_Genlist_Item_Flags
|
||||||
{
|
{
|
||||||
ELM_GENLIST_ITEM_NONE = 0,
|
ELM_GENLIST_ITEM_NONE = 0,
|
||||||
ELM_GENLIST_ITEM_SUBITEMS = (1 << 0)
|
ELM_GENLIST_ITEM_SUBITEMS = (1 << 0),
|
||||||
|
ELM_GENLIST_ITEM_GROUP = (1 << 1)
|
||||||
} Elm_Genlist_Item_Flags;
|
} Elm_Genlist_Item_Flags;
|
||||||
typedef struct _Elm_Genlist_Item_Class Elm_Genlist_Item_Class;
|
typedef struct _Elm_Genlist_Item_Class Elm_Genlist_Item_Class;
|
||||||
typedef struct _Elm_Genlist_Item Elm_Genlist_Item; /**< Item of Elm_Genlist. Sub-type of Elm_Widget_Item */
|
typedef struct _Elm_Genlist_Item Elm_Genlist_Item; /**< Item of Elm_Genlist. Sub-type of Elm_Widget_Item */
|
||||||
|
|
|
@ -289,6 +289,7 @@ struct _Widget_Data
|
||||||
{
|
{
|
||||||
Evas_Object *obj, *scr, *pan_smart;
|
Evas_Object *obj, *scr, *pan_smart;
|
||||||
Eina_Inlist *items, *blocks;
|
Eina_Inlist *items, *blocks;
|
||||||
|
Eina_List *group_items;
|
||||||
Pan *pan;
|
Pan *pan;
|
||||||
Evas_Coord pan_x, pan_y, w, h, minw, minh, realminw, prev_viewport_w;
|
Evas_Coord pan_x, pan_y, w, h, minw, minh, realminw, prev_viewport_w;
|
||||||
Ecore_Job *calc_job, *update_job;
|
Ecore_Job *calc_job, *update_job;
|
||||||
|
@ -361,6 +362,7 @@ struct _Elm_Genlist_Item
|
||||||
Evas_Coord x, y, w, h, minw, minh;
|
Evas_Coord x, y, w, h, minw, minh;
|
||||||
const Elm_Genlist_Item_Class *itc;
|
const Elm_Genlist_Item_Class *itc;
|
||||||
Elm_Genlist_Item *parent;
|
Elm_Genlist_Item *parent;
|
||||||
|
Elm_Genlist_Item *group_item;
|
||||||
Elm_Genlist_Item_Flags flags;
|
Elm_Genlist_Item_Flags flags;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -373,6 +375,7 @@ struct _Elm_Genlist_Item
|
||||||
Ecore_Timer *long_timer;
|
Ecore_Timer *long_timer;
|
||||||
Ecore_Timer *swipe_timer;
|
Ecore_Timer *swipe_timer;
|
||||||
Evas_Coord dx, dy;
|
Evas_Coord dx, dy;
|
||||||
|
Evas_Coord scrl_x, scrl_y;
|
||||||
|
|
||||||
Elm_Genlist_Item *rel;
|
Elm_Genlist_Item *rel;
|
||||||
|
|
||||||
|
@ -394,6 +397,7 @@ struct _Elm_Genlist_Item
|
||||||
Eina_Bool before : 1;
|
Eina_Bool before : 1;
|
||||||
|
|
||||||
Eina_Bool want_unrealize : 1;
|
Eina_Bool want_unrealize : 1;
|
||||||
|
Eina_Bool want_realize : 1;
|
||||||
Eina_Bool realized : 1;
|
Eina_Bool realized : 1;
|
||||||
Eina_Bool selected : 1;
|
Eina_Bool selected : 1;
|
||||||
Eina_Bool hilighted : 1;
|
Eina_Bool hilighted : 1;
|
||||||
|
@ -817,7 +821,11 @@ _item_hilight(Elm_Genlist_Item *it)
|
||||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||||
evas_object_raise(it->base.view);
|
{
|
||||||
|
evas_object_raise(it->base.view);
|
||||||
|
if ((it->group_item) && (it->group_item->realized))
|
||||||
|
evas_object_raise(it->group_item->base.view);
|
||||||
|
}
|
||||||
it->hilighted = EINA_TRUE;
|
it->hilighted = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1636,7 +1644,10 @@ _item_realize(Elm_Genlist_Item *it,
|
||||||
evas_object_color_set(it->spacer, 0, 0, 0, 0);
|
evas_object_color_set(it->spacer, 0, 0, 0, 0);
|
||||||
elm_widget_sub_object_add(it->base.widget, it->spacer);
|
elm_widget_sub_object_add(it->base.widget, it->spacer);
|
||||||
}
|
}
|
||||||
for (it2 = it, depth = 0; it2->parent; it2 = it2->parent) depth += 1;
|
for (it2 = it, depth = 0; it2->parent; it2 = it2->parent)
|
||||||
|
{
|
||||||
|
if (it2->parent->flags != ELM_GENLIST_ITEM_GROUP) depth += 1;
|
||||||
|
}
|
||||||
it->expanded_depth = depth;
|
it->expanded_depth = depth;
|
||||||
treesize = edje_object_data_get(it->base.view, "treesize");
|
treesize = edje_object_data_get(it->base.view, "treesize");
|
||||||
if (treesize) tsize = atoi(treesize);
|
if (treesize) tsize = atoi(treesize);
|
||||||
|
@ -1938,13 +1949,16 @@ _item_block_unrealize(Item_Block *itb)
|
||||||
if (!itb->realized) return;
|
if (!itb->realized) return;
|
||||||
EINA_LIST_FOREACH(itb->items, l, it)
|
EINA_LIST_FOREACH(itb->items, l, it)
|
||||||
{
|
{
|
||||||
if (it->dragging)
|
if (it->flags != ELM_GENLIST_ITEM_GROUP)
|
||||||
{
|
{
|
||||||
dragging = EINA_TRUE;
|
if (it->dragging)
|
||||||
it->want_unrealize = EINA_TRUE;
|
{
|
||||||
|
dragging = EINA_TRUE;
|
||||||
|
it->want_unrealize = EINA_TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_item_unrealize(it);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
_item_unrealize(it);
|
|
||||||
}
|
}
|
||||||
if (!dragging)
|
if (!dragging)
|
||||||
{
|
{
|
||||||
|
@ -1961,6 +1975,7 @@ _item_block_position(Item_Block *itb,
|
||||||
{
|
{
|
||||||
const Eina_List *l;
|
const Eina_List *l;
|
||||||
Elm_Genlist_Item *it;
|
Elm_Genlist_Item *it;
|
||||||
|
Elm_Genlist_Item *git;
|
||||||
Evas_Coord y = 0, ox, oy, ow, oh, cvx, cvy, cvw, cvh;
|
Evas_Coord y = 0, ox, oy, ow, oh, cvx, cvy, cvw, cvh;
|
||||||
int vis;
|
int vis;
|
||||||
|
|
||||||
|
@ -1973,31 +1988,69 @@ _item_block_position(Item_Block *itb,
|
||||||
it->x = 0;
|
it->x = 0;
|
||||||
it->y = y;
|
it->y = y;
|
||||||
it->w = itb->w;
|
it->w = itb->w;
|
||||||
vis = (ELM_RECTS_INTERSECT(itb->x + it->x - it->wd->pan_x + ox,
|
it->scrl_x = itb->x + it->x - it->wd->pan_x + ox;
|
||||||
itb->y + it->y - it->wd->pan_y + oy,
|
it->scrl_y = itb->y + it->y - it->wd->pan_y + oy;
|
||||||
it->w, it->h,
|
|
||||||
cvx, cvy, cvw, cvh));
|
if (it->flags != ELM_GENLIST_ITEM_GROUP)
|
||||||
if ((itb->realized) && (!it->realized))
|
|
||||||
{
|
{
|
||||||
if (vis) _item_realize(it, in, 0);
|
vis = (ELM_RECTS_INTERSECT(it->scrl_x, it->scrl_y, it->w, it->h,
|
||||||
}
|
cvx, cvy, cvw, cvh));
|
||||||
if (it->realized)
|
if ((itb->realized) && (!it->realized))
|
||||||
{
|
|
||||||
if (vis)
|
|
||||||
{
|
{
|
||||||
evas_object_resize(it->base.view, it->w, it->h);
|
if (vis) _item_realize(it, in, 0);
|
||||||
evas_object_move(it->base.view,
|
|
||||||
ox + itb->x + it->x - itb->wd->pan_x,
|
|
||||||
oy + itb->y + it->y - itb->wd->pan_y);
|
|
||||||
evas_object_show(it->base.view);
|
|
||||||
}
|
}
|
||||||
else
|
if (it->realized)
|
||||||
{
|
{
|
||||||
if (!it->dragging) _item_unrealize(it);
|
if (vis)
|
||||||
|
{
|
||||||
|
git = it->group_item;
|
||||||
|
if (git)
|
||||||
|
{
|
||||||
|
if (git->scrl_y < oy)
|
||||||
|
git->scrl_y = oy;
|
||||||
|
if ((git->scrl_y + git->h) > (it->scrl_y + it->h))
|
||||||
|
git->scrl_y = (it->scrl_y + it->h) - git->minh;
|
||||||
|
git->want_realize = EINA_TRUE;
|
||||||
|
}
|
||||||
|
evas_object_resize(it->base.view, it->w, it->h);
|
||||||
|
evas_object_move(it->base.view,
|
||||||
|
it->scrl_x, it->scrl_y);
|
||||||
|
evas_object_show(it->base.view);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!it->dragging) _item_unrealize(it);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
in++;
|
||||||
}
|
}
|
||||||
y += it->h;
|
y += it->h;
|
||||||
in++;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_group_items_recalc(void *data)
|
||||||
|
{
|
||||||
|
Widget_Data *wd = data;
|
||||||
|
Eina_List *l;
|
||||||
|
Elm_Genlist_Item *git;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(wd->group_items, l, git)
|
||||||
|
{
|
||||||
|
if (git->want_realize)
|
||||||
|
{
|
||||||
|
if (!git->realized)
|
||||||
|
_item_realize(git, 0, 0);
|
||||||
|
evas_object_resize(git->base.view, wd->minw, git->h);
|
||||||
|
evas_object_move(git->base.view, git->scrl_x, git->scrl_y);
|
||||||
|
evas_object_show(git->base.view);
|
||||||
|
evas_object_raise(git->base.view);
|
||||||
|
}
|
||||||
|
else if (!git->want_realize && git->realized)
|
||||||
|
{
|
||||||
|
if (!git->dragging)
|
||||||
|
_item_unrealize(git);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2360,9 +2413,15 @@ _pan_calculate(Evas_Object *obj)
|
||||||
Item_Block *itb;
|
Item_Block *itb;
|
||||||
Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
|
Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh;
|
||||||
int in = 0;
|
int in = 0;
|
||||||
|
Elm_Genlist_Item *git;
|
||||||
|
Eina_List *l;
|
||||||
|
|
||||||
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
|
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
|
||||||
evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh);
|
evas_output_viewport_get(evas_object_evas_get(obj), &cvx, &cvy, &cvw, &cvh);
|
||||||
|
EINA_LIST_FOREACH(sd->wd->group_items, l, git)
|
||||||
|
{
|
||||||
|
git->want_realize = EINA_FALSE;
|
||||||
|
}
|
||||||
EINA_INLIST_FOREACH(sd->wd->blocks, itb)
|
EINA_INLIST_FOREACH(sd->wd->blocks, itb)
|
||||||
{
|
{
|
||||||
itb->w = sd->wd->minw;
|
itb->w = sd->wd->minw;
|
||||||
|
@ -2381,6 +2440,7 @@ _pan_calculate(Evas_Object *obj)
|
||||||
}
|
}
|
||||||
in += itb->count;
|
in += itb->count;
|
||||||
}
|
}
|
||||||
|
_group_items_recalc(sd->wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2843,6 +2903,8 @@ elm_genlist_item_append(Evas_Object *obj,
|
||||||
if (!it) return NULL;
|
if (!it) return NULL;
|
||||||
if (!it->parent)
|
if (!it->parent)
|
||||||
{
|
{
|
||||||
|
if (flags & ELM_GENLIST_ITEM_GROUP)
|
||||||
|
wd->group_items = eina_list_append(wd->group_items, it);
|
||||||
wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
|
wd->items = eina_inlist_append(wd->items, EINA_INLIST_GET(it));
|
||||||
it->rel = NULL;
|
it->rel = NULL;
|
||||||
}
|
}
|
||||||
|
@ -2858,6 +2920,11 @@ elm_genlist_item_append(Evas_Object *obj,
|
||||||
EINA_INLIST_GET(it2));
|
EINA_INLIST_GET(it2));
|
||||||
it->rel = it2;
|
it->rel = it2;
|
||||||
it->rel->relcount++;
|
it->rel->relcount++;
|
||||||
|
|
||||||
|
if (it->parent->flags & ELM_GENLIST_ITEM_GROUP)
|
||||||
|
it->group_item = parent;
|
||||||
|
else if (it->parent->group_item)
|
||||||
|
it->group_item = it->parent->group_item;
|
||||||
}
|
}
|
||||||
it->before = EINA_FALSE;
|
it->before = EINA_FALSE;
|
||||||
_item_queue(wd, it);
|
_item_queue(wd, it);
|
||||||
|
@ -2898,6 +2965,8 @@ elm_genlist_item_prepend(Evas_Object *obj,
|
||||||
if (!it) return NULL;
|
if (!it) return NULL;
|
||||||
if (!it->parent)
|
if (!it->parent)
|
||||||
{
|
{
|
||||||
|
if (flags & ELM_GENLIST_ITEM_GROUP)
|
||||||
|
wd->group_items = eina_list_prepend(wd->group_items, it);
|
||||||
wd->items = eina_inlist_prepend(wd->items, EINA_INLIST_GET(it));
|
wd->items = eina_inlist_prepend(wd->items, EINA_INLIST_GET(it));
|
||||||
it->rel = NULL;
|
it->rel = NULL;
|
||||||
}
|
}
|
||||||
|
@ -3682,6 +3751,7 @@ EAPI void
|
||||||
elm_genlist_item_show(Elm_Genlist_Item *it)
|
elm_genlist_item_show(Elm_Genlist_Item *it)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
||||||
|
Evas_Coord gith = 0;
|
||||||
if (it->delete_me) return;
|
if (it->delete_me) return;
|
||||||
if ((it->queued) || (!it->mincalcd))
|
if ((it->queued) || (!it->mincalcd))
|
||||||
{
|
{
|
||||||
|
@ -3695,6 +3765,8 @@ elm_genlist_item_show(Elm_Genlist_Item *it)
|
||||||
it->wd->show_item->showme = EINA_FALSE;
|
it->wd->show_item->showme = EINA_FALSE;
|
||||||
it->wd->show_item = NULL;
|
it->wd->show_item = NULL;
|
||||||
}
|
}
|
||||||
|
if ((it->group_item) && (it->wd->pan_y > (it->y + it->block->y)))
|
||||||
|
gith = it->group_item->h;
|
||||||
elm_smart_scroller_child_region_show(it->wd->scr,
|
elm_smart_scroller_child_region_show(it->wd->scr,
|
||||||
it->x + it->block->x,
|
it->x + it->block->x,
|
||||||
it->y + it->block->y,
|
it->y + it->block->y,
|
||||||
|
@ -3716,6 +3788,7 @@ EAPI void
|
||||||
elm_genlist_item_bring_in(Elm_Genlist_Item *it)
|
elm_genlist_item_bring_in(Elm_Genlist_Item *it)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
||||||
|
Evas_Coord gith = 0;
|
||||||
if (it->delete_me) return;
|
if (it->delete_me) return;
|
||||||
if ((it->queued) || (!it->mincalcd))
|
if ((it->queued) || (!it->mincalcd))
|
||||||
{
|
{
|
||||||
|
@ -3729,9 +3802,11 @@ elm_genlist_item_bring_in(Elm_Genlist_Item *it)
|
||||||
it->wd->show_item->showme = EINA_FALSE;
|
it->wd->show_item->showme = EINA_FALSE;
|
||||||
it->wd->show_item = NULL;
|
it->wd->show_item = NULL;
|
||||||
}
|
}
|
||||||
|
if ((it->group_item) && (it->wd->pan_y > (it->y + it->block->y)))
|
||||||
|
gith = it->group_item->h;
|
||||||
elm_smart_scroller_region_bring_in(it->wd->scr,
|
elm_smart_scroller_region_bring_in(it->wd->scr,
|
||||||
it->x + it->block->x,
|
it->x + it->block->x,
|
||||||
it->y + it->block->y,
|
it->y + it->block->y - gith,
|
||||||
it->block->w, it->h);
|
it->block->w, it->h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3750,6 +3825,7 @@ elm_genlist_item_top_show(Elm_Genlist_Item *it)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
||||||
Evas_Coord ow, oh;
|
Evas_Coord ow, oh;
|
||||||
|
Evas_Coord gith = 0;
|
||||||
|
|
||||||
if (it->delete_me) return;
|
if (it->delete_me) return;
|
||||||
if ((it->queued) || (!it->mincalcd))
|
if ((it->queued) || (!it->mincalcd))
|
||||||
|
@ -3765,9 +3841,10 @@ elm_genlist_item_top_show(Elm_Genlist_Item *it)
|
||||||
it->wd->show_item = NULL;
|
it->wd->show_item = NULL;
|
||||||
}
|
}
|
||||||
evas_object_geometry_get(it->wd->pan_smart, NULL, NULL, &ow, &oh);
|
evas_object_geometry_get(it->wd->pan_smart, NULL, NULL, &ow, &oh);
|
||||||
|
if (it->group_item) gith = it->group_item->h;
|
||||||
elm_smart_scroller_child_region_show(it->wd->scr,
|
elm_smart_scroller_child_region_show(it->wd->scr,
|
||||||
it->x + it->block->x,
|
it->x + it->block->x,
|
||||||
it->y + it->block->y,
|
it->y + it->block->y - gith,
|
||||||
it->block->w, oh);
|
it->block->w, oh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3787,6 +3864,7 @@ elm_genlist_item_top_bring_in(Elm_Genlist_Item *it)
|
||||||
{
|
{
|
||||||
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
|
||||||
Evas_Coord ow, oh;
|
Evas_Coord ow, oh;
|
||||||
|
Evas_Coord gith = 0;
|
||||||
|
|
||||||
if (it->delete_me) return;
|
if (it->delete_me) return;
|
||||||
if ((it->queued) || (!it->mincalcd))
|
if ((it->queued) || (!it->mincalcd))
|
||||||
|
@ -3802,9 +3880,10 @@ elm_genlist_item_top_bring_in(Elm_Genlist_Item *it)
|
||||||
it->wd->show_item = NULL;
|
it->wd->show_item = NULL;
|
||||||
}
|
}
|
||||||
evas_object_geometry_get(it->wd->pan_smart, NULL, NULL, &ow, &oh);
|
evas_object_geometry_get(it->wd->pan_smart, NULL, NULL, &ow, &oh);
|
||||||
|
if (it->group_item) gith = it->group_item->h;
|
||||||
elm_smart_scroller_region_bring_in(it->wd->scr,
|
elm_smart_scroller_region_bring_in(it->wd->scr,
|
||||||
it->x + it->block->x,
|
it->x + it->block->x,
|
||||||
it->y + it->block->y,
|
it->y + it->block->y - gith,
|
||||||
it->block->w, oh);
|
it->block->w, oh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue