From: Enlightenment S. <no-...@en...> - 2012-01-05 05:21:09
|
Log: fixc new recalc cb to be able to call size min recalc in cb. Author: raster Date: 2012-01-04 21:21:02 -0800 (Wed, 04 Jan 2012) New Revision: 66893 Trac: http://trac.enlightenment.org/e/changeset/66893 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2012-01-05 05:08:24 UTC (rev 66892) +++ trunk/edje/src/lib/edje_calc.c 2012-01-05 05:21:02 UTC (rev 66893) @@ -423,17 +423,23 @@ return; } } - if (ed->postponed) return; - evas_object_smart_changed(ed->obj); - ed->postponed = 1; +// XXX: dont need this with current smart calc infra. remove me later +// if (ed->postponed) return; + if (!ed->calc_only) + evas_object_smart_changed(ed->obj); +// XXX: dont need this with current smart calc infra. remove me later +// ed->postponed = 1; } void _edje_recalc_do(Edje *ed) { unsigned int i; + Eina_Bool need_calc; - ed->postponed = 0; +// XXX: dont need this with current smart calc infra. remove me later +// ed->postponed = 0; + need_calc = evas_object_smart_need_recalculate_get(ed->obj); evas_object_smart_need_recalculate_set(ed->obj, 0); if (!ed->dirty) return; ed->have_mapped_part = 0; @@ -462,6 +468,8 @@ #endif if (!ed->calc_only) evas_object_smart_callback_call(ed->obj, "recalc", NULL); + else + evas_object_smart_need_recalculate_set(ed->obj, need_calc); } void |
From: Enlightenment S. <no-...@en...> - 2012-02-14 15:03:24
|
Log: hey cedric.. let's not segv shall we? Author: raster Date: 2012-02-14 07:03:12 -0800 (Tue, 14 Feb 2012) New Revision: 67938 Trac: http://trac.enlightenment.org/e/changeset/67938 Modified: trunk/edje/src/lib/edje_program.c Modified: trunk/edje/src/lib/edje_program.c =================================================================== --- trunk/edje/src/lib/edje_program.c 2012-02-14 15:02:57 UTC (rev 67937) +++ trunk/edje/src/lib/edje_program.c 2012-02-14 15:03:12 UTC (rev 67938) @@ -873,9 +873,11 @@ { Edje_Message_Signal emsg; const char *sep; - Eina_Bool broadcast = ed->collection->broadcast_signal; + Eina_Bool broadcast; + if (!ed->collection) return; if (ed->delete_me) return; + broadcast = ed->collection->broadcast_signal; sep = strchr(sig, EDJE_PART_PATH_SEPARATOR); |
From: Enlightenment S. <no-...@en...> - 2012-04-20 12:49:38
|
Log: + @since Author: raster Date: 2012-04-20 05:49:27 -0700 (Fri, 20 Apr 2012) New Revision: 70361 Trac: http://trac.enlightenment.org/e/changeset/70361 Modified: trunk/edje/src/lib/Edje.h Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2012-04-20 12:37:42 UTC (rev 70360) +++ trunk/edje/src/lib/Edje.h 2012-04-20 12:49:27 UTC (rev 70361) @@ -2308,6 +2308,7 @@ * @param obj A valid Evas Object handle * @param part The part name * @param text The text string + * @since 1.2 */ EAPI Eina_Bool edje_object_part_text_escaped_set (Evas_Object *obj, const char *part, const char *text); |
From: Enlightenment S. <no-...@en...> - 2012-06-12 08:01:23
|
Log: never should have used this api - it never did squat diddly. bug in api set. Author: raster Date: 2012-06-12 01:01:12 -0700 (Tue, 12 Jun 2012) New Revision: 71989 Trac: http://trac.enlightenment.org/e/changeset/71989 Modified: trunk/edje/src/lib/edje_lua2.c Modified: trunk/edje/src/lib/edje_lua2.c =================================================================== --- trunk/edje/src/lib/edje_lua2.c 2012-06-12 07:58:11 UTC (rev 71988) +++ trunk/edje/src/lib/edje_lua2.c 2012-06-12 08:01:12 UTC (rev 71989) @@ -1712,7 +1712,6 @@ static int _elua_obj_map(lua_State *L); static int _elua_obj_map_enable(lua_State *L); -static int _elua_obj_map_source(lua_State *L); static const char *_elua_evas_api = "evas"; static const struct luaL_reg _elua_evas_funcs [] = @@ -1759,7 +1758,6 @@ // map api here {"map", _elua_obj_map}, {"map_enable", _elua_obj_map_enable}, - {"map_source", _elua_obj_map_source}, {NULL, NULL} // end }; @@ -2492,48 +2490,6 @@ return 1; } -/** -@page luaref -@subsubsection evas_map_source evas_object:map_source(object) - -Sets the object as the map source for this object. - -Wraps evas_object_map_source_set(). - -@param object The map source object. - -@return A userdata reference to the current map source object. - -@since 1.1.0 -*/ -static int -_elua_obj_map_source(lua_State *L) // Stack usage [-3, +4, -] -{ - Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] - Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; - Evas_Object *o; - Edje_Lua_Evas_Object *elo2; - int n; - - if (!_elua_isa(obj, _elua_evas_meta)) return 0; - - n = lua_gettop(L); // Stack usage [-0, +0, -] - if (n == 2) - { - Edje_Lua_Obj *obj2 = (Edje_Lua_Obj *)lua_touserdata(L, 2); // Stack usage [-0, +0, -] - const Edje_Lua_Evas_Object *source = (Edje_Lua_Evas_Object *)obj2; - - if (!_elua_isa(obj2, _elua_evas_meta)) return 0; - evas_object_map_source_set(elo->evas_obj, source->evas_obj); - } - - if (!(o = evas_object_map_source_get(elo->evas_obj))) return 0; - if (!(elo2 = evas_object_data_get(o, ELO))) return 0; - _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] - - return 1; -} - //------------- //------------- /** |
From: Enlightenment S. <no-...@en...> - 2012-06-13 15:00:27
|
Log: cedric -> REVERT! breaks elm list! Author: raster Date: 2012-06-13 08:00:16 -0700 (Wed, 13 Jun 2012) New Revision: 72087 Trac: http://trac.enlightenment.org/e/changeset/72087 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2012-06-13 13:36:12 UTC (rev 72086) +++ trunk/edje/src/lib/edje_util.c 2012-06-13 15:00:16 UTC (rev 72087) @@ -82,6 +82,7 @@ child = eud->u.swallow.child; rp = _edje_real_part_recursive_get(eud->ed, eud->part); _edje_real_part_swallow_clear(rp); + rp->swallowed_object = NULL; break; case EDJE_USER_BOX_PACK: child = eud->u.box.child; @@ -2811,8 +2812,22 @@ } } - _edje_real_part_swallow_clear(rp); + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb, + rp); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + if (rp->part->mouse_events) + _edje_callbacks_del(rp->swallowed_object, rp->edje); + _edje_callbacks_focus_del(rp->swallowed_object, rp->edje); + rp->swallowed_object = NULL; rp->swallow_params.min.w = 0; rp->swallow_params.min.h = 0; @@ -4906,18 +4921,8 @@ _edje_object_part_swallow_free_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { Edje_Real_Part *rp; - Edje_User_Defined *eud; - Eina_List *l; rp = data; - - EINA_LIST_FOREACH(rp->edje->user_defined, l, eud) - if (eud->type == EDJE_USER_SWALLOW && eud->u.swallow.child == obj) - { - _edje_user_definition_free(eud); - break; - } - _edje_real_part_swallow_clear(rp); rp->swallowed_object = NULL; @@ -5087,7 +5092,7 @@ { evas_object_smart_member_del(rp->swallowed_object); evas_object_event_callback_del_full(rp->swallowed_object, - EVAS_CALLBACK_DEL, + EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb, rp); evas_object_event_callback_del_full(rp->swallowed_object, |
From: Enlightenment S. <no-...@en...> - 2012-06-13 15:39:20
|
Log: cedric -> REVERT 2. LOTs of valgrind probelsm from this patch and crashes too in real life. try with valgrind again some tiome. rp's (parts) freed before callbacks called thus cb data is invalid by the time its called. Author: raster Date: 2012-06-13 08:39:10 -0700 (Wed, 13 Jun 2012) New Revision: 72090 Trac: http://trac.enlightenment.org/e/changeset/72090 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2012-06-13 15:17:23 UTC (rev 72089) +++ trunk/edje/src/lib/edje_util.c 2012-06-13 15:39:10 UTC (rev 72090) @@ -80,9 +80,7 @@ { case EDJE_USER_SWALLOW: child = eud->u.swallow.child; - rp = _edje_real_part_recursive_get(eud->ed, eud->part); - _edje_real_part_swallow_clear(rp); - rp->swallowed_object = NULL; + edje_object_part_unswallow(eud->ed->obj, child); break; case EDJE_USER_BOX_PACK: child = eud->u.box.child; @@ -2816,7 +2814,7 @@ evas_object_event_callback_del_full(rp->swallowed_object, EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb, - rp); + rp->edje->obj); evas_object_event_callback_del_full(rp->swallowed_object, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _edje_object_part_swallow_changed_hints_cb, @@ -4920,12 +4918,10 @@ void _edje_object_part_swallow_free_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) { - Edje_Real_Part *rp; + Evas_Object *edje_obj; - rp = data; - _edje_real_part_swallow_clear(rp); - rp->swallowed_object = NULL; - + edje_obj = data; + edje_object_part_unswallow(edje_obj, obj); return; } @@ -5056,7 +5052,7 @@ evas_object_event_callback_add(rp->swallowed_object, EVAS_CALLBACK_DEL, _edje_object_part_swallow_free_cb, - rp); + rp->edje->obj); evas_object_event_callback_add(rp->swallowed_object, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _edje_object_part_swallow_changed_hints_cb, @@ -5094,7 +5090,7 @@ evas_object_event_callback_del_full(rp->swallowed_object, EVAS_CALLBACK_FREE, _edje_object_part_swallow_free_cb, - rp); + rp->edje->obj); evas_object_event_callback_del_full(rp->swallowed_object, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _edje_object_part_swallow_changed_hints_cb, |
From: Enlightenment S. <no-...@en...> - 2012-06-12 16:29:17
|
Log: bitch-- Author: raster Date: 2012-06-12 09:29:11 -0700 (Tue, 12 Jun 2012) New Revision: 72043 Trac: http://trac.enlightenment.org/e/changeset/72043 Modified: trunk/edje/src/lib/edje_load.c Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2012-06-12 16:27:15 UTC (rev 72042) +++ trunk/edje/src/lib/edje_load.c 2012-06-12 16:29:11 UTC (rev 72043) @@ -1080,9 +1080,11 @@ _edje_file_del(Edje *ed) { Edje_User_Defined *eud; - Evas *tev = evas_object_evas_get(ed->obj); + Evas *tev = NULL; + + if (ed->obj) tev = evas_object_evas_get(ed->obj); - evas_event_freeze(tev); + if (tev) evas_event_freeze(tev); if (ed->freeze_calc) { _edje_freeze_calc_list = eina_list_remove(_edje_freeze_calc_list, ed); @@ -1101,8 +1103,11 @@ if (!((ed->file) && (ed->collection))) { - evas_event_thaw(tev); - evas_event_thaw_eval(tev); + if (tev) + { + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + } return; } if (ed->table_parts) @@ -1242,8 +1247,11 @@ ed->table_programs = NULL; ed->table_programs_size = 0; ed->focused_part = NULL; - evas_event_thaw(tev); - evas_event_thaw_eval(tev); + if (tev) + { + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + } } void |
From: Enlightenment S. <no-...@en...> - 2012-06-19 01:15:14
|
Log: tone down memprool size chunks. Author: raster Date: 2012-06-16 18:44:00 -0700 (Sat, 16 Jun 2012) New Revision: 72251 Trac: http://trac.enlightenment.org/e/changeset/72251 Modified: trunk/edje/src/lib/edje_edit.c trunk/edje/src/lib/edje_main.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2012-06-17 01:33:23 UTC (rev 72250) +++ trunk/edje/src/lib/edje_edit.c 2012-06-17 01:44:00 UTC (rev 72251) @@ -1021,7 +1021,7 @@ //cd = _alloc(sizeof(Code)); //codes = eina_list_append(codes, cd); #define EDIT_EMN(Tp, Sz, Ce) \ - Ce->mp.Tp = eina_mempool_add("chained_mempool", #Tp, NULL, sizeof (Sz), 10); + Ce->mp.Tp = eina_mempool_add("chained_mempool", #Tp, NULL, sizeof (Sz), 8); EDIT_EMN(RECTANGLE, Edje_Part_Description_Common, de); EDIT_EMN(TEXT, Edje_Part_Description_Text, de); Modified: trunk/edje/src/lib/edje_main.c =================================================================== --- trunk/edje/src/lib/edje_main.c 2012-06-17 01:33:23 UTC (rev 72250) +++ trunk/edje/src/lib/edje_main.c 2012-06-17 01:44:00 UTC (rev 72251) @@ -70,7 +70,7 @@ _edje_real_part_mp = eina_mempool_add("chained_mempool", "Edje_Real_Part", NULL, - sizeof (Edje_Real_Part), 128); + sizeof (Edje_Real_Part), 32); if (!_edje_real_part_mp) { ERR("Mempool for Edje_Real_Part cannot be allocated."); @@ -79,7 +79,7 @@ _edje_real_part_state_mp = eina_mempool_add("chained_mempool", "Edje_Real_Part_State", NULL, - sizeof (Edje_Real_Part_State), 256); + sizeof (Edje_Real_Part_State), 32); if (!_edje_real_part_state_mp) { ERR("Mempool for Edje_Real_Part_State cannot be allocated."); |
From: Enlightenment S. <no-...@en...> - 2012-06-28 10:19:41
|
Log: tom - can u take thgis textblock fit code and run with it and polish it to be nice and try and "fit" as best as possible? entries dont do it. Author: raster Date: 2012-06-28 03:19:30 -0700 (Thu, 28 Jun 2012) New Revision: 72992 Trac: http://trac.enlightenment.org/e/changeset/72992 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2012-06-28 10:14:25 UTC (rev 72991) +++ trunk/edje/src/lib/edje_calc.c 2012-06-28 10:19:30 UTC (rev 72992) @@ -1252,6 +1252,32 @@ if (*maxh < *minh) *maxh = *minh; } } + if ((chosen_desc->text.fit_x) || (chosen_desc->text.fit_y)) + { + double s = 1.0; + + if (ep->part->scale) s = TO_DOUBLE(sc); + evas_object_scale_set(ep->object, s); + evas_object_textblock_size_formatted_get(ep->object, &tw, &th); + if (chosen_desc->text.fit_x) + { + if ((tw > 0) && (tw > params->w)) + { + s = (s * params->w) / (double)tw; + evas_object_scale_set(ep->object, s); + evas_object_textblock_size_formatted_get(ep->object, &tw, &th); + } + } + if (chosen_desc->text.fit_y) + { + if ((th > 0) && (th > params->h)) + { + s = (s * params->h) / (double)th; + evas_object_scale_set(ep->object, s); + evas_object_textblock_size_formatted_get(ep->object, &tw, &th); + } + } + } evas_object_textblock_valign_set(ep->object, TO_DOUBLE(chosen_desc->text.align.y)); } } |
From: Enlightenment S. <no-...@en...> - 2012-07-03 12:19:51
|
Log: From: "dan...@sa..." <dan...@sa...> Subject: [E-devel] Patch for Edje: added const to obj parameter of edje_object_part_table_child_get The obj parameter is used only for read access so the const can be added to its type. Author: raster Date: 2012-07-03 05:19:40 -0700 (Tue, 03 Jul 2012) New Revision: 73231 Trac: http://trac.enlightenment.org/e/changeset/73231 Modified: trunk/edje/src/lib/Edje.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2012-07-03 12:16:09 UTC (rev 73230) +++ trunk/edje/src/lib/Edje.h 2012-07-03 12:19:40 UTC (rev 73231) @@ -3640,7 +3640,7 @@ * @param row The row of the child to get * @return The child Evas_Object */ -EAPI Evas_Object *edje_object_part_table_child_get (Evas_Object *obj, const char *part, unsigned int col, unsigned int row); +EAPI Evas_Object *edje_object_part_table_child_get (const Evas_Object *obj, const char *part, unsigned int col, unsigned int row); /** * @brief Packs an object into the table. Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2012-07-03 12:16:09 UTC (rev 73230) +++ trunk/edje/src/lib/edje_util.c 2012-07-03 12:19:40 UTC (rev 73231) @@ -4087,7 +4087,7 @@ } EAPI Evas_Object * -edje_object_part_table_child_get(Evas_Object *obj, const char *part, unsigned int col, unsigned int row) +edje_object_part_table_child_get(const Evas_Object *obj, const char *part, unsigned int col, unsigned int row) { Edje *ed; Edje_Real_Part *rp; |
From: Enlightenment S. <no-...@en...> - 2012-07-04 14:45:24
|
Log: fix reallyu minor thing - border_scale_by wasnt interpolated. Author: raster Date: 2012-07-04 07:45:13 -0700 (Wed, 04 Jul 2012) New Revision: 73289 Trac: http://trac.enlightenment.org/e/changeset/73289 Modified: trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2012-07-04 14:44:43 UTC (rev 73288) +++ trunk/edje/src/lib/edje_calc.c 2012-07-04 14:45:13 UTC (rev 73289) @@ -2157,6 +2157,8 @@ params->type.common.spec.image.t = img_desc->image.border.t; params->type.common.spec.image.b = img_desc->image.border.b; + + params->type.common.spec.image.border_scale_by = img_desc->image.border.scale_by; break; } case EDJE_PART_TYPE_TEXT: @@ -2289,9 +2291,9 @@ evas_object_image_smooth_scale_set(ep->object, p3->smooth); if (chosen_desc->image.border.scale) { - if (chosen_desc->image.border.scale_by > FROM_DOUBLE(0.0)) + if (p3->type.common.spec.image.border_scale_by > FROM_DOUBLE(0.0)) { - FLOAT_T sc2 = MUL(sc, chosen_desc->image.border.scale_by); + FLOAT_T sc2 = MUL(sc, p3->type.common.spec.image.border_scale_by); evas_object_image_border_scale_set(ep->object, TO_DOUBLE(sc2)); } else @@ -2299,9 +2301,9 @@ } else { - if (chosen_desc->image.border.scale_by > FROM_DOUBLE(0.0)) + if (p3->type.common.spec.image.border_scale_by > FROM_DOUBLE(0.0)) evas_object_image_border_scale_set - (ep->object, TO_DOUBLE(chosen_desc->image.border.scale_by)); + (ep->object, TO_DOUBLE(p3->type.common.spec.image.border_scale_by)); else evas_object_image_border_scale_set(ep->object, 1.0); } @@ -2711,6 +2713,7 @@ p3->type.common.spec.image.r = INTP(p1->type.common.spec.image.r, p2->type.common.spec.image.r, pos); p3->type.common.spec.image.t = INTP(p1->type.common.spec.image.t, p2->type.common.spec.image.t, pos); p3->type.common.spec.image.b = INTP(p1->type.common.spec.image.b, p2->type.common.spec.image.b, pos); + p3->type.common.spec.image.border_scale_by = INTP(p1->type.common.spec.image.border_scale_by, p2->type.common.spec.image.border_scale_by, pos); case EDJE_PART_TYPE_PROXY: p3->type.common.fill.x = INTP(p1->type.common.fill.x, p2->type.common.fill.x, pos); p3->type.common.fill.y = INTP(p1->type.common.fill.y, p2->type.common.fill.y, pos); Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2012-07-04 14:44:43 UTC (rev 73288) +++ trunk/edje/src/lib/edje_private.h 2012-07-04 14:45:13 UTC (rev 73289) @@ -1220,6 +1220,7 @@ union { struct { int l, r, t, b; // 16 + FLOAT_T border_scale_by; } image; // 16 } spec; // 16 } common; // 40 |
From: Enlightenment S. <no-...@en...> - 2012-07-07 09:34:59
|
Log: no need for that ERR msg. :) Author: raster Date: 2012-07-07 02:34:52 -0700 (Sat, 07 Jul 2012) New Revision: 73449 Trac: http://trac.enlightenment.org/e/changeset/73449 Modified: trunk/edje/src/lib/edje_program.c Modified: trunk/edje/src/lib/edje_program.c =================================================================== --- trunk/edje/src/lib/edje_program.c 2012-07-07 08:49:21 UTC (rev 73448) +++ trunk/edje/src/lib/edje_program.c 2012-07-07 09:34:52 UTC (rev 73449) @@ -998,7 +998,7 @@ break ; default: - ERR("SPANK SPANK SPANK !!!\nYou should never be here !"); +// ERR("SPANK SPANK SPANK !!!\nYou should never be here !"); break; } } |
From: Enlightenment S. <no-...@en...> - 2012-08-07 11:15:38
|
Log: 2 bugs. 1 textclasses were repeated per object list and (segv free same tc 2x) 2. we returend if size OR font name match - BOTH have to match to be "the same". so && not || Author: raster Date: 2012-08-07 04:15:30 -0700 (Tue, 07 Aug 2012) New Revision: 74980 Trac: http://trac.enlightenment.org/e/changeset/74980 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2012-08-07 11:03:32 UTC (rev 74979) +++ trunk/edje/src/lib/edje_util.c 2012-08-07 11:15:30 UTC (rev 74980) @@ -919,9 +919,9 @@ if ((tc->name) && (!strcmp(tc->name, text_class))) { /* Match and the same, return */ - if ((tc->size == size) || - (tc->font == font) || - (tc->font && font && !strcmp(tc->font, font))) + if ((tc->size == size) && + ((tc->font == font) || + (tc->font && font && !strcmp(tc->font, font)))) return EINA_TRUE; /* Update new text class properties */ @@ -944,6 +944,8 @@ } tc->font = eina_stringshare_add(font); tc->size = size; + /* Add to edje's text class list */ + ed->text_classes = eina_list_append(ed->text_classes, tc); } for (i = 0; i < ed->table_parts_size; i++) @@ -956,8 +958,6 @@ font, size); } - /* Add to edje's text class list */ - ed->text_classes = eina_list_append(ed->text_classes, tc); ed->dirty = 1; ed->recalc_call = 1; #ifdef EDJE_CALC_CACHE |
From: Enlightenment S. <no-...@en...> - 2012-08-18 01:31:56
|
Log: address http://trac.enlightenment.org/e/ticket/1263 at least where deadkeys and composition are involved. i don't know if they are or are not. anything else is an issue outside of efl i believe. (eg keymap) Author: raster Date: 2012-08-17 18:31:49 -0700 (Fri, 17 Aug 2012) New Revision: 75398 Trac: http://trac.enlightenment.org/e/changeset/75398 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2012-08-18 01:30:05 UTC (rev 75397) +++ trunk/edje/src/lib/edje_entry.c 2012-08-18 01:31:49 UTC (rev 75398) @@ -27,8 +27,10 @@ Eina_List *anchors; Eina_List *anchorlist; Eina_List *itemlist; + Eina_List *seq; char *selection; Edje_Input_Panel_Lang input_panel_lang; + Eina_Bool composing : 1; Eina_Bool selecting : 1; Eina_Bool have_selection : 1; Eina_Bool select_allow : 1; @@ -1143,7 +1145,32 @@ return ECORE_CALLBACK_CANCEL; } +static Eina_Bool +_is_modifier(const char *key) +{ + if ((!strncmp(key, "Shift", 5)) || + (!strncmp(key, "Control", 7)) || + (!strncmp(key, "Alt", 3)) || + (!strncmp(key, "Meta", 4)) || + (!strncmp(key, "Super", 5)) || + (!strncmp(key, "Hyper", 5)) || + (!strcmp(key, "Scroll_Lock")) || + (!strcmp(key, "Num_Lock")) || + (!strcmp(key, "Caps_Lock"))) + return EINA_TRUE; + return EINA_FALSE; +} + static void +_compose_seq_reset(Entry *en) +{ + char *str; + + EINA_LIST_FREE(en->seq, str) eina_stringshare_del(str); + en->composing = EINA_FALSE; +} + +static void _edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) { Edje *ed = data; @@ -1166,10 +1193,13 @@ { Ecore_IMF_Event_Key_Down ecore_ev; ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev); - if (ecore_imf_context_filter_event(en->imf_context, - ECORE_IMF_EVENT_KEY_DOWN, - (Ecore_IMF_Event *)&ecore_ev)) - return; + if (!en->composing) + { + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_KEY_DOWN, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } } #endif @@ -1186,6 +1216,7 @@ cursor_changed = EINA_FALSE; if (!strcmp(ev->keyname, "Escape")) { + _compose_seq_reset(en); // dead keys here. Escape for now (should emit these) _edje_emit(ed, "entry,key,escape", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; @@ -1193,6 +1224,7 @@ else if (!strcmp(ev->keyname, "Up") || (!strcmp(ev->keyname, "KP_Up") && !ev->string)) { + _compose_seq_reset(en); if (multiline) { if (en->select_allow) @@ -1214,6 +1246,7 @@ else if (!strcmp(ev->keyname, "Down") || (!strcmp(ev->keyname, "KP_Down") && !ev->string)) { + _compose_seq_reset(en); if (multiline) { if (en->select_allow) @@ -1235,6 +1268,7 @@ else if (!strcmp(ev->keyname, "Left") || (!strcmp(ev->keyname, "KP_Left") && !ev->string)) { + _compose_seq_reset(en); if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); @@ -1255,6 +1289,7 @@ else if (!strcmp(ev->keyname, "Right") || (!strcmp(ev->keyname, "KP_Right") && !ev->string)) { + _compose_seq_reset(en); if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); @@ -1274,6 +1309,7 @@ } else if (!strcmp(ev->keyname, "BackSpace")) { + _compose_seq_reset(en); if (control && !en->have_selection) { // del to start of previous word @@ -1312,6 +1348,7 @@ else if (!strcmp(ev->keyname, "Delete") || (!strcmp(ev->keyname, "KP_Delete") && !ev->string)) { + _compose_seq_reset(en); if (control) { // del to end of next word @@ -1347,6 +1384,7 @@ else if (!strcmp(ev->keyname, "Home") || ((!strcmp(ev->keyname, "KP_Home")) && !ev->string)) { + _compose_seq_reset(en); if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); @@ -1366,6 +1404,7 @@ else if (!strcmp(ev->keyname, "End") || ((!strcmp(ev->keyname, "KP_End")) && !ev->string)) { + _compose_seq_reset(en); if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); @@ -1384,12 +1423,14 @@ } else if ((control) && (!shift) && (!strcmp(ev->keyname, "v"))) { + _compose_seq_reset(en); _edje_emit(ed, "entry,paste,request", rp->part->name); _edje_emit(ed, "entry,paste,request,3", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!strcmp(ev->keyname, "a"))) { + _compose_seq_reset(en); if (shift) { _edje_emit(ed, "entry,selection,none,request", rp->part->name); @@ -1403,16 +1444,19 @@ } else if ((control) && (((!shift) && !strcmp(ev->keyname, "c")) || !strcmp(ev->keyname, "Insert"))) { + _compose_seq_reset(en); _edje_emit(ed, "entry,copy,notify", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!shift) && ((!strcmp(ev->keyname, "x") || (!strcmp(ev->keyname, "m"))))) { + _compose_seq_reset(en); _edje_emit(ed, "entry,cut,notify", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!strcmp(ev->keyname, "z"))) { + _compose_seq_reset(en); if (shift) { // redo @@ -1427,18 +1471,21 @@ } else if ((control) && (!shift) && (!strcmp(ev->keyname, "y"))) { + _compose_seq_reset(en); // redo _edje_emit(ed, "entry,redo,request", rp->part->name); ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if ((control) && (!shift) && (!strcmp(ev->keyname, "w"))) { + _compose_seq_reset(en); _sel_clear(en->cursor, rp->object, en); // select current word? ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->keyname, "Tab")) { + _compose_seq_reset(en); if (multiline) { if (shift) @@ -1473,12 +1520,14 @@ } else if ((!strcmp(ev->keyname, "ISO_Left_Tab")) && (multiline)) { + _compose_seq_reset(en); // remove a tab ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } else if (!strcmp(ev->keyname, "Prior") || (!strcmp(ev->keyname, "KP_Prior") && !ev->string)) { + _compose_seq_reset(en); if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); @@ -1496,6 +1545,7 @@ else if (!strcmp(ev->keyname, "Next") || (!strcmp(ev->keyname, "KP_Next") && !ev->string)) { + _compose_seq_reset(en); if (en->select_allow) { if (shift) _sel_start(en->cursor, rp->object, en); @@ -1512,6 +1562,7 @@ } else if ((!strcmp(ev->keyname, "Return")) || (!strcmp(ev->keyname, "KP_Enter"))) { + _compose_seq_reset(en); if (multiline) { Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); @@ -1552,12 +1603,43 @@ } else { - if (ev->string) + char *compres = NULL, *string = (char *)ev->string; + Eina_Bool free_string = EINA_FALSE; + Ecore_Compose_State state; + + if (!en->composing) { + _compose_seq_reset(en); + en->seq = eina_list_append(en->seq, eina_stringshare_add(ev->key)); + state = ecore_compose_get(en->seq, &compres); + if (state == ECORE_COMPOSE_MIDDLE) en->composing = EINA_TRUE; + else en->composing = EINA_FALSE; + if (!en->composing) _compose_seq_reset(en); + else goto end; + } + else + { + if (_is_modifier(ev->key)) goto end; + en->seq = eina_list_append(en->seq, eina_stringshare_add(ev->key)); + state = ecore_compose_get(en->seq, &compres); + if (state == ECORE_COMPOSE_NONE) _compose_seq_reset(en); + else if (state == ECORE_COMPOSE_DONE) + { + _compose_seq_reset(en); + if (compres) + { + string = compres; + free_string = EINA_TRUE; + } + } + else goto end; + } + if (string) + { Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); info->insert = EINA_TRUE; info->change.insert.plain_length = 1; - info->change.insert.content = eina_stringshare_add(ev->string); + info->change.insert.content = eina_stringshare_add(string); if (en->have_selection) { @@ -1573,7 +1655,7 @@ { _edje_entry_hide_visible_password(en->rp); _text_filter_format_prepend(en, en->cursor, "+ password=off"); - _text_filter_text_prepend(en, en->cursor, ev->string); + _text_filter_text_prepend(en, en->cursor, string); _text_filter_format_prepend(en, en->cursor, "- password"); if (en->pw_timer) { @@ -1584,7 +1666,7 @@ _password_timer_cb, en); } else - _text_filter_text_prepend(en, en->cursor, ev->string); + _text_filter_text_prepend(en, en->cursor, string); _anchors_get(en->cursor, rp->object, en); _edje_emit(ed, "entry,changed", rp->part->name); _edje_emit_full(ed, "entry,changed,user", rp->part->name, @@ -1593,7 +1675,9 @@ cursor_changed = EINA_TRUE; ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; } + if (free_string) free(string); } +end: if (!cursor_changed && (old_cur_pos != evas_textblock_cursor_pos_get(en->cursor))) _edje_emit(ed, "cursor,changed", rp->part->name); @@ -2292,7 +2376,8 @@ ecore_imf_shutdown(); } #endif - + _compose_seq_reset(en); + free(en); } |
From: Enlightenment S. <no-...@en...> - 2012-09-12 09:02:10
|
Log: actually ecore_x is not needed. :) Author: raster Date: 2012-09-12 02:01:59 -0700 (Wed, 12 Sep 2012) New Revision: 76509 Trac: http://trac.enlightenment.org/e/changeset/76509 Modified: trunk/edje/src/lib/Edje.h Modified: trunk/edje/src/lib/Edje.h =================================================================== --- trunk/edje/src/lib/Edje.h 2012-09-12 08:47:59 UTC (rev 76508) +++ trunk/edje/src/lib/Edje.h 2012-09-12 09:01:59 UTC (rev 76509) @@ -70,7 +70,7 @@ minimum. You will also need the buffer engine (which requires the software_generic engine) as well. -Ecore (library) needs the ECORE, ECORE_EVAS and ECORE_X modules built at a minimum. +Ecore (library) needs the ECORE and ECORE_EVAS modules built at a minimum. It's suggested to build all the Ecore modules. You will beed the Buffer engine support built into Ecore_Evas for edje_cc to function. |
From: Enlightenment S. <no-...@en...> - 2012-10-10 08:06:36
|
Log: From: KoziarekBeata <b.k...@sa...> Subject: [E-devel] [Edje][Patch] Patch with NULL checks for some functions in edje_entry file This patch contains NULL checks for some functions in edje_entry file. Lack of these NULL checks after calling these function causes segmentation faults. Author: raster Date: 2012-10-10 01:06:27 -0700 (Wed, 10 Oct 2012) New Revision: 77719 Trac: http://trac.enlightenment.org/e/changeset/77719 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2012-10-10 08:04:46 UTC (rev 77718) +++ trunk/edje/src/lib/edje_entry.c 2012-10-10 08:06:27 UTC (rev 77719) @@ -217,6 +217,7 @@ Edje_Text_Insert_Filter_Callback *cb; Eina_List *l; + EINA_SAFETY_ON_NULL_RETURN(text); text2 = strdup(text); EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) { @@ -243,6 +244,7 @@ Edje_Text_Insert_Filter_Callback *cb; Eina_List *l; + EINA_SAFETY_ON_NULL_RETURN(text); text2 = strdup(text); EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) { @@ -319,6 +321,7 @@ Edje_Text_Insert_Filter_Callback *cb; Eina_List *l; + EINA_SAFETY_ON_NULL_RETURN(text); text2 = strdup(text); EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) { |
From: Enlightenment S. <no-...@en...> - 2012-11-11 08:02:53
|
Log: remove a memcpy and strlen and just delcare (sure compiler places bytes on stack for us as opposed to memcpy... let's assume it'll be as good as memcpy or better :)). Author: raster Date: 2012-11-11 00:02:43 -0800 (Sun, 11 Nov 2012) New Revision: 79106 Trac: http://trac.enlightenment.org/e/changeset/79106 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2012-11-11 07:51:22 UTC (rev 79105) +++ trunk/edje/src/lib/edje_calc.c 2012-11-11 08:02:43 UTC (rev 79106) @@ -447,12 +447,10 @@ } else { - char buf[1024]; + char buf[1024] = "edje/images/"; /* Replace snprint("edje/images/%i") == memcpy + itoa */ -#define IMAGES "edje/images/" - memcpy(buf, IMAGES, strlen(IMAGES)); - eina_convert_itoa(image_id, buf + strlen(IMAGES)); /* No need to check length as 2³² need only 10 characteres. */ + eina_convert_itoa(image_id, buf + 12); /* No need to check length as 2³² need only 10 characteres. */ evas_object_image_file_set(ep->object, ed->file->path, buf); if (evas_object_image_load_error_get(ep->object) != EVAS_LOAD_ERROR_NONE) |
From: Enlightenment S. <no-...@en...> - 2012-11-11 08:26:32
|
Log: improve readability of image find in edje. :) Author: raster Date: 2012-11-11 00:26:25 -0800 (Sun, 11 Nov 2012) New Revision: 79107 Trac: http://trac.enlightenment.org/e/changeset/79107 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2012-11-11 08:02:43 UTC (rev 79106) +++ trunk/edje/src/lib/edje_calc.c 2012-11-11 08:26:25 UTC (rev 79107) @@ -315,67 +315,63 @@ } static int -_edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part_Description_Image *st, Edje_Part_Image_Id *imid) +_edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, + Edje_Part_Description_Image *st, Edje_Part_Image_Id *imid) { - Edje_Image_Directory_Set_Entry *entry; - Edje_Image_Directory_Set *set = NULL; - Eina_List *l; - int w = 0; - int h = 0; - int id; - - if (!st && !imid) - return -1; - - if (st && !st->image.set) - return st->image.id; - - if (imid && !imid->set) - return imid->id; - - if (imid) - id = imid->id; - else - id = st->image.id; - - evas_object_geometry_get(obj, NULL, NULL, &w, &h); - - if (eps && *eps) - { - if ((*eps)->id == id) - set = (*eps)->set; - - if (set) - if ((*eps)->entry->size.min.w <= w && w <= (*eps)->entry->size.max.w) - if ((*eps)->entry->size.min.h <= h && h <= (*eps)->entry->size.max.h) - return (*eps)->entry->id; - } - - if (!set) - set = ed->file->image_dir->sets + id; - - EINA_LIST_FOREACH(set->entries, l, entry) - { - if (entry->size.min.w <= w && w <= entry->size.max.w) - if (entry->size.min.h <= h && h <= entry->size.max.h) - { - if (eps) - { - if (!*eps) - *eps = calloc(1, sizeof (Edje_Real_Part_Set)); - - if (*eps) - { - (*eps)->entry = entry; - (*eps)->set = set; - (*eps)->id = id; - } - } - return entry->id; - } - } - - return -1; + Edje_Image_Directory_Set_Entry *entry; + Edje_Image_Directory_Set *set = NULL; + Eina_List *l; + int w = 0, h = 0, id; + + if (!st && !imid) return -1; + if (st && !st->image.set) return st->image.id; + if (imid && !imid->set) return imid->id; + + if (imid) id = imid->id; + else id = st->image.id; + + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + if (eps && *eps) + { + if ((*eps)->id == id) set = (*eps)->set; + if (set) + { + if (((*eps)->entry->size.min.w <= w) && + (w <= (*eps)->entry->size.max.w)) + { + if (((*eps)->entry->size.min.h <= h) && + (h <= (*eps)->entry->size.max.h)) + { + return (*eps)->entry->id; + } + } + } + } + + if (!set) set = ed->file->image_dir->sets + id; + + EINA_LIST_FOREACH(set->entries, l, entry) + { + if ((entry->size.min.w <= w) && (w <= entry->size.max.w)) + { + if ((entry->size.min.h <= h) && (h <= entry->size.max.h)) + { + if (eps) + { + if (!*eps) *eps = calloc(1, sizeof(Edje_Real_Part_Set)); + if (*eps) + { + (*eps)->entry = entry; + (*eps)->set = set; + (*eps)->id = id; + } + } + return entry->id; + } + } + } + + return -1; } static void |
From: Enlightenment S. <no-...@en...> - 2012-12-08 15:19:10
|
Log: lets not add all sorts of null object access fun! Author: raster Date: 2012-12-08 07:19:00 -0800 (Sat, 08 Dec 2012) New Revision: 80523 Trac: http://trac.enlightenment.org/e/changeset/80523 Modified: trunk/edje/src/lib/edje_calc.c Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2012-12-08 14:43:19 UTC (rev 80522) +++ trunk/edje/src/lib/edje_calc.c 2012-12-08 15:19:00 UTC (rev 80523) @@ -3319,9 +3319,10 @@ } else { - eo_do(mo, - evas_obj_map_set(map), - evas_obj_map_enable_set(1)); + if (mo) + eo_do(mo, + evas_obj_map_set(map), + evas_obj_map_enable_set(1)); } } else @@ -3338,9 +3339,10 @@ if (!ep->body) { #endif - eo_do(mo, - evas_obj_map_enable_set(0), - evas_obj_map_set(NULL)); + if (mo) + eo_do(mo, + evas_obj_map_enable_set(0), + evas_obj_map_set(NULL)); #ifdef HAVE_EPHYSICS } #endif |
From: Christopher M. <cpm...@co...> - 2008-09-10 07:13:41
|
Hmmm, timing ? Suspect.... small/large...all the same.. dH no-...@en... wrote: > Author: raster > Date: 2008-09-09 23:39:57 -0700 (Tue, 09 Sep 2008) > New Revision: 35922 > > Modified: > trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c > Log: > > fix scaling on edje_scale - works with smnall sizes now too. problem is > really i was chasing a freeze/thaw problem. something is up. > > > > Modified: trunk/edje/src/lib/edje_calc.c > =================================================================== > --- trunk/edje/src/lib/edje_calc.c 2008-09-10 05:47:13 UTC (rev 35921) > +++ trunk/edje/src/lib/edje_calc.c 2008-09-10 06:39:57 UTC (rev 35922) > @@ -138,9 +138,13 @@ > { > int i; > > - if (!ed->dirty) return; > - if (ed->freeze) > + if (!ed->dirty) > { > + return; > + } > + if ((ed->freeze > 0) || (_edje_freeze_val > 0)) > + { > + _edje_freeze_calc_count++; > ed->recalc = 1; > if (!ed->calc_only) return; > } > @@ -257,45 +261,79 @@ > // if (flags & FLAG_X) > { > minw = desc->min.w; > - if (ep->swallow_params.min.w > desc->min.w) minw = ep->swallow_params.min.w; > + if (ep->part->scale) minw = (int)(((double)minw) * _edje_scale); > + if (ep->swallow_params.min.w > desc->min.w) > + minw = ep->swallow_params.min.w; > > /* XXX TODO: remove need of EDJE_INF_MAX_W, see edje_util.c */ > if ((ep->swallow_params.max.w <= 0) || > (ep->swallow_params.max.w == EDJE_INF_MAX_W)) > - maxw = desc->max.w; > + { > + maxw = desc->max.w; > + if (maxw > 0) > + { > + if (ep->part->scale) maxw = (int)(((double)maxw) * _edje_scale); > + if (maxw < 1) maxw = 1; > + } > + } > else > { > if (desc->max.w <= 0) > maxw = ep->swallow_params.max.w; > else > - maxw = MIN(ep->swallow_params.max.w, desc->max.w); > + { > + maxw = desc->max.w; > + if (maxw > 0) > + { > + if (ep->part->scale) maxw = (int)(((double)maxw) * _edje_scale); > + if (maxw < 1) maxw = 1; > + } > + if (ep->swallow_params.max.w < maxw) > + maxw = ep->swallow_params.max.w; > + } > } > - if (ep->part->scale) > + if (maxw >= 0) > { > - minw *= _edje_scale; > - maxw *= _edje_scale; > + if (maxw < minw) maxw = minw; > } > } > // if (flags & FLAG_Y) > { > minh = desc->min.h; > - if (ep->swallow_params.min.h > desc->min.h) minh = ep->swallow_params.min.h; > + if (ep->part->scale) minh = (int)(((double)minh) * _edje_scale); > + if (ep->swallow_params.min.h > desc->min.h) > + minh = ep->swallow_params.min.h; > > /* XXX TODO: remove need of EDJE_INF_MAX_H, see edje_util.c */ > if ((ep->swallow_params.max.h <= 0) || > (ep->swallow_params.max.h == EDJE_INF_MAX_H)) > - maxh = desc->max.h; > + { > + maxh = desc->max.h; > + if (maxh > 0) > + { > + if (ep->part->scale) maxh = (int)(((double)maxh) * _edje_scale); > + if (maxh < 1) maxh = 1; > + } > + } > else > { > if (desc->max.h <= 0) > maxh = ep->swallow_params.max.h; > else > - maxh = MIN(ep->swallow_params.max.h, desc->max.h); > + { > + maxh = desc->max.h; > + if (maxh > 0) > + { > + if (ep->part->scale) maxh = (int)(((double)maxh) * _edje_scale); > + if (maxh < 1) maxh = 1; > + } > + if (ep->swallow_params.max.h < maxh) > + maxh = ep->swallow_params.max.h; > + } > } > - if (ep->part->scale) > + if (maxh >= 0) > { > - minh *= _edje_scale; > - maxh *= _edje_scale; > + if (maxh < minh) maxh = minh; > } > } > /* relative coords of top left & bottom right */ > > Modified: trunk/edje/src/lib/edje_private.h > =================================================================== > --- trunk/edje/src/lib/edje_private.h 2008-09-10 05:47:13 UTC (rev 35921) > +++ trunk/edje/src/lib/edje_private.h 2008-09-10 06:39:57 UTC (rev 35922) > @@ -1004,6 +1004,8 @@ > > extern char *_edje_fontset_append; > extern double _edje_scale; > +extern int _edje_freeze_val; > +extern int _edje_freeze_calc_count; > > void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, double pos); > Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, double val); > > Modified: trunk/edje/src/lib/edje_util.c > =================================================================== > --- trunk/edje/src/lib/edje_util.c 2008-09-10 05:47:13 UTC (rev 35921) > +++ trunk/edje/src/lib/edje_util.c 2008-09-10 06:39:57 UTC (rev 35922) > @@ -12,6 +12,8 @@ > > char *_edje_fontset_append = NULL; > double _edje_scale = 1.0; > +int _edje_freeze_val = 0; > +int _edje_freeze_calc_count = 0; > > typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data; > > @@ -29,6 +31,8 @@ > > /* FIXDOC: These all need to be looked over, Verified/Expanded upon. I just got lazy and stopped putting FIXDOC next to each function in this file. */ > > +//#define FASTFREEZE 1 > + > /** Freeze all Edje objects in the current process. > * > * See edje_object_freeze() for more. > @@ -36,11 +40,17 @@ > EAPI void > edje_freeze(void) > { > +#ifdef FASTFREEZE > + _edje_freeze_val++; > + printf("fr ++ ->%i\n", _edje_freeze_val); > +#else > +// FIXME: could just have a global freeze instead of per object > +// above i tried.. but this broke some things. notable e17's menus. why? > Evas_List *l; > > - // FIXME: could just have a global freeze instead of per object > for (l = _edje_edjes; l; l = l->next) > edje_object_freeze((Evas_Object *)(l->data)); > +#endif > } > > /** Thaw all Edje objects in the current process. > @@ -50,11 +60,39 @@ > EAPI void > edje_thaw(void) > { > +#ifdef FASTFREEZE > + _edje_freeze_val--; > + printf("fr -- ->%i\n", _edje_freeze_val); > + if ((_edje_freeze_val == 0) && (_edje_freeze_calc_count > 0)) > + { > + Evas_List *l; > + > + _edje_freeze_calc_count = 0; > + for (l = _edje_edjes; l; l = l->next) > + { > + Edje *ed; > + > + ed = _edje_fetch(l->data); > + if (ed->recalc) > + { > + if (ed->freeze == 0) > + { > + printf(" CALC %p\n", l->data); > + _edje_recalc(ed); > + } > + else > + printf(" !CALC %p\n", l->data); > + } > + } > + } > +#else > +// FIXME: could just have a global freeze instead of per object > +// comment as above.. why? > Evas_List *l; > > - // FIXME: could just have a global freeze instead of per object > for (l = _edje_edjes; l; l = l->next) > edje_object_thaw((Evas_Object *)(l->data)); > +#endif > } > > /* FIXDOC: Expand */ > @@ -1138,15 +1176,22 @@ > edje_object_calc_force(Evas_Object *obj) > { > Edje *ed; > - int pf; > + int pf, pf2; > > ed = _edje_fetch(obj); > if (!ed) return; > ed->dirty = 1; > + > + pf2 = _edje_freeze_val; > pf = ed->freeze; > + > + _edje_freeze_val = 0; > ed->freeze = 0; > + > _edje_recalc(ed); > + > ed->freeze = pf; > + _edje_freeze_val = pf2; > } > > /** Calculate minimum size > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > enlightenment-svn mailing list > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn > |