summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--legacy/edje/ChangeLog6
-rw-r--r--legacy/edje/NEWS2
-rw-r--r--legacy/edje/src/bin/edje_cc_handlers.c36
-rw-r--r--legacy/edje/src/lib/Edje.h3
-rw-r--r--legacy/edje/src/lib/edje_cache.c1
-rw-r--r--legacy/edje/src/lib/edje_calc.c56
-rw-r--r--legacy/edje/src/lib/edje_data.c7
-rw-r--r--legacy/edje/src/lib/edje_load.c11
-rw-r--r--legacy/edje/src/lib/edje_private.h2
9 files changed, 100 insertions, 24 deletions
diff --git a/legacy/edje/ChangeLog b/legacy/edje/ChangeLog
index 610e23d934..a3919022a4 100644
--- a/legacy/edje/ChangeLog
+++ b/legacy/edje/ChangeLog
@@ -467,7 +467,11 @@
467 467
468 * Use Eina_File instead of fopen when possible in edje_cc. 468 * Use Eina_File instead of fopen when possible in edje_cc.
469 469
4702012-05-21 Shilpa Onkar Singh 4702012-05-21 Shilpa Onkar Singh
471 471
472 * Fix patch for edje draggable jump issue when external event 472 * Fix patch for edje draggable jump issue when external event
473 area is used for the dragable. 473 area is used for the dragable.
474
4752012-06-04 Cedric Bail
476
477 * Add VIRTUAL part to reduce the load on the canvas (lighter and faster theme).
diff --git a/legacy/edje/NEWS b/legacy/edje/NEWS
index e46985a057..10dc918c43 100644
--- a/legacy/edje/NEWS
+++ b/legacy/edje/NEWS
@@ -7,6 +7,8 @@ Additions:
7 * Add edje_watch to monitore change on edje source. 7 * Add edje_watch to monitore change on edje source.
8 * Emit ['edje,change,file', 'edje'] when the file change on disk. 8 * Emit ['edje,change,file', 'edje'] when the file change on disk.
9 * edje_player will automatically reload the file when it change on disk. 9 * edje_player will automatically reload the file when it change on disk.
10 * Add VIRTUAL part. This part are not putting anything into the canvas. So lighter and faster to
11 process (Use it to replace RECT part that are never visible and never catch any event).
10 12
11Improvements: 13Improvements:
12 * Allocate once and reuse Evas_Map. 14 * Allocate once and reuse Evas_Map.
diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c
index 2d71c4484f..91ae24ee3d 100644
--- a/legacy/edje/src/bin/edje_cc_handlers.c
+++ b/legacy/edje/src/bin/edje_cc_handlers.c
@@ -875,6 +875,7 @@ _edje_part_description_alloc(unsigned char type, const char *collection, const c
875 875
876 switch (type) 876 switch (type)
877 { 877 {
878 case EDJE_PART_TYPE_VIRTUAL:
878 case EDJE_PART_TYPE_RECTANGLE: 879 case EDJE_PART_TYPE_RECTANGLE:
879 case EDJE_PART_TYPE_SWALLOW: 880 case EDJE_PART_TYPE_SWALLOW:
880 case EDJE_PART_TYPE_GROUP: 881 case EDJE_PART_TYPE_GROUP:
@@ -3023,6 +3024,7 @@ st_collections_group_parts_part_name(void)
3023 @li TABLE 3024 @li TABLE
3024 @li EXTERNAL 3025 @li EXTERNAL
3025 @li PROXY 3026 @li PROXY
3027 @li VIRTUAL
3026 @endproperty 3028 @endproperty
3027*/ 3029*/
3028static void 3030static void
@@ -3044,6 +3046,7 @@ st_collections_group_parts_part_type(void)
3044 "TABLE", EDJE_PART_TYPE_TABLE, 3046 "TABLE", EDJE_PART_TYPE_TABLE,
3045 "EXTERNAL", EDJE_PART_TYPE_EXTERNAL, 3047 "EXTERNAL", EDJE_PART_TYPE_EXTERNAL,
3046 "PROXY", EDJE_PART_TYPE_PROXY, 3048 "PROXY", EDJE_PART_TYPE_PROXY,
3049 "VIRTUAL", EDJE_PART_TYPE_VIRTUAL,
3047 NULL); 3050 NULL);
3048 3051
3049 /* handle type change of inherited part */ 3052 /* handle type change of inherited part */
@@ -4379,6 +4382,7 @@ st_collections_group_parts_part_description_inherit(void)
4379 ed->color_class = STRDUP(ed->color_class); 4382 ed->color_class = STRDUP(ed->color_class);
4380 switch (ep->type) 4383 switch (ep->type)
4381 { 4384 {
4385 case EDJE_PART_TYPE_VIRTUAL:
4382 case EDJE_PART_TYPE_RECTANGLE: 4386 case EDJE_PART_TYPE_RECTANGLE:
4383 case EDJE_PART_TYPE_SWALLOW: 4387 case EDJE_PART_TYPE_SWALLOW:
4384 case EDJE_PART_TYPE_GROUP: 4388 case EDJE_PART_TYPE_GROUP:
@@ -4611,6 +4615,14 @@ st_collections_group_parts_part_description_visible(void)
4611{ 4615{
4612 check_arg_count(1); 4616 check_arg_count(1);
4613 4617
4618 if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
4619 {
4620 ERR("%s: Error. parse error %s:%i. "
4621 "VIRTUAL part can't have a visibility defined",
4622 progname, file_in, line - 1);
4623 exit(-1);
4624 }
4625
4614 current_desc->visible = parse_bool(0); 4626 current_desc->visible = parse_bool(0);
4615} 4627}
4616 4628
@@ -4843,6 +4855,14 @@ st_collections_group_parts_part_description_color_class(void)
4843{ 4855{
4844 check_arg_count(1); 4856 check_arg_count(1);
4845 4857
4858 if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
4859 {
4860 ERR("%s: Error. parse error %s:%i. "
4861 "VIRTUAL part can't have a color defined",
4862 progname, file_in, line - 1);
4863 exit(-1);
4864 }
4865
4846 current_desc->color_class = parse_str(0); 4866 current_desc->color_class = parse_str(0);
4847} 4867}
4848 4868
@@ -4861,6 +4881,14 @@ st_collections_group_parts_part_description_color(void)
4861{ 4881{
4862 check_arg_count(4); 4882 check_arg_count(4);
4863 4883
4884 if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
4885 {
4886 ERR("%s: Error. parse error %s:%i. "
4887 "VIRTUAL part can't have a color defined",
4888 progname, file_in, line - 1);
4889 exit(-1);
4890 }
4891
4864 current_desc->color.r = parse_int_range(0, 0, 255); 4892 current_desc->color.r = parse_int_range(0, 0, 255);
4865 current_desc->color.g = parse_int_range(1, 0, 255); 4893 current_desc->color.g = parse_int_range(1, 0, 255);
4866 current_desc->color.b = parse_int_range(2, 0, 255); 4894 current_desc->color.b = parse_int_range(2, 0, 255);
@@ -4882,6 +4910,14 @@ st_collections_group_parts_part_description_color2(void)
4882{ 4910{
4883 check_arg_count(4); 4911 check_arg_count(4);
4884 4912
4913 if (current_part->type == EDJE_PART_TYPE_VIRTUAL)
4914 {
4915 ERR("%s: Error. parse error %s:%i. "
4916 "VIRTUAL part can't have a color defined",
4917 progname, file_in, line - 1);
4918 exit(-1);
4919 }
4920
4885 current_desc->color2.r = parse_int_range(0, 0, 255); 4921 current_desc->color2.r = parse_int_range(0, 0, 255);
4886 current_desc->color2.g = parse_int_range(1, 0, 255); 4922 current_desc->color2.g = parse_int_range(1, 0, 255);
4887 current_desc->color2.b = parse_int_range(2, 0, 255); 4923 current_desc->color2.b = parse_int_range(2, 0, 255);
diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h
index 4f72b3bcfe..8a286ab4d9 100644
--- a/legacy/edje/src/lib/Edje.h
+++ b/legacy/edje/src/lib/Edje.h
@@ -382,7 +382,8 @@ typedef enum _Edje_Part_Type
382 EDJE_PART_TYPE_TABLE = 9, 382 EDJE_PART_TYPE_TABLE = 9,
383 EDJE_PART_TYPE_EXTERNAL = 10, 383 EDJE_PART_TYPE_EXTERNAL = 10,
384 EDJE_PART_TYPE_PROXY = 11, 384 EDJE_PART_TYPE_PROXY = 11,
385 EDJE_PART_TYPE_LAST = 12 385 EDJE_PART_TYPE_VIRTUAL = 12,
386 EDJE_PART_TYPE_LAST = 13
386} Edje_Part_Type; 387} Edje_Part_Type;
387 388
388typedef enum _Edje_Text_Effect 389typedef enum _Edje_Text_Effect
diff --git a/legacy/edje/src/lib/edje_cache.c b/legacy/edje/src/lib/edje_cache.c
index 14a3155afa..20738bd0b1 100644
--- a/legacy/edje/src/lib/edje_cache.c
+++ b/legacy/edje/src/lib/edje_cache.c
@@ -63,6 +63,7 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
63 INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce); 63 INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce);
64 INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce); 64 INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);
65 INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce); 65 INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);
66 INIT_EMP_BOTH(VIRTUAL, Edje_Part_Description_Common, ce);
66 INIT_EMP(part, Edje_Part, ce); 67 INIT_EMP(part, Edje_Part, ce);
67 68
68 snprintf(buf, sizeof(buf), "edje/collections/%i", id); 69 snprintf(buf, sizeof(buf), "edje/collections/%i", id);
diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c
index ccdb1b8058..28771f6be0 100644
--- a/legacy/edje/src/lib/edje_calc.c
+++ b/legacy/edje/src/lib/edje_calc.c
@@ -232,6 +232,12 @@ _edje_get_description_by_orientation(Edje *ed, Edje_Part_Description_Common *src
232 ce->count.GROUP++; 232 ce->count.GROUP++;
233 memsize = sizeof(Edje_Part_Description_Common); 233 memsize = sizeof(Edje_Part_Description_Common);
234 break; 234 break;
235 case EDJE_PART_TYPE_VIRTUAL:
236 desc_rtl = eina_mempool_malloc(ce->mp_rtl.VIRTUAL,
237 sizeof (Edje_Part_Description_Common));
238 ce->count.VIRTUAL++;
239 memsize = sizeof(Edje_Part_Description_Common);
240 break;
235 EDIT_ALLOC_POOL_RTL(TEXT, Text, text); 241 EDIT_ALLOC_POOL_RTL(TEXT, Text, text);
236 EDIT_ALLOC_POOL_RTL(TEXTBLOCK, Text, text); 242 EDIT_ALLOC_POOL_RTL(TEXTBLOCK, Text, text);
237 EDIT_ALLOC_POOL_RTL(IMAGE, Image, image); 243 EDIT_ALLOC_POOL_RTL(IMAGE, Image, image);
@@ -241,7 +247,7 @@ _edje_get_description_by_orientation(Edje *ed, Edje_Part_Description_Common *src
241 EDIT_ALLOC_POOL_RTL(EXTERNAL, External, external_params); 247 EDIT_ALLOC_POOL_RTL(EXTERNAL, External, external_params);
242 } 248 }
243 249
244 if(desc_rtl) 250 if (desc_rtl)
245 memcpy(desc_rtl, src, memsize); 251 memcpy(desc_rtl, src, memsize);
246 252
247 _edje_part_make_rtl(desc_rtl); 253 _edje_part_make_rtl(desc_rtl);
@@ -2015,23 +2021,26 @@ _edje_part_recalc_single(Edje *ed,
2015 else if (ep->part->type == EDJE_PART_TYPE_PROXY) 2021 else if (ep->part->type == EDJE_PART_TYPE_PROXY)
2016 _edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Proxy *)desc)->proxy.fill, params); 2022 _edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Proxy *)desc)->proxy.fill, params);
2017 2023
2018 /* colors */ 2024 if (ep->part->type != EDJE_PART_TYPE_VIRTUAL)
2019 if ((desc->color_class) && (*desc->color_class))
2020 cc = _edje_color_class_find(ed, desc->color_class);
2021
2022 if (cc)
2023 { 2025 {
2024 params->color.r = (((int)cc->r + 1) * desc->color.r) >> 8; 2026 /* colors */
2025 params->color.g = (((int)cc->g + 1) * desc->color.g) >> 8; 2027 if ((desc->color_class) && (*desc->color_class))
2026 params->color.b = (((int)cc->b + 1) * desc->color.b) >> 8; 2028 cc = _edje_color_class_find(ed, desc->color_class);
2027 params->color.a = (((int)cc->a + 1) * desc->color.a) >> 8; 2029
2028 } 2030 if (cc)
2029 else 2031 {
2030 { 2032 params->color.r = (((int)cc->r + 1) * desc->color.r) >> 8;
2031 params->color.r = desc->color.r; 2033 params->color.g = (((int)cc->g + 1) * desc->color.g) >> 8;
2032 params->color.g = desc->color.g; 2034 params->color.b = (((int)cc->b + 1) * desc->color.b) >> 8;
2033 params->color.b = desc->color.b; 2035 params->color.a = (((int)cc->a + 1) * desc->color.a) >> 8;
2034 params->color.a = desc->color.a; 2036 }
2037 else
2038 {
2039 params->color.r = desc->color.r;
2040 params->color.g = desc->color.g;
2041 params->color.b = desc->color.b;
2042 params->color.a = desc->color.a;
2043 }
2035 } 2044 }
2036 2045
2037 /* visible */ 2046 /* visible */
@@ -2087,6 +2096,7 @@ _edje_part_recalc_single(Edje *ed,
2087 2096
2088 break; 2097 break;
2089 } 2098 }
2099 case EDJE_PART_TYPE_VIRTUAL:
2090 case EDJE_PART_TYPE_RECTANGLE: 2100 case EDJE_PART_TYPE_RECTANGLE:
2091 case EDJE_PART_TYPE_BOX: 2101 case EDJE_PART_TYPE_BOX:
2092 case EDJE_PART_TYPE_TABLE: 2102 case EDJE_PART_TYPE_TABLE:
@@ -2158,6 +2168,9 @@ _edje_proxy_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj
2158 case EDJE_PART_TYPE_EXTERNAL: 2168 case EDJE_PART_TYPE_EXTERNAL:
2159 evas_object_image_source_set(ep->object, pp->swallowed_object); 2169 evas_object_image_source_set(ep->object, pp->swallowed_object);
2160 break; 2170 break;
2171 case EDJE_PART_TYPE_VIRTUAL:
2172 /* FIXME: detect that at compile time and prevent it */
2173 break;
2161 } 2174 }
2162 2175
2163 evas_object_image_fill_set(ep->object, p3->type.common.fill.x, p3->type.common.fill.y, 2176 evas_object_image_fill_set(ep->object, p3->type.common.fill.x, p3->type.common.fill.y,
@@ -2785,6 +2798,9 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
2785 /* FIXME: definitivly remove this code when we switch to new format. */ 2798 /* FIXME: definitivly remove this code when we switch to new format. */
2786 abort(); 2799 abort();
2787 break; 2800 break;
2801 case EDJE_PART_TYPE_VIRTUAL:
2802 /* We really should do nothing on VIRTUAL part */
2803 break;
2788 } 2804 }
2789 2805
2790 /* Some object need special recalc. */ 2806 /* Some object need special recalc. */
@@ -2816,6 +2832,9 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
2816 /* FIXME: definitivly remove this code when we switch to new format. */ 2832 /* FIXME: definitivly remove this code when we switch to new format. */
2817 abort(); 2833 abort();
2818 break; 2834 break;
2835 case EDJE_PART_TYPE_VIRTUAL:
2836 /* We really should do nothing on VIRTUAL part */
2837 break;
2819 } 2838 }
2820 2839
2821 if (ep->swallowed_object) 2840 if (ep->swallowed_object)
@@ -2839,7 +2858,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
2839 mo = ep->swallowed_object; 2858 mo = ep->swallowed_object;
2840 } 2859 }
2841 else mo = ep->object; 2860 else mo = ep->object;
2842 if (chosen_desc->map.on) 2861 if (chosen_desc->map.on && ep->part->type != EDJE_PART_TYPE_VIRTUAL)
2843 { 2862 {
2844 static Evas_Map *map = NULL; 2863 static Evas_Map *map = NULL;
2845 2864
@@ -2922,5 +2941,4 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
2922 ep->invalidate = 0; 2941 ep->invalidate = 0;
2923 } 2942 }
2924#endif 2943#endif
2925
2926} 2944}
diff --git a/legacy/edje/src/lib/edje_data.c b/legacy/edje/src/lib/edje_data.c
index 46fd521ea7..e6150b7a9f 100644
--- a/legacy/edje/src/lib/edje_data.c
+++ b/legacy/edje/src/lib/edje_data.c
@@ -83,6 +83,7 @@ EMP(GROUP, group);
83EMP(BOX, box); 83EMP(BOX, box);
84EMP(TABLE, table); 84EMP(TABLE, table);
85EMP(EXTERNAL, external); 85EMP(EXTERNAL, external);
86EMP(VIRTUAL, virtual);
86EMP(part, part); 87EMP(part, part);
87 88
88#define FREED(eed) \ 89#define FREED(eed) \
@@ -105,7 +106,8 @@ struct {
105 { EDJE_PART_TYPE_BOX, "box" }, 106 { EDJE_PART_TYPE_BOX, "box" },
106 { EDJE_PART_TYPE_TABLE, "table" }, 107 { EDJE_PART_TYPE_TABLE, "table" },
107 { EDJE_PART_TYPE_EXTERNAL, "external" }, 108 { EDJE_PART_TYPE_EXTERNAL, "external" },
108 { EDJE_PART_TYPE_PROXY, "proxy" } 109 { EDJE_PART_TYPE_PROXY, "proxy" },
110 { EDJE_PART_TYPE_VIRTUAL, "virtual" }
109}; 111};
110 112
111static const char * 113static const char *
@@ -329,6 +331,7 @@ _edje_edd_init(void)
329 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.BOX", count.BOX, EET_T_INT); 331 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.BOX", count.BOX, EET_T_INT);
330 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.TABLE", count.TABLE, EET_T_INT); 332 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.TABLE", count.TABLE, EET_T_INT);
331 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.EXTERNAL", count.EXTERNAL, EET_T_INT); 333 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.EXTERNAL", count.EXTERNAL, EET_T_INT);
334 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.VIRTUAL", count.VIRTUAL, EET_T_INT);
332 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.part", count.part, EET_T_INT); 335 EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.part", count.part, EET_T_INT);
333 336
334 EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style_Tag); 337 EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style_Tag);
@@ -742,6 +745,7 @@ _edje_edd_init(void)
742 eddc.func.type_set = _edje_description_variant_type_set; 745 eddc.func.type_set = _edje_description_variant_type_set;
743 _edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc); 746 _edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc);
744 747
748 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "virtual", _edje_edd_edje_part_description_rectangle);
745 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_rectangle); 749 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_rectangle);
746 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_swallow); 750 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_swallow);
747 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_group); 751 EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_group);
@@ -767,6 +771,7 @@ _edje_edd_init(void)
767 _edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc); 771 _edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc);
768 772
769 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle); 773 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle);
774 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "virtual", rectangle);
770 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow); 775 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow);
771 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", group); 776 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", group);
772 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "image", image); 777 EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "image", image);
diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c
index 85a6b07957..bb7f762871 100644
--- a/legacy/edje/src/lib/edje_load.c
+++ b/legacy/edje/src/lib/edje_load.c
@@ -443,7 +443,8 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
443 _edje_part_description_find(ed, rp, "default", 0.0); 443 _edje_part_description_find(ed, rp, "default", 0.0);
444 rp->chosen_description = rp->param1.description; 444 rp->chosen_description = rp->param1.description;
445 if (!rp->param1.description) 445 if (!rp->param1.description)
446 ERR("no default part description!"); 446 ERR("no default part description for '%s'!",
447 rp->part->name);
447 448
448 switch (ep->type) 449 switch (ep->type)
449 { 450 {
@@ -487,6 +488,10 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
487 case EDJE_PART_TYPE_GRADIENT: 488 case EDJE_PART_TYPE_GRADIENT:
488 ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !", 489 ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !",
489 ep->name, group, file); 490 ep->name, group, file);
491 break;
492 case EDJE_PART_TYPE_VIRTUAL:
493 rp->object = NULL;
494 break;
490 default: 495 default:
491 ERR("wrong part type %i!", ep->type); 496 ERR("wrong part type %i!", ep->type);
492 break; 497 break;
@@ -551,7 +556,9 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
551 if (rp->part->clip_to_id >= 0) 556 if (rp->part->clip_to_id >= 0)
552 { 557 {
553 rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; 558 rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size];
554 if (rp->clip_to) 559 if (rp->clip_to &&
560 rp->clip_to->object &&
561 rp->object)
555 { 562 {
556 evas_object_pass_events_set(rp->clip_to->object, 1); 563 evas_object_pass_events_set(rp->clip_to->object, 1);
557 evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); 564 evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB);
diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h
index 48b4827a78..a3718d1da6 100644
--- a/legacy/edje/src/lib/edje_private.h
+++ b/legacy/edje/src/lib/edje_private.h
@@ -675,6 +675,7 @@ struct _Edje_Limit
675 TYPE GROUP; \ 675 TYPE GROUP; \
676 TYPE BOX; \ 676 TYPE BOX; \
677 TYPE TABLE; \ 677 TYPE TABLE; \
678 TYPE VIRTUAL; \
678 TYPE EXTERNAL; 679 TYPE EXTERNAL;
679 680
680struct _Edje_Part_Collection_Directory_Entry 681struct _Edje_Part_Collection_Directory_Entry
@@ -1667,6 +1668,7 @@ extern Eina_Mempool *_emp_GROUP;
1667extern Eina_Mempool *_emp_BOX; 1668extern Eina_Mempool *_emp_BOX;
1668extern Eina_Mempool *_emp_TABLE; 1669extern Eina_Mempool *_emp_TABLE;
1669extern Eina_Mempool *_emp_EXTERNAL; 1670extern Eina_Mempool *_emp_EXTERNAL;
1671extern Eina_Mempool *_emp_VIRTUAL;
1670extern Eina_Mempool *_emp_part; 1672extern Eina_Mempool *_emp_part;
1671 1673
1672void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2); 1674void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2);