[EGIT] [core/efl] master 03/04: evas: introduce a log domain to monitor which object gets focus

2018-05-10 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=dda350e3b4b59f7457d4f6d1191f6870333d7fc4

commit dda350e3b4b59f7457d4f6d1191f6870333d7fc4
Author: Marcel Hollerbach 
Date:   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

2018-05-10 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8e104d5bfeb8ca22f5178065ee5bcae380a65600

commit 8e104d5bfeb8ca22f5178065ee5bcae380a65600
Author: Marcel Hollerbach 
Date:   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

2018-05-10 Thread Carsten Haitzler
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.

2018-05-10 Thread Carsten Haitzler
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

2018-05-10 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6c25b38a1c1d4a2df66a880a4093876f30c5829b

commit 6c25b38a1c1d4a2df66a880a4093876f30c5829b
Author: Marcel Hollerbach 
Date:   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

2018-05-10 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=05d4f0b25623243a01b00956060409a1dcd1c3cc

commit 05d4f0b25623243a01b00956060409a1dcd1c3cc
Author: Marcel Hollerbach 
Date:   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

2018-05-10 Thread Christopher Michael
devilhorns pushed a commit to branch feature/security.

http://git.enlightenment.org/core/efl.git/commit/?id=36ad61a0070f98e191d6e2550d6dcf96ccf4dc2b

commit 36ad61a0070f98e191d6e2550d6dcf96ccf4dc2b
Author: Chris Michael 
Date:   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

2018-05-10 Thread Christopher Michael
devilhorns pushed a commit to branch feature/security.

http://git.enlightenment.org/core/efl.git/commit/?id=1ef58c13679ff1c6699b350008e93e041cab5cb5

commit 1ef58c13679ff1c6699b350008e93e041cab5cb5
Author: Chris Michael 
Date:   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

2018-05-10 Thread Christopher Michael
devilhorns pushed a commit to branch feature/security.

http://git.enlightenment.org/core/efl.git/commit/?id=936e4acd75d009a56446b46bd4328b6c92fe6ce5

commit 936e4acd75d009a56446b46bd4328b6c92fe6ce5
Author: Chris Michael 
Date:   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

2018-05-10 Thread Christopher Michael
devilhorns pushed a commit to branch feature/security.

http://git.enlightenment.org/core/efl.git/commit/?id=67e203a125a6fec29053f21deca7a36df7b2777c

commit 67e203a125a6fec29053f21deca7a36df7b2777c
Author: Chris Michael 
Date:   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

2018-05-10 Thread Christopher Michael
devilhorns pushed a commit to branch feature/security.

http://git.enlightenment.org/core/efl.git/commit/?id=d45812f4ed38a6869822508896cfbeb2dd30ef58

commit d45812f4ed38a6869822508896cfbeb2dd30ef58
Author: Chris Michael 
Date:   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.

2018-05-10 Thread SubhransuSekhar Mohanty
hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=fd24998fa6d5d6d13fd9522811f09b05a51f8018

commit fd24998fa6d5d6d13fd9522811f09b05a51f8018
Author: SubhransuSekhar Mohanty 
Date:   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

2018-05-10 Thread WooHyun Jung
woohyun pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1b15c67c63e0c2c652d0ab39b826e777fb95381c

commit 1b15c67c63e0c2c652d0ab39b826e777fb95381c
Author: WooHyun Jung 
Date:   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;
   }
  }
 

--