[EGIT] [core/efl] master 03/04: evas: introduce a log domain to monitor which object gets focus
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=dda350e3b4b59f7457d4f6d1191f6870333d7fc4 commit dda350e3b4b59f7457d4f6d1191f6870333d7fc4 Author: Marcel HollerbachDate: Thu May 10 11:55:43 2018 +0200 evas: introduce a log domain to monitor which object gets focus --- src/lib/evas/canvas/evas_focus.c| 25 + src/lib/evas/canvas/evas_main.c | 3 +++ src/lib/evas/include/evas_private.h | 3 +++ 3 files changed, 31 insertions(+) diff --git a/src/lib/evas/canvas/evas_focus.c b/src/lib/evas/canvas/evas_focus.c index b2977e141a..9af9734da5 100644 --- a/src/lib/evas/canvas/evas_focus.c +++ b/src/lib/evas/canvas/evas_focus.c @@ -5,12 +5,33 @@ #include "evas_private.h" #include "interfaces/efl_common_internal.h" + +static int evas_focus_log_domain = -1; + +#define F_CRI(...) EINA_LOG_DOM_CRIT(evas_focus_log_domain, __VA_ARGS__) +#define F_ERR(...) EINA_LOG_DOM_ERR(evas_focus_log_domain, __VA_ARGS__) +#define F_WRN(...) EINA_LOG_DOM_WARN(evas_focus_log_domain, __VA_ARGS__) +#define F_INF(...) EINA_LOG_DOM_INFO(evas_focus_log_domain, __VA_ARGS__) +#define F_DBG(...) EINA_LOG_DOM_DBG(evas_focus_log_domain, __VA_ARGS__) + /* private calls */ /* local calls */ /* public calls */ +void +evas_focus_init(void) +{ + evas_focus_log_domain = eina_log_domain_register("evas-focus", "red"); +} + +void +evas_focus_shutdown(void) +{ + eina_log_domain_unregister(evas_focus_log_domain); + evas_focus_log_domain = -1; +} static Eina_Bool _already_focused(Eina_List *seats, Efl_Input_Device *seat) @@ -38,6 +59,8 @@ _default_seat_get(const Eo *evas_obj) return edata->default_seat; } +#define DEBUG_TUPLE(v) v, (v ? efl_class_name_get(v) : "(null)") + static void _evas_focus_set(Eo *evas_obj, Efl_Input_Device *key, Eina_Bool focus) { @@ -47,6 +70,8 @@ _evas_focus_set(Eo *evas_obj, Efl_Input_Device *key, Eina_Bool focus) EINA_SAFETY_ON_NULL_RETURN(evas); edata = efl_data_scope_get(evas, EVAS_CANVAS_CLASS); + F_DBG("Focus moved in %d from (%p,%s) to (%p,%s)", efl_input_device_seat_id_get(key), DEBUG_TUPLE(eina_hash_find(edata->focused_objects, )), DEBUG_TUPLE(evas_obj)); + if (focus) eina_hash_add(edata->focused_objects, , evas_obj); else diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c index 0e1cf93020..62b996f6e6 100644 --- a/src/lib/evas/canvas/evas_main.c +++ b/src/lib/evas/canvas/evas_main.c @@ -96,6 +96,7 @@ evas_init(void) EINA_LOG_STATE_INIT); _efl_gfx_map_init(); + evas_focus_init(); return _evas_init_count; @@ -141,6 +142,8 @@ evas_shutdown(void) EINA_LOG_STATE_START, EINA_LOG_STATE_SHUTDOWN); + evas_focus_shutdown(); + evas_common_shutdown(); #ifdef EVAS_CSERVE2 diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index a1dfa263f4..08bfcd4d06 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1909,6 +1909,9 @@ void _efl_canvas_gesture_manager_filter_event(Eo *gesture_manager, Eo *target, v void _efl_canvas_gesture_manager_callback_del_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type); void _efl_canvas_gesture_manager_callback_add_hook(Eo *gesture_manager, Eo *target, const Efl_Event_Description *type); +//evas focus functions +void evas_focus_init(void); +void evas_focus_shutdown(void); extern Eina_Cow *evas_object_proxy_cow; extern Eina_Cow *evas_object_map_cow; --
[EGIT] [core/efl] master 02/04: efl_ui_focus_manager_root_focus: restructure state eval
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8e104d5bfeb8ca22f5178065ee5bcae380a65600 commit 8e104d5bfeb8ca22f5178065ee5bcae380a65600 Author: Marcel HollerbachDate: Wed May 9 21:48:12 2018 +0200 efl_ui_focus_manager_root_focus: restructure state eval registering and unregsitering caused a few issues. - Relations are recalculated even if they should not be - We unfocus a element just to refocus it again - We loose any iinformation about custom chains that have been set meanwhile This fixes it --- .../elementary/efl_ui_focus_manager_root_focus.c | 32 +++--- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_root_focus.c b/src/lib/elementary/efl_ui_focus_manager_root_focus.c index 639487b9d9..dfb8715dbf 100644 --- a/src/lib/elementary/efl_ui_focus_manager_root_focus.c +++ b/src/lib/elementary/efl_ui_focus_manager_root_focus.c @@ -31,35 +31,35 @@ _trap(Efl_Ui_Focus_Manager_Root_Focus_Data *pd, Efl_Ui_Focus_Object *obj) static void _state_eval(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) { - Efl_Ui_Focus_Object *root; - Eina_Bool none_logical = EINA_FALSE, focused = EINA_FALSE; + Efl_Ui_Focus_Object *sub; - if (pd->rect_registered) + sub = efl_ui_focus_manager_request_subchild(obj, efl_ui_focus_manager_root_get(obj)); + + if (sub == pd->rect) { -focused = efl_ui_focus_object_focus_get(pd->rect); -efl_ui_focus_manager_calc_unregister(obj, pd->rect); +sub = efl_ui_focus_manager_request_move(obj, EFL_UI_FOCUS_DIRECTION_NEXT, pd->rect, EINA_FALSE); +if (sub == pd->rect) + sub = NULL; } - root = efl_ui_focus_manager_root_get(obj); - none_logical = !!efl_ui_focus_manager_request_subchild(obj, root); + EINA_SAFETY_ON_TRUE_RETURN(sub == pd->rect); - if (none_logical) + if (sub && pd->rect_registered) { +efl_ui_focus_manager_calc_unregister(obj, pd->rect); pd->rect_registered = EINA_FALSE; efl_ui_focus_composition_adapter_focus_manager_parent_set(pd->rect, NULL); efl_ui_focus_composition_adapter_focus_manager_object_set(pd->rect, NULL); } - else + else if (!sub && !pd->rect_registered) { -efl_ui_focus_manager_calc_register(obj, pd->rect, pd->replacement_object, NULL); -pd->rect_registered = EINA_TRUE; +Efl_Ui_Focus_Object *root; -efl_ui_focus_composition_adapter_focus_manager_parent_set(pd->rect, pd->replacement_object); +root = efl_ui_focus_manager_root_get(obj); +efl_ui_focus_manager_calc_register(obj, pd->rect, root, NULL); +efl_ui_focus_composition_adapter_focus_manager_parent_set(pd->rect, root); efl_ui_focus_composition_adapter_focus_manager_object_set(pd->rect, obj); - -if (focused) - efl_ui_focus_manager_focus_set(obj, pd->rect); - +pd->rect_registered = EINA_TRUE; } } --
[EGIT] [core/efl] feature/themes/flat 01/01: TH - fix content sizing min in icons with shared text def + fix btn
raster pushed a commit to branch feature/themes/flat. http://git.enlightenment.org/core/efl.git/commit/?id=8197c18ff88c6e1aaf48486331f0d4b3fde5a6f4 commit 8197c18ff88c6e1aaf48486331f0d4b3fde5a6f4 Author: Carsten Haitzler (Rasterman)Date: Thu May 10 21:31:07 2018 +0900 TH - fix content sizing min in icons with shared text def + fix btn --- data/elementary/themes/edc/elm/bubble.edc| 8 +++--- data/elementary/themes/edc/elm/button.edc| 41 +--- data/elementary/themes/edc/elm/check.edc | 8 +++--- data/elementary/themes/edc/elm/genlist.edc | 2 +- data/elementary/themes/edc/elm/naviframe.edc | 6 ++-- data/elementary/themes/edc/elm/progress.edc | 4 +-- data/elementary/themes/edc/elm/radio.edc | 4 +-- data/elementary/themes/edc/elm/slider.edc| 16 +-- data/elementary/themes/macros.edc| 1 + 9 files changed, 44 insertions(+), 46 deletions(-) diff --git a/data/elementary/themes/edc/elm/bubble.edc b/data/elementary/themes/edc/elm/bubble.edc index 3ddbdec7d4..c0eabdb62e 100644 --- a/data/elementary/themes/edc/elm/bubble.edc +++ b/data/elementary/themes/edc/elm/bubble.edc @@ -43,7 +43,7 @@ group { name: "elm/bubble/top_left/default"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } } @@ -192,7 +192,7 @@ group { name: "elm/bubble/top_right/default"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } } @@ -339,7 +339,7 @@ group { name: "elm/bubble/bottom_left/default"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } } @@ -488,7 +488,7 @@ group { name: "elm/bubble/bottom_right/default"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } } diff --git a/data/elementary/themes/edc/elm/button.edc b/data/elementary/themes/edc/elm/button.edc index 91e94078f8..363104c94f 100644 --- a/data/elementary/themes/edc/elm/button.edc +++ b/data/elementary/themes/edc/elm/button.edc @@ -72,6 +72,7 @@ group { name: "elm/button/base/default"; text { "sizer.content"; nomouse; scale: 1; desc { "default"; +fixed: 1 1; visible: 0; text { font: FN; size: 10; min: 0 0; @@ -83,15 +84,16 @@ group { name: "elm/button/base/default"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } desc { "icononly"; inherit; +fixed: 0 0; rel.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } } @@ -371,30 +373,28 @@ group { name: "elm/button/base/anchor"; text { "sizer.content"; nomouse; scale: 1; desc { "default"; +fixed: 1 1; visible: 0; text { font: FN; size: 10; min: 0 0; text_class: "button_text"; } } - desc { "visible"; -inherit: "default"; -rel1.to: "elm.swallow.content"; -rel2.to: "elm.swallow.content"; + desc { "visible"; inherit; +rel.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } - desc { "icononly"; -inherit: "default"; -rel1.to: "elm.swallow.content"; -rel2.to: "elm.swallow.content"; + desc { "icononly"; inherit; +fixed: 0 0; +rel.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } } @@ -855,24 +855,21 @@ group { name: "elm/button/base/hoversel_vertical_entry/default"; text_class: "button_text"; } } - desc { "visible"; -inherit: "default"; -rel1.to: "elm.swallow.content"; -rel2.to: "elm.swallow.content"; + desc { "visible"; inherit; +rel.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; - text: "M"; + text: SPACER_TEXT; } } - desc { "icononly"; -inherit: "default"; -rel1.to: "elm.swallow.content"; -
[EGIT] [core/efl] feature/themes/flat 01/01: TH - done flat progressbar now.
raster pushed a commit to branch feature/themes/flat. http://git.enlightenment.org/core/efl.git/commit/?id=587679b92c2ff5f761c2ddcd0c2549a196cf28f8 commit 587679b92c2ff5f761c2ddcd0c2549a196cf28f8 Author: Carsten Haitzler (Rasterman)Date: Thu May 10 21:16:36 2018 +0900 TH - done flat progressbar now. --- data/elementary/themes/edc/elm/progress.edc | 962 ++-- data/elementary/themes/img/spinner-16.png | Bin 0 -> 199 bytes data/elementary/themes/img/spinner-32.png | Bin 0 -> 356 bytes data/elementary/themes/img/spinner-8.png| Bin 0 -> 135 bytes 4 files changed, 352 insertions(+), 610 deletions(-) diff --git a/data/elementary/themes/edc/elm/progress.edc b/data/elementary/themes/edc/elm/progress.edc index 703fe46d7a..63dca9f0e3 100644 --- a/data/elementary/themes/edc/elm/progress.edc +++ b/data/elementary/themes/edc/elm/progress.edc @@ -1,14 +1,4 @@ group { name: "elm/progressbar/horizontal/default"; - images.image: "inset_bar_horiz_base.png" COMP; - images.image: "inset_bar_horiz_light.png" COMP; - images.image: "inset_bar_horiz_inside_base.png" COMP; - images.image: "inset_bar_horiz_inside_light.png" COMP; - images.image: "inset_bar_horiz_glow_base.png" COMP; - images.image: "inset_bar_horiz_glow_light.png" COMP; - images.image: "inset_bar_horiz_glow_inv_base.png" COMP; - images.image: "inset_bar_horiz_glow_inv_light.png" COMP; - images.image: "inset_bar_horiz_glow_mid_base.png" COMP; - images.image: "inset_bar_horiz_glow_mid_light.png" COMP; #define ICON1 #define LABEL 2 #define DISABLE 4 @@ -30,9 +20,16 @@ group { name: "elm/progressbar/horizontal/default"; if (ic) { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); +set_state(PART:"bg", "iclabel", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); +if (l) { + set_state(PART:"bg", "iclabel", 0.0); +} +else { + set_state(PART:"bg", "default", 0.0); +} } if (!d) { set_state(PART:"dis_clip", "default", 0.0); @@ -74,21 +71,23 @@ group { name: "elm/progressbar/horizontal/default"; } } part { name: "elm.swallow.content"; type: SWALLOW; + scale: 1; clip_to: "dis_clip"; description { state: "default" 0.0; visible: 0; align: 0.0 0.5; fixed: 1 0; -rel1.offset: 0 2; -rel2.offset: -1 -3; +rel1.offset: 0 4; +rel2.offset: -1 -5; rel2.relative: 0.0 1.0; +offscale; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; aspect: 1.0 1.0; aspect_preference: VERTICAL; -rel1.offset: 2 2; -rel2.offset: 2 -3; +rel1.offset: 4 4; +rel2.offset: 4 -5; } } part { name: "sizer.content"; type: TEXT; mouse_events: 0; @@ -113,213 +112,113 @@ group { name: "elm/progressbar/horizontal/default"; } } part { name: "elm.text"; type: TEXT; mouse_events: 0; - effect: SHADOW BOTTOM; scale: 1; description { state: "default" 0.0; fixed: 1 1; align: 0.0 0.5; rel1.to_x: "elm.swallow.content"; rel1.relative: 1.0 0.0; -rel1.offset: -1 2; +rel1.offset: -1 4; rel2.to_x: "elm.swallow.content"; rel2.relative: 1.0 1.0; -rel2.offset: -1 -3; -color: FN_COL_DEFAULT; -color_class: "progressbar_text"; +rel2.offset: -1 -5; +color: 160 160 160 255; text { font: FN; size: 10; text_class: "progressbar"; min: 0 0; align: 0.0 0.5; } visible: 0; +offscale; } description { state: "visible" 0.0; inherit: "default" 0.0; fixed: 1 0; visible: 1; -rel1.offset: 2 2; -rel2.offset: 2 -3; +rel1.offset: 4 4; +rel2.offset: 4 -5; text.min: 1 1; text.ellipsis: -1; } description { state: "disabled_visible" 0.0; inherit: "visible" 0.0; -color_class: "progressbar_text_disabled"; -color: FN_COL_DISABLE_LIGHTER_SHADOW; - } - } - part { name: "bg-hi"; - description { state: "default" 0.0; -rel1.to: "bg"; -rel1.offset: 0 1; -rel2.to: "bg"; -rel2.offset: -1 0; -image.normal: "inset_bar_horiz_light.png"; -image.border: 32 32 0 0; -
[EGIT] [core/efl] master 04/04: elm_toolbar: only use the more_item if mode is correct
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6c25b38a1c1d4a2df66a880a4093876f30c5829b commit 6c25b38a1c1d4a2df66a880a4093876f30c5829b Author: Marcel HollerbachDate: Thu May 10 13:25:43 2018 +0200 elm_toolbar: only use the more_item if mode is correct the more item is only usefull for SHRINK_MENU and SHRINK_EXPAND, otherwise the item should not be there. --- src/lib/elementary/elm_toolbar.c | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_toolbar.c b/src/lib/elementary/elm_toolbar.c index 57e47e1f5a..54fd543525 100644 --- a/src/lib/elementary/elm_toolbar.c +++ b/src/lib/elementary/elm_toolbar.c @@ -4014,6 +4014,12 @@ elm_toolbar_icon_order_lookup_get(const Evas_Object *obj EINA_UNUSED) } static Eina_Bool +_more_item_is_present(Elm_Toolbar_Data *pd) +{ + return pd->shrink_mode == ELM_TOOLBAR_SHRINK_MENU || pd->shrink_mode == ELM_TOOLBAR_SHRINK_EXPAND; +} + +static Eina_Bool _part_of_chain(Elm_Toolbar_Item_Data *pd) { Eina_Bool want = EINA_TRUE; @@ -4040,7 +4046,8 @@ _elm_toolbar_efl_ui_focus_composition_prepare(Eo *obj, Elm_Toolbar_Data *pd) { if (_part_of_chain(it)) order = eina_list_append(order, EO_OBJ(it)); -if (!it->prio.visible) require_more_items = EINA_TRUE; +if (_more_item_is_present(pd) && !it->prio.visible) + require_more_items = EINA_TRUE; } if (require_more_items) --
[EGIT] [core/efl] master 01/04: efl_ui_focus_manager_root_focus: support a custom canvas object
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=05d4f0b25623243a01b00956060409a1dcd1c3cc commit 05d4f0b25623243a01b00956060409a1dcd1c3cc Author: Marcel HollerbachDate: Wed May 9 21:10:47 2018 +0200 efl_ui_focus_manager_root_focus: support a custom canvas object --- .../elementary/efl_ui_focus_manager_root_focus.c | 68 +- .../elementary/efl_ui_focus_manager_root_focus.eo | 14 + 2 files changed, 69 insertions(+), 13 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_root_focus.c b/src/lib/elementary/efl_ui_focus_manager_root_focus.c index aa0a588db4..639487b9d9 100644 --- a/src/lib/elementary/efl_ui_focus_manager_root_focus.c +++ b/src/lib/elementary/efl_ui_focus_manager_root_focus.c @@ -13,7 +13,7 @@ #define MY_CLASS EFL_UI_FOCUS_MANAGER_ROOT_FOCUS_CLASS typedef struct { - Efl_Ui_Focus_Object *root; + Efl_Ui_Focus_Object *replacement_object; Evas_Object *rect; Eina_Bool rect_registered; @@ -24,7 +24,7 @@ typedef struct { static Efl_Ui_Focus_Object* _trap(Efl_Ui_Focus_Manager_Root_Focus_Data *pd, Efl_Ui_Focus_Object *obj) { - if (pd->rect == obj) return pd->root; + if (pd->rect == obj) return pd->replacement_object; return obj; } @@ -51,10 +51,10 @@ _state_eval(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) } else { -efl_ui_focus_manager_calc_register(obj, pd->rect, pd->root, NULL); +efl_ui_focus_manager_calc_register(obj, pd->rect, pd->replacement_object, NULL); pd->rect_registered = EINA_TRUE; -efl_ui_focus_composition_adapter_focus_manager_parent_set(pd->rect, pd->root); +efl_ui_focus_composition_adapter_focus_manager_parent_set(pd->rect, pd->replacement_object); efl_ui_focus_composition_adapter_focus_manager_object_set(pd->rect, obj); if (focused) @@ -153,24 +153,66 @@ _efl_ui_focus_manager_root_focus_efl_ui_focus_manager_move(Eo *obj, Efl_Ui_Focus return _trap(pd, efl_ui_focus_manager_move(efl_super(obj, MY_CLASS), direction)); } -EOLIAN static Efl_Object* -_efl_ui_focus_manager_root_focus_efl_object_finalize(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) +EOLIAN static Efl_Canvas_Object* +_efl_ui_focus_manager_root_focus_canvas_object_get(const Eo *obj EINA_UNUSED, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) +{ + return pd->replacement_object; +} + +EOLIAN static void +_efl_ui_focus_manager_root_focus_canvas_object_set(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd, Efl_Canvas_Object *canvas_object) { - Efl_Object *ret; - ret = efl_finalize(efl_super(obj, MY_CLASS)); + //if canvas object is NULL trigger it as root + if (!canvas_object) + canvas_object = efl_ui_focus_manager_root_get(obj); + + if (canvas_object == pd->replacement_object) return; + + if (pd->replacement_object) + { +pd->iterator_list = eina_list_remove(pd->iterator_list, pd->replacement_object); +pd->replacement_object = NULL; + } + + pd->replacement_object = canvas_object; + if (pd->replacement_object) + { +efl_ui_focus_composition_adapter_canvas_object_set(pd->rect, pd->replacement_object); +pd->iterator_list = eina_list_append(pd->iterator_list, pd->replacement_object); + + } +} - pd->root = efl_ui_focus_manager_root_get(obj); - pd->rect = efl_add(EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS, pd->root); - efl_ui_focus_composition_adapter_canvas_object_set(pd->rect, pd->root); +EOLIAN static Efl_Object* +_efl_ui_focus_manager_root_focus_efl_object_constructor(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) +{ + pd->rect = efl_add_ref(EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(pd->rect, NULL); - pd->iterator_list = eina_list_append(pd->iterator_list, pd->root); + return efl_constructor(efl_super(obj, MY_CLASS)); +} + +EOLIAN static void +_efl_ui_focus_manager_root_focus_efl_object_destructor(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) +{ + efl_unref(pd->rect); + pd->rect = NULL; + + efl_destructor(efl_super(obj, MY_CLASS)); +} + +EOLIAN static Efl_Object* +_efl_ui_focus_manager_root_focus_efl_object_finalize(Eo *obj, Efl_Ui_Focus_Manager_Root_Focus_Data *pd) +{ + //set it to NULL so the root manager is passed to the manager + if (!pd->replacement_object) + efl_ui_focus_manager_root_focus_canvas_object_set(obj, NULL); _state_eval(obj, pd); - return ret; + return efl_finalize(efl_super(obj, MY_CLASS)); } #include "efl_ui_focus_manager_root_focus.eo.c" diff --git a/src/lib/elementary/efl_ui_focus_manager_root_focus.eo b/src/lib/elementary/efl_ui_focus_manager_root_focus.eo index 4b3fe8f533..81bd312abf 100644 --- a/src/lib/elementary/efl_ui_focus_manager_root_focus.eo +++ b/src/lib/elementary/efl_ui_focus_manager_root_focus.eo @@ -1,5 +1,17 @@ class Efl.Ui.Focus.Manager_Root_Focus(Efl.Ui.Focus.Manager_Calc) {
[EGIT] [core/efl] feature/security 04/04: edje: Remove use of insecure strcpy and strcat functions
devilhorns pushed a commit to branch feature/security. http://git.enlightenment.org/core/efl.git/commit/?id=36ad61a0070f98e191d6e2550d6dcf96ccf4dc2b commit 36ad61a0070f98e191d6e2550d6dcf96ccf4dc2b Author: Chris MichaelDate: Thu May 10 11:04:20 2018 -0400 edje: Remove use of insecure strcpy and strcat functions As per the sonar report, the usage of strcpy & strcat is insecure. This patch modifies the code slightly to use the more secure strncpy & strncat functions in order to avoid potential buffer overflow vulnerability. @fix Differential Revision: https://phab.enlightenment.org/D6153 --- src/bin/edje/edje_cc_out.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index 37fde053b9..c953b8def3 100644 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c @@ -4183,8 +4183,10 @@ data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void keyl = strlen(prefix) + 2; key = alloca(keyl + 1); if (!key) return; - strcpy(key, prefix); - strcat(key, ":\""); + + strncpy(key, prefix, keyl + 1); + strncat(key, ":\"", strlen(":\"")); + quote = 0; escape = 0; for (p = s; (p) && (*p); p++) --
[EGIT] [core/efl] feature/security 02/04: edje: Remove use of insecure sprintf function
devilhorns pushed a commit to branch feature/security. http://git.enlightenment.org/core/efl.git/commit/?id=1ef58c13679ff1c6699b350008e93e041cab5cb5 commit 1ef58c13679ff1c6699b350008e93e041cab5cb5 Author: Chris MichaelDate: Thu May 10 10:54:59 2018 -0400 edje: Remove use of insecure sprintf function As per the sonar report, the usage of sprintf is insecure. This patch modifies the code slightly to use the more secure snprintf function in order to avoid potential buffer overflow vulnerability. @fix Differential Revision: https://phab.enlightenment.org/D6151 --- src/bin/edje/edje_cc_handlers.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 4d0a319943..8590f17db8 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -15310,7 +15310,9 @@ ob_collections_group_programs_program(void) /* generate new name */ def_name = alloca(strlen("program_") + strlen("") + 1); - sprintf(def_name, "program_%X", pc->programs.total_count); + snprintf(def_name, strlen("program_") + strlen("") + 1, +"program_%X", pc->programs.total_count); + ep->name = strdup(def_name); if (pcp->default_source) ep->source = strdup(pcp->default_source); --
[EGIT] [core/efl] feature/security 01/04: edje: Remove use of insecure strcat function
devilhorns pushed a commit to branch feature/security. http://git.enlightenment.org/core/efl.git/commit/?id=936e4acd75d009a56446b46bd4328b6c92fe6ce5 commit 936e4acd75d009a56446b46bd4328b6c92fe6ce5 Author: Chris MichaelDate: Thu May 10 10:47:37 2018 -0400 edje: Remove use of insecure strcat function As per the sonar report, the usage of strcat is insecure. This patch modifies the code slightly to use the more secure strncat function in order to avoid potential buffer overflow vulnerability. @fix Differential Revision: https://phab.enlightenment.org/D6150 --- src/bin/edje/edje_cc_handlers.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 6d987edb8f..4d0a319943 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -11341,7 +11341,7 @@ st_collections_group_parts_part_description_text_text(void) else { str = realloc(str, strlen(str) + strlen(s) + 1); - strcat(str, s); + strncat(str, s, strlen(str) + strlen(s) + 1); free(s); } } --
[EGIT] [core/efl] feature/security 03/04: edje: Remove use of insecure strcpy and sprintf functions
devilhorns pushed a commit to branch feature/security. http://git.enlightenment.org/core/efl.git/commit/?id=67e203a125a6fec29053f21deca7a36df7b2777c commit 67e203a125a6fec29053f21deca7a36df7b2777c Author: Chris MichaelDate: Thu May 10 10:58:36 2018 -0400 edje: Remove use of insecure strcpy and sprintf functions As per the sonar report, the usage of strcpy and sprintf are insecure. This patch modifies the code slightly to use the more secure strncpy and snprintf functions in order to avoid potential buffer overflow vulnerability. @fix Differential Revision: https://phab.enlightenment.org/D6152 --- src/bin/edje/edje_cc_out.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index f315526e4f..37fde053b9 100644 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c @@ -2541,8 +2541,8 @@ data_thread_license(void *data, Ecore_Thread *thread EINA_UNUSED) { char *s = alloca(strlen(lw->file) + 1 + 13); -strcpy(s, lw->file); -sprintf(s, "edje/license/%s", basename(s)); +strncpy(s, lw->file, strlen(lw->file) + 1 + 13); +snprintf(s, strlen(lw->file) + 1 + 13, "edje/license/%s", basename(s)); bytes = eet_write(ef, s, m, eina_file_size_get(f), compress_mode); } --
[EGIT] [core/efl] feature/security 01/01: edje: Update code to use memcpy as per review
devilhorns pushed a commit to branch feature/security. http://git.enlightenment.org/core/efl.git/commit/?id=d45812f4ed38a6869822508896cfbeb2dd30ef58 commit d45812f4ed38a6869822508896cfbeb2dd30ef58 Author: Chris MichaelDate: Thu May 10 12:11:29 2018 -0400 edje: Update code to use memcpy as per review --- src/bin/edje/edje_cc_out.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index c953b8def3..6f8ef86021 100644 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c @@ -4184,8 +4184,8 @@ data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void key = alloca(keyl + 1); if (!key) return; - strncpy(key, prefix, keyl + 1); - strncat(key, ":\"", strlen(":\"")); + memcpy(key, prefix, keyl - 1); + strncat(key, ":\"", strlen(":\"") + 1); quote = 0; escape = 0; --
[EGIT] [core/efl] master 01/01: edje_cc: Fix coverity issue of accessing invalid memory.
hermet pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fd24998fa6d5d6d13fd9522811f09b05a51f8018 commit fd24998fa6d5d6d13fd9522811f09b05a51f8018 Author: SubhransuSekhar MohantyDate: Fri May 11 13:49:23 2018 +0900 edje_cc: Fix coverity issue of accessing invalid memory. --- src/bin/edje/edje_cc_script.c | 8 +--- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/bin/edje/edje_cc_script.c b/src/bin/edje/edje_cc_script.c index c2f0b5c66b..2e52ac1c2f 100644 --- a/src/bin/edje/edje_cc_script.c +++ b/src/bin/edje/edje_cc_script.c @@ -93,6 +93,7 @@ code_parse_internal(Code *code) free(token); token = tmp; + tmp = NULL; break; } @@ -101,13 +102,6 @@ code_parse_internal(Code *code) } } -if (tmp) - { - if (tmp->str) free(tmp->str); - free(tmp); - tmp = NULL; - } - switch (token->type) { case TOKEN_TYPE_COLON: --
[EGIT] [core/efl] master 01/01: edje_cc: resolve possible dereferencing freed pointer
woohyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1b15c67c63e0c2c652d0ab39b826e777fb95381c commit 1b15c67c63e0c2c652d0ab39b826e777fb95381c Author: WooHyun JungDate: Fri May 11 10:44:55 2018 +0900 edje_cc: resolve possible dereferencing freed pointer --- src/bin/edje/edje_cc_script.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/edje/edje_cc_script.c b/src/bin/edje/edje_cc_script.c index b438737b55..c2f0b5c66b 100644 --- a/src/bin/edje/edje_cc_script.c +++ b/src/bin/edje/edje_cc_script.c @@ -225,6 +225,7 @@ code_parse_internal(Code *code) { if (tmp->str) free(tmp->str); free(tmp); + tmp = NULL; } } --