[EGIT] [core/efl] master 01/01: efl_ui_calendar: fix wrong define

2017-11-21 Thread WooHyun Jung
woohyun pushed a commit to branch master.

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

commit faf3fb50f9a7edccf079ef6cb52362afb1026c01
Author: WooHyun Jung 
Date:   Wed Nov 22 16:54:30 2017 +0900

efl_ui_calendar: fix wrong define
---
 src/lib/elementary/efl_ui_calendar_private.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_calendar_private.h 
b/src/lib/elementary/efl_ui_calendar_private.h
index 4aa00878ea..2ca8f3871d 100644
--- a/src/lib/elementary/efl_ui_calendar_private.h
+++ b/src/lib/elementary/efl_ui_calendar_private.h
@@ -1,5 +1,5 @@
 #ifndef EFL_UI_CALENDAR_PRIVATE_H
-#define ELM_WIDGET_CALENDAR_H
+#define ELM_UI_CALENDAR_PRIVATE_H
 
 #include "Elementary.h"
 

-- 




[EGIT] [website/www-content] master 01/01: Wiki page download-latest changed with summary [remove legacy tarball releases of elm, generic loaders/players.] by Raster

2017-11-21 Thread Raster
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=32a6f6a477847bd9afca6dde947ab99a4ca25c1b

commit 32a6f6a477847bd9afca6dde947ab99a4ca25c1b
Author: Raster 
Date:   Tue Nov 21 23:41:59 2017 -0800

Wiki page download-latest changed with summary [remove legacy tarball 
releases of elm, generic loaders/players.] by Raster
---
 pages/download-latest.txt | 6 --
 1 file changed, 6 deletions(-)

diff --git a/pages/download-latest.txt b/pages/download-latest.txt
index ecfd159f..7eacf6e7 100644
--- a/pages/download-latest.txt
+++ b/pages/download-latest.txt
@@ -1,9 +1,6 @@
 
 efl_v = 1.20.5
 python_efl_v  = 1.20.0
-elm_v = In efl
-emotion_generic_players_v = In efl
-evas_generic_loaders_v= In efl
 
 enlightenment_v   = 0.22.1
 terminology_v = 1.1.1
@@ -24,9 +21,6 @@ dlbase= 
https://download.enlightenment.org/rel/
 ^Library^Version^
 |[[%%dlbase%%libs/efl/efl-%%efl_vextn%%|EFL]]|%%efl_v%%|
 
|[[%%dlbase%%bindings/python/python-efl-%%python_efl_vextn%%|Python-EFL]]|%%python_efl_v%%|
-|Elementary|%%elm_v%%|
-|Emotion Generic Players|%%emotion_generic_players_v%%|
-|Evas Generic Loaders|%%evas_generic_loaders_v%%|
 
 ^Application^Version^
 
|[[%%dlbase%%apps/enlightenment/enlightenment-%%enlightenment_vextn%%|Enlightenment]]|%%enlightenment_v%%|

-- 




[EGIT] [website/www-content] master 01/01: Wiki page efl-deps-src changed with summary [] by Philippe Jean Guillaumie

2017-11-21 Thread Philippe Jean Guillaumie
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=581ec82af052d9668b5f49a577acf7b69a6c7c25

commit 581ec82af052d9668b5f49a577acf7b69a6c7c25
Author: Philippe Jean Guillaumie 
Date:   Tue Nov 21 21:35:48 2017 -0800

Wiki page efl-deps-src changed with summary [] by Philippe Jean Guillaumie
---
 pages/incl/efl-deps-src.txt | 2 --
 1 file changed, 2 deletions(-)

diff --git a/pages/incl/efl-deps-src.txt b/pages/incl/efl-deps-src.txt
index 257d3f62..16ede63e 100644
--- a/pages/incl/efl-deps-src.txt
+++ b/pages/incl/efl-deps-src.txt
@@ -1,7 +1,5 @@
   * [[https://gcc.gnu.org/|GCC]] or [[http://clang.llvm.org/|clang]]
   * [[https://www.gnu.org/software/make/|make]]
-  * [[http://mesonbuild.com/|meson]] //(for enlightenment)//
-  * [[https://ninja-build.org/ |ninja-build]] //(for enlightenment)//
   * check
   * libpam
   * [[http://freetype.org/|freetype]] //(2.3 or better)//

-- 




[EGIT] [core/efl] master 01/01: elm_genlist: Add signals to communicate drag start and stop to atspi client.

2017-11-21 Thread Prasoon Singh
kimcinoo pushed a commit to branch master.

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

commit 248cb96c422751cd8ecc6ce4d43d2bba05b2fb08
Author: Prasoon Singh 
Date:   Wed Nov 22 14:17:41 2017 +0900

elm_genlist: Add signals to communicate drag start and stop to atspi client.

Summary:
Send signal EFL_ACCESS_STATE_ANIMATED when dragging starts and stops to 
atspi clients and also set EFL_ACCESS_STATE_ANIMATED
when reorder mode is enabled.

Test Plan: When reorder happens atspi client should receive 
object:state-changed:animated signal.

Reviewers: kimcinoo, shilpasingh

Reviewed By: shilpasingh

Subscribers: cedric, govi, rajeshps, jpeg

Differential Revision: https://phab.enlightenment.org/D5515
---
 src/lib/elementary/elm_genlist.c | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 99cda24b56..f21da6d66c 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -4050,7 +4050,11 @@ _long_press_cb(void *data)
   }
 
 if (!sd->decorate_all_mode)
-  edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_ENABLED, "elm");
+  {
+ edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_ENABLED, "elm");
+ if (_elm_config->atspi_mode)
+   efl_access_state_changed_signal_emit(EO_OBJ(it), 
EFL_ACCESS_STATE_ANIMATED, EINA_TRUE);
+  }
  }
 
 end:
@@ -4986,6 +4990,8 @@ _item_mouse_up_cb(void *data,
  sd->calc_job = ecore_job_add(_calc_job, sd->obj);
   }
 edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_DISABLED, "elm");
+if (_elm_config->atspi_mode)
+  efl_access_state_changed_signal_emit(EO_OBJ(it), 
EFL_ACCESS_STATE_ANIMATED, EINA_FALSE);
 sd->reorder_it = sd->reorder_rel = NULL;
 elm_interface_scrollable_hold_set(sd->obj, EINA_FALSE);
 elm_interface_scrollable_bounce_allow_set
@@ -8636,6 +8642,9 @@ _elm_genlist_efl_access_state_set_get(Eo *obj, 
Elm_Genlist_Data *sd EINA_UNUSED)
if (elm_genlist_multi_select_get(obj))
  STATE_TYPE_SET(ret, EFL_ACCESS_STATE_MULTISELECTABLE);
 
+   if (elm_genlist_reorder_mode_get(obj))
+ STATE_TYPE_SET(ret, EFL_ACCESS_STATE_ANIMATED);
+
return ret;
 }
 

-- 




[EGIT] [core/efl] master 01/01: elm: efl access: fix the warnings.

2017-11-21 Thread Amitesh Singh
ami pushed a commit to branch master.

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

commit 3661f719540fca170f3441c31d70aecab1dc655a
Author: Amitesh Singh 
Date:   Wed Nov 22 13:45:21 2017 +0900

elm: efl access: fix the warnings.

There were many warnings while building elm.

--->
./src/lib/elementary/efl_access.eo.h:433:55: warning: duplicate ‘const’ 
declaration specifier
 -Wduplicate-decl-specifier]
 EOAPI void efl_access_attribute_append(Eo *obj, const const char *key, 
const const char *value);
<---
---
 src/lib/elementary/efl_access.eo | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo
index 33b361d0bb..360832b28f 100644
--- a/src/lib/elementary/efl_access.eo
+++ b/src/lib/elementary/efl_access.eo
@@ -305,8 +305,8 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
  [[Add key-value pair identifying object extra attributes
  ]]
  params {
-@in key: const(string); [[The string key to give extra 
information]]
-@in value: const(string); [[The string value to give extra 
information]]
+@in key: string; [[The string key to give extra information]]
+@in value: string; [[The string value to give extra information]]
  }
   }
   attributes_clear {

-- 




[EGIT] [website/www-content] master 01/01: Wiki page efl-deps-git changed with summary [] by Raster

2017-11-21 Thread Raster
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=a8cee0494e15a9e212a1558855240f19223d0ddf

commit a8cee0494e15a9e212a1558855240f19223d0ddf
Author: Raster 
Date:   Tue Nov 21 20:47:50 2017 -0800

Wiki page efl-deps-git changed with summary [] by Raster
---
 pages/incl/efl-deps-git.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pages/incl/efl-deps-git.txt b/pages/incl/efl-deps-git.txt
index 657d78ba..c0fd9b2a 100644
--- a/pages/incl/efl-deps-git.txt
+++ b/pages/incl/efl-deps-git.txt
@@ -4,3 +4,4 @@
   * autopoint
   * libtool
   * gettext
+  * meson and ninja (needed for enlightenment, terminology, rage ...)
\ No newline at end of file

-- 




[EGIT] [core/efl] master 01/01: efl_access: Add attribute_append, attributes_clear APIs

2017-11-21 Thread Shilpa Singh
kimcinoo pushed a commit to branch master.

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

commit 11292dec353d3967ce568ed7017976277b18b2ed
Author: Shilpa Singh 
Date:   Wed Nov 22 11:54:44 2017 +0900

efl_access: Add attribute_append, attributes_clear APIs

Summary:
Add attribute append and attributes clear API, attributes of 
widget/widget_item helps in adding additional information
about the widget/widget item in the form of key-value pair.

Test Plan:
Query the attributes using atspi_accessible_get_attributes in atspi_client 
and an hash table consisting
of updates attributes should be returned.

Signed-Off By: Shilpa Singh 
Signed-Off By: Lukasz Wlazly 

Reviewers: kimcinoo, lukasz.stanislawski

Subscribers: cedric, govi, rajeshps, jpeg

Differential Revision: https://phab.enlightenment.org/D5510
---
 src/lib/elementary/efl_access.c   | 65 ---
 src/lib/elementary/efl_access.eo  | 17 +++--
 src/lib/elementary/elm_widget.c   | 47 -
 src/lib/elementary/elm_widget_item.eo |  1 +
 4 files changed, 115 insertions(+), 15 deletions(-)

diff --git a/src/lib/elementary/efl_access.c b/src/lib/elementary/efl_access.c
index 4586012b77..dc02dbb703 100644
--- a/src/lib/elementary/efl_access.c
+++ b/src/lib/elementary/efl_access.c
@@ -123,11 +123,12 @@ struct _Efl_Access_Event_Handler
 
 struct _Efl_Access_Data
 {
-   Efl_Access_Role role;
+   Efl_Access_Relation_Set relations;
+   Eina_List *attr_list;
const char*name;
const char*description;
const char*translation_domain;
-   Efl_Access_Relation_Set relations;
+   Efl_Access_Role role;
Efl_Access_Type type: 2;
 };
 
@@ -193,9 +194,63 @@ _efl_access_parent_set(Eo *obj, Efl_Access_Data *pd 
EINA_UNUSED, Efl_Access *new
 EOLIAN Eina_List*
 _efl_access_attributes_get(Eo *obj EINA_UNUSED, Efl_Access_Data *pd 
EINA_UNUSED)
 {
-   WRN("The %s object does not implement the \"accessible_attributes_set\" 
function.",
-   efl_class_name_get(efl_class_get(obj)));
-   return NULL;
+   Eina_List *attr_list = NULL;
+   if (pd->attr_list)
+ {
+Eina_List *l = NULL;
+Efl_Access_Attribute *t_attr = NULL;
+EINA_LIST_FOREACH(pd->attr_list, l, t_attr)
+  {
+ Efl_Access_Attribute *attr = calloc(1, 
sizeof(Efl_Access_Attribute));
+ if (!attr)
+  return attr_list;
+
+ attr->key = eina_stringshare_add(t_attr->key);
+ attr->value = eina_stringshare_add(t_attr->value);
+ attr_list = eina_list_append(attr_list, attr);
+  }
+ }
+   return attr_list;
+}
+
+EOLIAN static void
+_efl_access_attribute_append(Eo *obj EINA_UNUSED, Efl_Access_Data *pd 
EINA_UNUSED, const char *key, const char *value)
+{
+   Eina_List *l;
+   Efl_Access_Attribute *attr = NULL;
+
+   if (!key || !value) return;
+
+   /* Check existing attributes has this key */
+   EINA_LIST_FOREACH(pd->attr_list, l, attr)
+ {
+if (!strcmp((const char *)attr->key, key))
+  {
+ eina_stringshare_replace(>value, value);
+ return;
+  }
+ }
+
+   /* Add new attribute */
+   attr = calloc(1, sizeof(Efl_Access_Attribute));
+   if (!attr) return;
+
+   attr->key = eina_stringshare_add(key);
+   attr->value = eina_stringshare_add(value);
+   pd->attr_list = eina_list_append(pd->attr_list, attr);
+}
+
+EOLIAN static void _efl_access_attributes_clear(Eo *obj EINA_UNUSED, 
Efl_Access_Data *pd)
+{
+   if (!pd->attr_list) return;
+   Efl_Access_Attribute *attr;
+   EINA_LIST_FREE(pd->attr_list, attr)
+ {
+eina_stringshare_del(attr->key);
+eina_stringshare_del(attr->value);
+free(attr);
+ }
+   pd->attr_list = NULL;
 }
 
 EOLIAN static Efl_Access_Role
diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo
index 0ae001a433..33b361d0bb 100644
--- a/src/lib/elementary/efl_access.eo
+++ b/src/lib/elementary/efl_access.eo
@@ -298,10 +298,23 @@ mixin Efl.Access (Efl.Interface, Efl.Object)
  get {
  }
  values {
-/* FIXME: API for attribute free */
-attributes: list @owned; [[List 
of object attributes]]
+attributes: list @owned; [[List 
of object attributes, Must be freed by the user]]
  }
   }
+  attribute_append {
+ [[Add key-value pair identifying object extra attributes
+ ]]
+ params {
+@in key: const(string); [[The string key to give extra 
information]]
+@in value: const(string); [[The string value to give extra 
information]]
+ }
+  }
+  attributes_clear {
+ [[Removes all attributes in accessible 

[EGIT] [core/enlightenment] annotated tag v0.22.1 created (now 0d5e8b49d)

2017-11-21 Thread Enlightenment Git
This is an automated email from the git hooks/post-receive script.

simotek pushed a change to annotated tag v0.22.1
in repository core/enlightenment.

at  0d5e8b49d (tag)
   tagging  8729f8b58eea5794c840d29cb4b01b70227e3edd (commit)
  replaces  v0.22.0
 tagged by  Simon Lees
on  Wed Nov 22 12:18:11 2017 +1030

- Log -
22.1 Release

Andy Williams (1):
  music-control - Fix build after raster's file rename

Carsten Haitzler (4):
  e sys - frix warning for less noise
  hits: silence warnings about possible null string for strcmp
  fix mouse hangs after unblank
  music-control - install properly with meson build with icon

Marcel Hollerbach (2):
  meson: make those scripts executable
  meson: this version is enough for the things we use in the moment

Massimo Maiurana (1):
  Adding danish strings to desktop files

Mike Blumenkrantz (15):
  create wl output resource when running in wl nested
  unset wayland cursor for all pointers when running nested in wl
  show internal pointer cursor whenever resetting to internal cursor
  make wl_pointer cursor handling state-based to correctly handle cursor 
visuals
  update README with meson instructions
  check meson module option state before executing subdir
  improve meson build module disabling
  add field width limits to all fscanf params in e_intlc.
  destroy luncher iconify provider on gadget delete
  do not add iconify provider for luncher when creating a demo gadget
  requeue client for render if show animation completes and damages exist
  avoid performing client rescales during shutdown
  prevent double shutdown of x11 compositor in xwayland mode
  always emit E_EVENT_COMP_OBJECT_ADD events
  use last client from E_Exec_Instance list when updating luncher popups

---

No new revisions were added by this update.

-- 




[EGIT] [website/www-content] master 01/01: Wiki page start-release changed with summary [] by Simon

2017-11-21 Thread Simon
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=a51ec984d82a1e67071e142111722825e88b2bde

commit a51ec984d82a1e67071e142111722825e88b2bde
Author: Simon 
Date:   Tue Nov 21 18:21:18 2017 -0800

Wiki page start-release changed with summary [] by Simon
---
 pages/incl/start-release.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/incl/start-release.txt b/pages/incl/start-release.txt
index 8ac2ed8b..2462d084 100644
--- a/pages/incl/start-release.txt
+++ b/pages/incl/start-release.txt
@@ -1,3 +1,3 @@
 
-EFL 1.20.5 and [[https://www.enlightenment.org/news/e22_release|Enlightenment 
0.22]] are out - go to our [[/download]] page.
+EFL 1.20.5 and 
[[https://www.enlightenment.org/news/e0.22.1_release|Enlightenment 0.22.1]] are 
out - go to our [[/download]] page.
 

-- 




[EGIT] [website/www-content] master 01/01: Wiki page e0.22.1_release changed with summary [created] by Simon

2017-11-21 Thread Simon
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=64350e9ba68d212ea7bb89b34134557a240f4f20

commit 64350e9ba68d212ea7bb89b34134557a240f4f20
Author: Simon 
Date:   Tue Nov 21 18:19:27 2017 -0800

Wiki page e0.22.1_release changed with summary [created] by Simon
---
 pages/news/e0.22.1_release.txt | 62 ++
 1 file changed, 62 insertions(+)

diff --git a/pages/news/e0.22.1_release.txt b/pages/news/e0.22.1_release.txt
new file mode 100644
index ..d06fb4dd
--- /dev/null
+++ b/pages/news/e0.22.1_release.txt
@@ -0,0 +1,62 @@
+=== Enlightenment DR 0.22.1 Release ===
+  * //2017-11-22 by Simon Lees//
+
+This is a bugfix and stability release for the Enlightenment 22 Release series.
+
+== Tickets Addressed ==
+| [[ https://phab.enlightenment.org/T5883|T5883 ]] |screen blank: mouse click 
broken after waking from screem blank. |
+| [[ https://phab.enlightenment.org/T6258|T6258 ]] |E22 freezes on bryce 
manipulations |
+| [[ https://phab.enlightenment.org/T6288|T6288 ]] |Luncher app popup doesn't 
update from different VD |
+| [[ https://phab.enlightenment.org/T6316|T6316 ]] 
|enlightenment-0.22.0/src/bin/e_intl.c: unbounded file read ? |
+| [[ https://phab.enlightenment.org/T6322|T6322 ]] |No input on Logout 
problems window. |
+
+
+== Changes ==
+Carsten Haitzler (4):
+  * e sys - frix warning for less noise
+  * hits: silence warnings about possible null string for strcmp
+  * fix mouse hangs after unblank
+  * music-control - install properly with meson build with icon
+
+Marcel Hollerbach (2):
+  * meson: make those scripts executable
+  * meson: this version is enough for the things we use in the moment
+
+Massimo Maiurana (1):
+  * Adding danish strings to desktop files
+
+Mike Blumenkrantz (15):
+  * create wl output resource when running in wl nested
+  * unset wayland cursor for all pointers when running nested in wl
+  * show internal pointer cursor whenever resetting to internal cursor
+  * make wl_pointer cursor handling state-based to correctly handle cursor 
visuals
+  * update README with meson instructions
+  * check meson module option state before executing subdir
+  * improve meson build module disabling
+  * add field width limits to all fscanf params in e_intlc.
+  * destroy luncher iconify provider on gadget delete
+  * do not add iconify provider for luncher when creating a demo gadget
+  * requeue client for render if show animation completes and damages exist
+  * avoid performing client rescales during shutdown
+  * prevent double shutdown of x11 compositor in xwayland mode
+  * always emit E_EVENT_COMP_OBJECT_ADD events
+  * use last client from E_Exec_Instance list when updating luncher popups
+
+== Download ==
+
+^ ** LINK ** ^ ** SHA256 ** ^
+| [[ 
http://download.enlightenment.org/rel/apps/enlightenment/enlightenment-0.22.1.tar.xz
 | Enlightenment DR 0.22.1 XZ]]  | 
''207b6b88dafc4932ab007a835510823c5a1dd8c191876ac037628176ca77a7e0'' |
+
+//Left behind, somewhere over that rainbow.//
+
+== Building and Dependencies ==
+
+If you have an existing EFL or Elementary install, you may wish to delete its 
header files and libraries before compiling and installing to avoid possible 
conflicts during compilation. Please compile the dependencies in the following 
order (click for README):
+
+  - [[https://git.enlightenment.org/core/efl.git/tree/README  *   *   *| 
EFL]]
+
+**Note:** E22 depends on EFL **v1.20.5** or newer.
+
+{{:blank.png?nolink&100|}}
+~~DISCUSSIONS~~
+

-- 




[EGIT] [website/www-content] master 01/01: Wiki page download-latest changed with summary [] by Simon

2017-11-21 Thread Simon
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=247507d4a53ad9d04a71937f7b65449e2fabcadb

commit 247507d4a53ad9d04a71937f7b65449e2fabcadb
Author: Simon 
Date:   Tue Nov 21 18:20:12 2017 -0800

Wiki page download-latest changed with summary [] by Simon
---
 pages/download-latest.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/download-latest.txt b/pages/download-latest.txt
index 933370cf..ecfd159f 100644
--- a/pages/download-latest.txt
+++ b/pages/download-latest.txt
@@ -5,7 +5,7 @@ elm_v = In efl
 emotion_generic_players_v = In efl
 evas_generic_loaders_v= In efl
 
-enlightenment_v   = 0.22.0
+enlightenment_v   = 0.22.1
 terminology_v = 1.1.1
 rage_v= 0.2.1
 econnman_v= 1.1

-- 




[EGIT] [core/efl] master 02/02: wayland_shm: Fix partial redraws

2017-11-21 Thread Derek Foreman
derekf pushed a commit to branch master.

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

commit 2c559a1ee9210b46e4f44346d87ff75e4229740b
Author: Derek Foreman 
Date:   Tue Nov 21 16:48:30 2017 -0600

wayland_shm: Fix partial redraws

I accidentally the age tracking.
---
 src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c 
b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
index 350ec599a8..162240db1b 100644
--- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
+++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c
@@ -94,6 +94,8 @@ _evas_dmabuf_surface_wait(Dmabuf_Surface *s)
 Outbuf *ob;
 ob = s->surface->ob;
 best = ecore_wl2_buffer_create(ob->ewd, ob->w, ob->h, s->alpha);
+/* Start at -1 so it's age is incremented to 0 for first draw */
+best->age = -1;
 s->buffers = eina_list_append(s->buffers, best);
  }
return best;
@@ -110,13 +112,18 @@ _evas_dmabuf_surface_assign(Surface *s)
surface->current = _evas_dmabuf_surface_wait(surface);
if (!surface->current)
  {
+/* Should be unreachable and will result in graphical
+ * anomalies - we should probably blow away all the
+ * existing buffers and start over if we actually
+ * see this happen...
+ */
 WRN("No free DMAbuf buffers, dropping a frame");
 EINA_LIST_FOREACH(surface->buffers, l, b)
   b->age = 0;
 return 0;
  }
EINA_LIST_FOREACH(surface->buffers, l, b)
- if (b->age) b->age++;
+ b->age++;
 
return surface->current->age;
 }

-- 




[EGIT] [core/efl] master 01/02: ecore_wl2: Add dmabuf allocations for vc4

2017-11-21 Thread Derek Foreman
derekf pushed a commit to branch master.

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

commit cf605549c5773d6b90c3e664799845186ef0e603
Author: Derek Foreman 
Date:   Tue Nov 21 16:29:55 2017 -0600

ecore_wl2: Add dmabuf allocations for vc4

This should theoretically be better for software rendering on rpi3 since
it allows the compositor to use our sw rendered buffers as a texture.
---
 src/Makefile_Ecore_Wl2.am|   1 +
 src/lib/ecore_wl2/ecore_wl2_buffer.c | 138 +++-
 src/static_libs/libdrm/vc4_drm.h | 302 +++
 3 files changed, 440 insertions(+), 1 deletion(-)

diff --git a/src/Makefile_Ecore_Wl2.am b/src/Makefile_Ecore_Wl2.am
index 3abab865af..1c5971c4be 100644
--- a/src/Makefile_Ecore_Wl2.am
+++ b/src/Makefile_Ecore_Wl2.am
@@ -24,6 +24,7 @@ static_libs/libdrm/exynos_drm.h \
 static_libs/libdrm/exynos_drmif.h \
 static_libs/libdrm/i915_drm.h \
 static_libs/libdrm/intel_bufmgr.h \
+static_libs/libdrm/vc4_drm.h \
 static_libs/libdrm/LICENSE
 
 
diff --git a/src/lib/ecore_wl2/ecore_wl2_buffer.c 
b/src/lib/ecore_wl2/ecore_wl2_buffer.c
index 8c4b0ff39e..a8e5bec5cb 100644
--- a/src/lib/ecore_wl2/ecore_wl2_buffer.c
+++ b/src/lib/ecore_wl2/ecore_wl2_buffer.c
@@ -11,10 +11,11 @@
 #include 
 #include 
 #include 
-
+#include 
 #include 
 #include 
 #include 
+#include 
 
 #include "linux-dmabuf-unstable-v1-client-protocol.h"
 
@@ -397,6 +398,140 @@ _wl_shm_buffer_manager_setup(int fd EINA_UNUSED)
return EINA_TRUE;
 }
 
+struct internal_vc4_bo
+{
+   __u32 handle;
+   int size;
+   int fd;
+};
+
+static int
+align(int v, int a)
+{
+   return (v + a - 1) & ~((uint64_t)a - 1);
+}
+
+static Buffer_Handle *
+_vc4_alloc(Buffer_Manager *self EINA_UNUSED, const char *name EINA_UNUSED, int 
w, int h, unsigned long *stride, int32_t *fd)
+{
+   struct drm_vc4_create_bo bo;
+   struct internal_vc4_bo *obo;
+   struct drm_gem_close cl;
+   size_t size;
+   int ret;
+
+   obo = malloc(sizeof(struct internal_vc4_bo));
+   if (!obo) return NULL;
+
+   *stride = align(w * 4, 16);
+   size = *stride * h;
+   memset(, 0, sizeof(bo));
+   bo.size = size;
+   ret = ioctl(drm_fd, DRM_IOCTL_VC4_CREATE_BO, );
+   if (ret) return NULL;
+   obo->handle = bo.handle;
+   obo->size = size;
+   /* First try to allocate an mmapable buffer with O_RDWR,
+* if that fails retry unmappable - if the compositor is
+* using GL it won't need to mmap the buffer and this can
+* work - otherwise it'll reject this buffer and we'll
+* have to fall back to shm rendering.
+*/
+   if (sym_drmPrimeHandleToFD(drm_fd, bo.handle,
+  DRM_CLOEXEC | O_RDWR, fd) != 0)
+ if (sym_drmPrimeHandleToFD(drm_fd, bo.handle,
+DRM_CLOEXEC, fd) != 0) goto err;
+
+   obo->fd = *fd;
+   return (Buffer_Handle *)obo;
+
+err:
+   memset(, 0, sizeof(cl));
+   cl.handle = bo.handle;
+   ioctl(drm_fd, DRM_IOCTL_GEM_CLOSE, );
+   return NULL;
+}
+
+static void *
+_vc4_map(Ecore_Wl2_Buffer *buf)
+{
+   struct drm_vc4_mmap_bo map;
+   struct internal_vc4_bo *bo;
+   void *ptr;
+   int ret;
+
+   bo = (struct internal_vc4_bo *)buf->bh;
+
+   memset(, 0, sizeof(map));
+   map.handle = bo->handle;
+   ret = ioctl(drm_fd, DRM_IOCTL_VC4_MMAP_BO, );
+   if (ret) return NULL;
+
+   ptr = mmap(NULL, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED, drm_fd,
+  map.offset);
+   if (ptr == MAP_FAILED) return NULL;
+
+   return ptr;
+}
+
+static void
+_vc4_unmap(Ecore_Wl2_Buffer *buf)
+{
+   struct internal_vc4_bo *bo;
+
+   bo = (struct internal_vc4_bo *)buf->bh;
+   munmap(buf->mapping, bo->size);
+}
+
+static void
+_vc4_discard(Ecore_Wl2_Buffer *buf)
+{
+   struct drm_gem_close cl;
+   struct internal_vc4_bo *bo;
+
+   bo = (struct internal_vc4_bo *)buf->bh;
+
+   memset(, 0, sizeof(cl));
+   cl.handle = bo->handle;
+   ioctl(drm_fd, DRM_IOCTL_GEM_CLOSE, );
+}
+
+static Eina_Bool
+_vc4_buffer_manager_setup(int fd)
+{
+   struct drm_gem_close cl;
+   struct drm_vc4_create_bo bo;
+   Eina_Bool fail = EINA_FALSE;
+   void *drm_lib;
+
+   memset(, 0, sizeof(bo));
+   bo.size = 32;
+   if (ioctl(fd, DRM_IOCTL_VC4_CREATE_BO, )) return EINA_FALSE;
+
+   memset(, 0, sizeof(cl));
+   cl.handle = bo.handle;
+   ioctl(fd, DRM_IOCTL_GEM_CLOSE, );
+
+   drm_lib = dlopen("libdrm.so", RTLD_LAZY | RTLD_GLOBAL);
+   if (!drm_lib) return EINA_FALSE;
+
+   SYM(drm_lib, drmPrimeHandleToFD);
+
+   if (fail) goto err;
+
+   buffer_manager->alloc = _vc4_alloc;
+   buffer_manager->to_buffer = _evas_dmabuf_wl_buffer_from_dmabuf;
+   buffer_manager->map = _vc4_map;
+   buffer_manager->unmap = _vc4_unmap;
+   buffer_manager->discard = _vc4_discard;
+   buffer_manager->manager_destroy = NULL;
+   buffer_manager->dl_handle = drm_lib;
+   return EINA_TRUE;
+err:
+   dlclose(drm_lib);
+   return EINA_FALSE;
+}
+
 EAPI Eina_Bool
 ecore_wl2_buffer_init(Ecore_Wl2_Display *ewd, 

[EGIT] [core/efl] master 02/12: elm_hoversel: lets use the new event

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit da89778ee03c9322a675d693d567842385790d32
Author: Marcel Hollerbach 
Date:   Thu Nov 16 23:23:25 2017 +0100

elm_hoversel: lets use the new event
---
 src/lib/elementary/elc_hoversel.c | 22 ++
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/lib/elementary/elc_hoversel.c 
b/src/lib/elementary/elc_hoversel.c
index c55d0aaa79..01181a53e8 100644
--- a/src/lib/elementary/elc_hoversel.c
+++ b/src/lib/elementary/elc_hoversel.c
@@ -182,19 +182,18 @@ _on_item_clicked(void *data EINA_UNUSED, const Efl_Event 
*event EINA_UNUSED)
 }
 
 static void
-_item_focused_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
+_item_focus_changed(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
 {
Elm_Hoversel_Item_Data *it = data;
 
-   efl_event_callback_legacy_call(WIDGET(it), ELM_HOVERSEL_EVENT_ITEM_FOCUSED, 
EO_OBJ(it));
-}
-
-static void
-_item_unfocused_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
-{
-   Elm_Hoversel_Item_Data *it = data;
-
-   efl_event_callback_legacy_call(WIDGET(it), 
ELM_HOVERSEL_EVENT_ITEM_UNFOCUSED, EO_OBJ(it));
+   if (efl_ui_focus_object_focus_get(event->object))
+ {
+efl_event_callback_legacy_call(WIDGET(it), 
ELM_HOVERSEL_EVENT_ITEM_FOCUSED, EO_OBJ(it));
+ }
+   else
+ {
+efl_event_callback_legacy_call(WIDGET(it), 
ELM_HOVERSEL_EVENT_ITEM_UNFOCUSED, EO_OBJ(it));
+ }
 }
 
 static void
@@ -865,8 +864,7 @@ _elm_hoversel_item_add(Eo *obj, Elm_Hoversel_Data *sd, 
const char *label, const
 evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0);
 evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
 efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _on_item_clicked, item);
-efl_event_callback_add(bt, EFL_UI_WIDGET_EVENT_FOCUSED, _item_focused_cb, 
item);
-efl_event_callback_add(bt, EFL_UI_WIDGET_EVENT_UNFOCUSED, 
_item_unfocused_cb, item);
+efl_event_callback_add(bt, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, 
_item_focus_changed, item);
 
sd->items = eina_list_append(sd->items, eo_item);
 

-- 




[EGIT] [core/efl] master 04/12: elm_spinner: lets use the new event

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit e1ff459e1b1ce78fbfe0060debdafe8d932cf76b
Author: Marcel Hollerbach 
Date:   Thu Nov 16 23:30:30 2017 +0100

elm_spinner: lets use the new event
---
 src/lib/elementary/elm_spinner.c | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c
index d269a3e53e..96fc4eb4f9 100644
--- a/src/lib/elementary/elm_spinner.c
+++ b/src/lib/elementary/elm_spinner.c
@@ -55,9 +55,7 @@ _inc_dec_button_unpressed_cb(void *data, const Efl_Event 
*event);
 static void
 _inc_dec_button_mouse_move_cb(void *data, const Efl_Event *event);
 static void
-_text_button_focused_cb(void *data, const Efl_Event *event);
-static void
-_entry_unfocused_cb(void *data, const Efl_Event *event);
+_entry_focus_change(void *data, const Efl_Event *event);
 static void
 _entry_activated_cb(void *data, const Efl_Event *event);
 
@@ -409,7 +407,7 @@ _entry_value_apply(Evas_Object *obj)
if (!sd->entry_visible) return;
 
efl_event_callback_del
-(sd->ent, EFL_UI_WIDGET_EVENT_UNFOCUSED, _entry_unfocused_cb, obj);
+(sd->ent, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _entry_focus_change, 
obj);
_entry_hide(obj);
str = elm_object_text_get(sd->ent);
if (!str) return;
@@ -648,7 +646,7 @@ _toggle_entry(Evas_Object *obj)
   }
 
 efl_event_callback_add
-   (sd->ent, EFL_UI_WIDGET_EVENT_UNFOCUSED, _entry_unfocused_cb, obj);
+   (sd->ent, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, 
_entry_focus_change, obj);
 sd->entry_visible = EINA_TRUE;
 elm_layout_signal_emit(obj, "elm,state,entry,active", "elm");
 evas_object_show(sd->ent);
@@ -876,9 +874,10 @@ _inc_dec_button_unpressed_cb(void *data, const Efl_Event 
*event EINA_UNUSED)
 }
 
 static void
-_text_button_focused_cb(void *data, const Efl_Event *event EINA_UNUSED)
+_text_button_focus_change(void *data, const Efl_Event *event)
 {
-   _toggle_entry(data);
+   if (efl_ui_focus_object_focus_get(event->object))
+ _toggle_entry(data);
 }
 
 static void
@@ -887,11 +886,11 @@ _entry_activated_cb(void *data, const Efl_Event *event 
EINA_UNUSED)
_toggle_entry(data);
 }
 
-
 static void
-_entry_unfocused_cb(void *data, const Efl_Event *event EINA_UNUSED)
+_entry_focus_change(void *data, const Efl_Event *event)
 {
-   _toggle_entry(data);
+   if (!efl_ui_focus_object_focus_get(event->object))
+ _toggle_entry(data);
 }
 
 static void
@@ -1214,8 +1213,9 @@ _elm_spinner_efl_canvas_group_group_add(Eo *obj, 
Elm_Spinner_Data *priv)
 
 efl_event_callback_add
   (priv->text_button, EFL_UI_EVENT_CLICKED, _text_button_clicked_cb, 
obj);
+
 efl_event_callback_add
-  (priv->text_button, EFL_UI_WIDGET_EVENT_FOCUSED, 
_text_button_focused_cb, obj);
+  (priv->text_button, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, 
_text_button_focus_change, obj);
 
 elm_layout_content_set(obj, "elm.swallow.text_button", 
priv->text_button);
 elm_widget_sub_object_add(obj, priv->text_button);

-- 




[EGIT] [core/efl] master 09/12: elm_fileselector: forward focus changed from entry to fileselector

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 1ef8092ad00cb9871fd9d7b881ebbf467008f0b8
Author: Marcel Hollerbach 
Date:   Mon Nov 20 22:25:46 2017 +0100

elm_fileselector: forward focus changed from entry to fileselector

the old event is then emitted from elm_widget.c
---
 src/lib/elementary/elc_fileselector_entry.c | 6 ++
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector_entry.c 
b/src/lib/elementary/elc_fileselector_entry.c
index 048be2923c..9557871d99 100644
--- a/src/lib/elementary/elc_fileselector_entry.c
+++ b/src/lib/elementary/elc_fileselector_entry.c
@@ -59,8 +59,6 @@ SIG_FWD(PRESS, ELM_FILESELECTOR_ENTRY_EVENT_PRESS)
 SIG_FWD(LONGPRESSED, EFL_UI_EVENT_LONGPRESSED)
 SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED)
 SIG_FWD(CLICKED_DOUBLE, EFL_UI_EVENT_CLICKED_DOUBLE)
-SIG_FWD(FOCUSED, EFL_UI_WIDGET_EVENT_FOCUSED)
-SIG_FWD(UNFOCUSED, EFL_UI_WIDGET_EVENT_UNFOCUSED)
 SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE)
 SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY)
 SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT)
@@ -300,13 +298,13 @@ _elm_fileselector_entry_efl_canvas_group_group_add(Eo 
*obj, Elm_Fileselector_Ent
SIG_FWD(LONGPRESSED, EFL_UI_EVENT_LONGPRESSED);
SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED);
SIG_FWD(CLICKED_DOUBLE, EFL_UI_EVENT_CLICKED_DOUBLE);
-   SIG_FWD(FOCUSED, EFL_UI_WIDGET_EVENT_FOCUSED);
-   SIG_FWD(UNFOCUSED, EFL_UI_WIDGET_EVENT_UNFOCUSED);
SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE);
SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY);
SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT);
 #undef SIG_FWD
 
+   efl_event_callback_forwarder_add(priv->entry, 
EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, obj);
+
if (!elm_layout_theme_set
(obj, "fileselector_entry", "base", elm_widget_style_get(obj)))
  CRI("Failed to set layout!");

-- 




[EGIT] [core/efl] master 11/12: prefs elm_entry: change to the new event

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit a8fb3f30d9b917945f3d41f89733af8e0a65a1f6
Author: Marcel Hollerbach 
Date:   Mon Nov 20 22:54:49 2017 +0100

prefs elm_entry: change to the new event
---
 src/modules/elementary/prefs/elm_entry.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/modules/elementary/prefs/elm_entry.c 
b/src/modules/elementary/prefs/elm_entry.c
index 02030b7ab6..b34102aa15 100644
--- a/src/modules/elementary/prefs/elm_entry.c
+++ b/src/modules/elementary/prefs/elm_entry.c
@@ -101,7 +101,8 @@ _item_changed_cb(void *data, const Efl_Event *event)
 {
Elm_Prefs_Item_Changed_Cb prefs_it_changed_cb = data;
 
-   prefs_it_changed_cb(event->object);
+   if (efl_ui_focus_object_focus_get(event->object))
+ prefs_it_changed_cb(event->object);
 }
 
 static void
@@ -160,7 +161,7 @@ elm_prefs_entry_add(const Elm_Prefs_Item_Iface *iface 
EINA_UNUSED,
efl_event_callback_add
  (obj, ELM_ENTRY_EVENT_ACTIVATED, _item_changed_cb, cb);
efl_event_callback_add
- (obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, _item_changed_cb, cb);
+ (obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _item_changed_cb, cb);
if (spec.s.accept)
  {
 int ret;

-- 




[EGIT] [core/efl] master 07/12: efl_ui_multibuttonentry: migrate to efl_ui_focus_object events

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit d9c584eec1bb76c4d7a8f665684fa28b814df8ad
Author: Marcel Hollerbach 
Date:   Mon Nov 20 21:34:33 2017 +0100

efl_ui_multibuttonentry: migrate to efl_ui_focus_object events

this merges the two two events callbacks into one
---
 src/lib/elementary/efl_ui_multibuttonentry.c | 39 ++--
 1 file changed, 19 insertions(+), 20 deletions(-)

diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c 
b/src/lib/elementary/efl_ui_multibuttonentry.c
index 3a7cd3964a..2a1fe92823 100644
--- a/src/lib/elementary/efl_ui_multibuttonentry.c
+++ b/src/lib/elementary/efl_ui_multibuttonentry.c
@@ -54,14 +54,12 @@ static Eina_Bool 
_efl_ui_multibuttonentry_smart_focus_next_enable = EINA_FALSE;
 static Eina_Bool _efl_ui_multibuttonentry_smart_focus_direction_enable = 
EINA_TRUE;
 
 static void _entry_changed_cb(void *data, const Efl_Event *event);
-static void _entry_focus_in_cb(void *data, const Efl_Event *event);
-static void _entry_focus_out_cb(void *data, const Efl_Event *event);
+static void _entry_focus_changed_cb(void *data, const Efl_Event *event);
 static void _entry_clicked_cb(void *data, const Efl_Event *event);
 
 EFL_CALLBACKS_ARRAY_DEFINE(_multi_buttonentry_cb,
{ ELM_ENTRY_EVENT_CHANGED, _entry_changed_cb },
-   { EFL_UI_WIDGET_EVENT_FOCUSED, _entry_focus_in_cb },
-   { EFL_UI_WIDGET_EVENT_UNFOCUSED, _entry_focus_out_cb },
+   { EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED , _entry_focus_changed_cb },
{ EFL_UI_EVENT_CLICKED, _entry_clicked_cb }
 );
 
@@ -1048,28 +1046,29 @@ _entry_changed_cb(void *data, const Efl_Event *event 
EINA_UNUSED)
 }
 
 static void
-_entry_focus_in_cb(void *data, const Efl_Event *event EINA_UNUSED)
+_entry_focus_changed_cb(void *data, const Efl_Event *event)
 {
-   Elm_Multibuttonentry_Item_Data *item = NULL;
EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(data, sd);
 
-   if (sd->selected_it)
+   if (efl_ui_focus_object_focus_get(event->object))
  {
-item = sd->selected_it;
-elm_object_focus_set(sd->entry, EINA_FALSE);
-elm_object_focus_set(VIEW(item), EINA_TRUE);
- }
-}
+Elm_Multibuttonentry_Item_Data *item = NULL;
 
-static void
-_entry_focus_out_cb(void *data, const Efl_Event *event EINA_UNUSED)
-{
-   EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(data, sd);
-   const char *str;
+if (sd->selected_it)
+  {
+ item = sd->selected_it;
+ elm_object_focus_set(sd->entry, EINA_FALSE);
+ elm_object_focus_set(VIEW(item), EINA_TRUE);
+  }
+ }
+   else
+ {
+const char *str;
 
-   str = efl_text_get(sd->entry);
-   if (str && str[0])
- _item_new(sd, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL);
+str = efl_text_get(sd->entry);
+if (str && str[0])
+  _item_new(sd, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL);
+ }
 }
 
 static void

-- 




[EGIT] [core/efl] master 10/12: efl_ui_text: remove the event emits here

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 149d03d8f4832628b71d4460f7dd8abec4ee46dd
Author: Marcel Hollerbach 
Date:   Mon Nov 20 22:38:08 2017 +0100

efl_ui_text: remove the event emits here

with the previous commit we emit the legacy events for each interface
event, and thus this event is not needed.

However, in elm_entry this means that changing editable will _not_
reemit the focus event (where i am not that sure if that is correct or
not).
---
 src/lib/elementary/efl_ui_text.c | 2 --
 src/lib/elementary/elm_entry.c   | 8 ++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c
index c1b9bd7287..05619dccc9 100644
--- a/src/lib/elementary/efl_ui_text.c
+++ b/src/lib/elementary/efl_ui_text.c
@@ -1211,7 +1211,6 @@ _efl_ui_text_elm_widget_on_focus_update(Eo *obj, 
Efl_Ui_Text_Data *sd, Elm_Objec
 
 if (top && top_is_win && sd->input_panel_enable && 
!sd->input_panel_show_on_demand)
   elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
-efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
 if (_elm_config->atspi_mode)
   efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
EINA_TRUE);
 _return_key_enabled_check(obj);
@@ -1228,7 +1227,6 @@ _efl_ui_text_elm_widget_on_focus_update(Eo *obj, 
Efl_Ui_Text_Data *sd, Elm_Objec
 
 if (top && top_is_win && sd->input_panel_enable)
   elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
-efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, 
NULL);
 if (_elm_config->atspi_mode)
   efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
EINA_FALSE);
 
diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c
index 948fa053cf..6adff14742 100644
--- a/src/lib/elementary/elm_entry.c
+++ b/src/lib/elementary/elm_entry.c
@@ -1266,7 +1266,6 @@ _elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd)
 if (top && top_is_win && sd->input_panel_enable && 
!sd->input_panel_show_on_demand &&
 !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
   elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
-efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
 if (_elm_config->atspi_mode)
   efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
EINA_TRUE);
 _return_key_enabled_check(obj);
@@ -1281,7 +1280,6 @@ _elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd)
 if (top && top_is_win && sd->input_panel_enable &&
 !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
   elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
-efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, 
NULL);
 if (_elm_config->atspi_mode)
   efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
EINA_FALSE);
 
@@ -4255,6 +4253,12 @@ _elm_entry_editable_set(Eo *obj, Elm_Entry_Data *sd, 
Eina_Bool editable)
efl_ui_widget_theme_apply(obj);
_elm_entry_focus_update(obj, sd);
 
+   //legacy focus event emission
+   if (efl_ui_focus_object_focus_get(obj))
+ evas_object_smart_callback_call(obj, "focused", NULL);
+   else
+ evas_object_smart_callback_call(obj, "unfocused", NULL);
+
elm_drop_target_del(obj, sd->drop_format,
_dnd_enter_cb, NULL,
_dnd_leave_cb, NULL,

-- 




[EGIT] [core/efl] master 12/12: elm_widget: remove focused unfocused events

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 78664198bd3509a8eb36cb26f2b9655d4d89d840
Author: Marcel Hollerbach 
Date:   Mon Nov 20 22:56:43 2017 +0100

elm_widget: remove focused unfocused events

the ones form efl.ui.focus.object are now taken.
---
 src/lib/elementary/efl_ui_multibuttonentry.c | 4 ++--
 src/lib/elementary/elm_widget.c  | 4 ++--
 src/lib/elementary/elm_widget.eo | 2 --
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c 
b/src/lib/elementary/efl_ui_multibuttonentry.c
index 2a1fe92823..e15b4de90c 100644
--- a/src/lib/elementary/efl_ui_multibuttonentry.c
+++ b/src/lib/elementary/efl_ui_multibuttonentry.c
@@ -1691,12 +1691,12 @@ _legacy_focused(void *data, const Efl_Event *ev)
 
if (meaningful_focus_in && !meaningful_focus_out)
  {
-efl_event_callback_legacy_call(data, EFL_UI_WIDGET_EVENT_FOCUSED, 
NULL);
+evas_object_smart_callback_call(data, "focused", NULL);
  }
 
if (!meaningful_focus_in && meaningful_focus_out)
  {
-efl_event_callback_legacy_call(data, EFL_UI_WIDGET_EVENT_UNFOCUSED, 
NULL);
+evas_object_smart_callback_call(data, "unfocused", NULL);
  }
 }
 
diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 8d36ee3535..8ef0713bfc 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -5034,9 +5034,9 @@ static void
 _focus_event_changed(void *data EINA_UNUSED, const Efl_Event *event)
 {
if (efl_ui_focus_object_focus_get(event->object))
- efl_event_callback_legacy_call(event->object, 
EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
+ evas_object_smart_callback_call(event->object, "focused", NULL);
else
- efl_event_callback_legacy_call(event->object, 
EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL);
+ evas_object_smart_callback_call(event->object, "unfocused", NULL);
 }
 
 EOLIAN static Eo *
diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo
index e9f16dc800..6a03f4be8c 100644
--- a/src/lib/elementary/elm_widget.eo
+++ b/src/lib/elementary/elm_widget.eo
@@ -648,8 +648,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Efl.Access,
}
events {
   moved; [[Called when widget moved]]
-  focused; [[Called when widget was focused]]
-  unfocused; [[Called when widget was unfocused]]
   language,changed; [[Called when widget language changed]]
   access,changed; [[Called when accessibility changed]]
}

-- 




[EGIT] [core/efl] master 01/12: elm_fileselector: lets use the new event

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 7fddb1ea1aa03292e2ecf2436ccc9c91c27ef465
Author: Marcel Hollerbach 
Date:   Thu Nov 16 23:13:42 2017 +0100

elm_fileselector: lets use the new event
---
 src/lib/elementary/elc_fileselector.c | 24 +++-
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/elc_fileselector.c 
b/src/lib/elementary/elc_fileselector.c
index 3e762d04aa..327168b4ff 100644
--- a/src/lib/elementary/elc_fileselector.c
+++ b/src/lib/elementary/elc_fileselector.c
@@ -1518,19 +1518,19 @@ _anchors_undo(void *data)
 }
 
 static void
-_on_text_focused(void *data, const Efl_Event *event EINA_UNUSED)
+_on_text_focus_changed(void *data, const Efl_Event *event)
 {
ELM_FILESELECTOR_DATA_GET(data, sd);
 
-   if (!sd->path_entry_idler)
-   sd->path_entry_idler = ecore_idler_add(_anchors_undo, data);
-}
-
-static void
-_on_text_unfocused(void *data, const Efl_Event *event EINA_UNUSED)
-{
-   ELM_FILESELECTOR_DATA_GET(data, sd);
-   _anchors_do(data, sd->path);
+   if (efl_ui_focus_object_focus_get(event->object))
+ {
+if (!sd->path_entry_idler)
+  sd->path_entry_idler = ecore_idler_add(_anchors_undo, data);
+ }
+   else
+ {
+_anchors_do(data, sd->path);
+ }
 }
 
 static void
@@ -1971,9 +1971,7 @@ _elm_fileselector_efl_canvas_group_group_add(Eo *obj, 
Elm_Fileselector_Data *pri
efl_event_callback_add
  (en, ELM_ENTRY_EVENT_ANCHOR_CLICKED, _anchor_clicked, obj);
efl_event_callback_add
- (en, EFL_UI_WIDGET_EVENT_FOCUSED, _on_text_focused, obj);
-   efl_event_callback_add
- (en, EFL_UI_WIDGET_EVENT_UNFOCUSED, _on_text_unfocused, obj);
+   (en, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _on_text_focus_changed, obj);
efl_event_callback_add
  (en, ELM_ENTRY_EVENT_ACTIVATED, _on_text_activated, obj);
 

-- 




[EGIT] [core/efl] master 08/12: elm_widget: move event emission to a callback

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 6b85f7dbdf206c71c7c5a13027a6abf5d61e8364
Author: Marcel Hollerbach 
Date:   Mon Nov 20 22:22:02 2017 +0100

elm_widget: move event emission to a callback

the callback gets triggered if the new event got triggered.
---
 src/lib/elementary/elm_widget.c | 14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index 5186fea304..8d36ee3535 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -5030,6 +5030,15 @@ elm_widget_tree_dot_dump(const Evas_Object *top,
 #endif
 }
 
+static void
+_focus_event_changed(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   if (efl_ui_focus_object_focus_get(event->object))
+ efl_event_callback_legacy_call(event->object, 
EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
+   else
+ efl_event_callback_legacy_call(event->object, 
EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL);
+}
+
 EOLIAN static Eo *
 _elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd 
EINA_UNUSED)
 {
@@ -5048,6 +5057,8 @@ _elm_widget_efl_object_constructor(Eo *obj, 
Elm_Widget_Smart_Data *sd EINA_UNUSE
 
efl_access_role_set(obj, EFL_ACCESS_ROLE_UNKNOWN);
 
+   efl_event_callback_add(obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, 
_focus_event_changed, NULL);
+
return obj;
 }
 
@@ -5108,17 +5119,14 @@ EOLIAN static Eina_Bool
 _elm_widget_on_focus_update(Eo *obj, Elm_Widget_Smart_Data *sd, 
Elm_Object_Item *item EINA_UNUSED)
 {
Eina_Bool focused;
-   const Efl_Event_Description *desc;
 
if (!elm_widget_can_focus_get(obj))
  return EINA_FALSE;
 
focused = elm_widget_focus_get(obj);
-   desc = focused ? EFL_UI_WIDGET_EVENT_FOCUSED : 
EFL_UI_WIDGET_EVENT_UNFOCUSED;
 
if (!sd->resize_obj)
  evas_object_focus_set(obj, focused);
-   efl_event_callback_legacy_call(obj, desc, NULL);
 
if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj))
  efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
focused);

-- 




[EGIT] [core/efl] master 03/12: elm_popup: lets use the new event

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit a2eda0665e3a59619e41abf6e0bb77b9dcb2d69c
Author: Marcel Hollerbach 
Date:   Thu Nov 16 23:24:15 2017 +0100

elm_popup: lets use the new event
---
 src/lib/elementary/elc_popup.c | 23 ++-
 1 file changed, 10 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c
index b2de973bbd..5889f4e728 100644
--- a/src/lib/elementary/elc_popup.c
+++ b/src/lib/elementary/elc_popup.c
@@ -894,19 +894,18 @@ _elm_popup_item_elm_widget_item_signal_emit(Eo *eo_it 
EINA_UNUSED, Elm_Popup_Ite
 }
 
 static void
-_item_focused_cb(void *data, const Efl_Event *event EINA_UNUSED)
+_item_focus_change(void *data, const Efl_Event *event EINA_UNUSED)
 {
Elm_Popup_Item_Data *it = data;
 
-   efl_event_callback_legacy_call(WIDGET(it), ELM_POPUP_EVENT_ITEM_FOCUSED, 
EO_OBJ(it));
-}
-
-static void
-_item_unfocused_cb(void *data, const Efl_Event *event EINA_UNUSED)
-{
-   Elm_Popup_Item_Data *it = data;
-
-   efl_event_callback_legacy_call(WIDGET(it), ELM_POPUP_EVENT_ITEM_UNFOCUSED, 
EO_OBJ(it));
+   if (efl_ui_focus_object_focus_get(event->object))
+ {
+efl_event_callback_legacy_call(WIDGET(it), 
ELM_POPUP_EVENT_ITEM_FOCUSED, EO_OBJ(it));
+ }
+   else
+ {
+efl_event_callback_legacy_call(WIDGET(it), 
ELM_POPUP_EVENT_ITEM_UNFOCUSED, EO_OBJ(it));
+ }
 }
 
 EOLIAN static Eo *
@@ -937,9 +936,7 @@ _item_new(Elm_Popup_Item_Data *it)
_item_select_cb, it);
 evas_object_size_hint_align_set(VIEW(it), EVAS_HINT_FILL, 
EVAS_HINT_FILL);
 efl_event_callback_add
-  (VIEW(it), EFL_UI_WIDGET_EVENT_FOCUSED, _item_focused_cb, it);
-efl_event_callback_add
-  (VIEW(it), EFL_UI_WIDGET_EVENT_UNFOCUSED, _item_unfocused_cb, 
it);
+  (VIEW(it), EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, 
_item_focus_change, it);
 evas_object_show(VIEW(it));
  }
 }

-- 




[EGIT] [core/efl] master 05/12: elm_multibuttonentry: on_focus_update is not needed anymore

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 1639a9e6bf30269eb5a8b684d5d5dc586be8e7b7
Author: Marcel Hollerbach 
Date:   Mon Nov 20 21:07:35 2017 +0100

elm_multibuttonentry: on_focus_update is not needed anymore

the widget itself never gets focus, the elements of the button are
getting them. MBE is basically just a box. The text input for the entry
is setted by elm_entry itself when it gets focus.

The legacy "focused" event is emitted somewhere seperatly.
---
 src/lib/elementary/efl_ui_multibuttonentry.c  | 45 ---
 src/lib/elementary/efl_ui_multibuttonentry.eo |  1 -
 2 files changed, 46 deletions(-)

diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c 
b/src/lib/elementary/efl_ui_multibuttonentry.c
index 51ea55123e..3a7cd3964a 100644
--- a/src/lib/elementary/efl_ui_multibuttonentry.c
+++ b/src/lib/elementary/efl_ui_multibuttonentry.c
@@ -351,51 +351,6 @@ _view_update(Efl_Ui_Multibuttonentry_Data *sd)
_visual_guide_text_set(obj);
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_multibuttonentry_elm_widget_on_focus_update(Eo *obj, 
Efl_Ui_Multibuttonentry_Data *sd, Elm_Object_Item *item EINA_UNUSED)
-{
-   if (elm_widget_focus_get(obj))
- {
-// ACCESS
-if (_elm_config->access_mode == ELM_ACCESS_MODE_ON) goto end;
-
-if (sd->editable)
-  {
- if ((sd->selected_it))
-   {
-  elm_layout_signal_emit(VIEW(sd->selected_it), 
"elm,state,focused", "elm");
-  elm_object_focus_set(VIEW(sd->selected_it), EINA_TRUE);
-  efl_ui_text_input_panel_show(sd->entry);
-   }
- else if (((!sd->selected_it) || (!eina_list_count(sd->items
-   {
-  _view_update(sd);
-  efl_ui_text_input_panel_show(sd->entry);
-   }
-  }
-
-efl_event_callback_legacy_call
-  (obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
- }
-   else
- {
-if (sd->editable)
-  {
- _view_update(sd);
- efl_ui_text_input_panel_hide(sd->entry);
-  }
-
-if (sd->selected_it)
-  elm_layout_signal_emit(VIEW(sd->selected_it), "elm,state,unfocused", 
"elm");
-
-efl_event_callback_legacy_call
-  (obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL);
- }
-
-end:
-   return EINA_TRUE;
-}
-
 static void
 _item_del(Elm_Multibuttonentry_Item_Data *item)
 {
diff --git a/src/lib/elementary/efl_ui_multibuttonentry.eo 
b/src/lib/elementary/efl_ui_multibuttonentry.eo
index fb60d2ebcc..a4c2bb0a83 100644
--- a/src/lib/elementary/efl_ui_multibuttonentry.eo
+++ b/src/lib/elementary/efl_ui_multibuttonentry.eo
@@ -164,7 +164,6 @@ class Efl.Ui.Multibuttonentry (Efl.Ui.Layout, 
Efl.Ui.Clickable, Efl.Ui.Format)
   Efl.Object.constructor;
   Elm.Widget.theme_apply;
   Elm.Widget.on_access_update;
-  Elm.Widget.on_focus_update;
   Efl.Ui.Translatable.translation_update;
   Elm.Widget.widget_event;
   Efl.Access.children { get; }

-- 




[EGIT] [core/efl] master 06/12: elm_layout: call the super for calling the events and methods

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit fce2e7fdb0e99a074adc5d82882c9439fb928bce
Author: Marcel Hollerbach 
Date:   Mon Nov 20 21:12:34 2017 +0100

elm_layout: call the super for calling the events and methods

this simplifies the code
---
 src/lib/elementary/efl_ui_layout.c | 9 +++--
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/lib/elementary/efl_ui_layout.c 
b/src/lib/elementary/efl_ui_layout.c
index e82ef5f19c..be0e5c9642 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -397,18 +397,15 @@ _efl_ui_layout_elm_widget_on_focus_update(Eo *obj, 
Efl_Ui_Layout_Data *_pd EINA_
  {
 elm_layout_signal_emit(obj, "elm,action,focus", "elm");
 evas_object_focus_set(wd->resize_obj, EINA_TRUE);
-efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL);
-if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj))
-  efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
EINA_TRUE);
  }
else
  {
 elm_layout_signal_emit(obj, "elm,action,unfocus", "elm");
 evas_object_focus_set(wd->resize_obj, EINA_FALSE);
-efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, 
NULL);
-if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj))
-  efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, 
EINA_FALSE);
  }
+
+   efl_ui_widget_on_focus_update(efl_super(obj, MY_CLASS), item);
+
if (efl_isa(wd->resize_obj, EDJE_OBJECT_CLASS))
  edje_object_message_signal_process(wd->resize_obj);
 

-- 




[EGIT] [tools/examples] master 03/03: core: Add mising summary

2017-11-21 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/examples.git/commit/?id=95490864329c0bc884e6e91fed76f99df1f71cde

commit 95490864329c0bc884e6e91fed76f99df1f71cde
Author: Andy Williams 
Date:   Tue Nov 21 19:10:05 2017 +

core: Add mising summary
---
 reference/c/core/src/core_loop.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/reference/c/core/src/core_loop.c b/reference/c/core/src/core_loop.c
index 09414a4..bff4711 100644
--- a/reference/c/core/src/core_loop.c
+++ b/reference/c/core/src/core_loop.c
@@ -11,7 +11,11 @@
 /*
  * Efl Core Loop examples.
  *
- * TODO
+ * A collection of loop examples. First we print out loop information and
+ * show how loops are inherited.
+ *
+ * Then we move on to the Efl.Loop.Fd and show how you could use a loop to
+ * read or write to an FD without blocking.
  */
 
 static int _count = 0;

-- 




[EGIT] [tools/examples] master 01/03: core: Add first efl_core reference, loop

2017-11-21 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/examples.git/commit/?id=981d59e32d5a243fdef3cba3775374f7ab67d53b

commit 981d59e32d5a243fdef3cba3775374f7ab67d53b
Author: Andy Williams 
Date:   Tue Nov 21 18:45:33 2017 +

core: Add first efl_core reference, loop
---
 reference/c/core/meson.build |  12 
 reference/c/core/src/core_loop.c | 147 +++
 reference/c/core/src/meson.build |  22 ++
 3 files changed, 181 insertions(+)

diff --git a/reference/c/core/meson.build b/reference/c/core/meson.build
new file mode 100644
index 000..453b9a3
--- /dev/null
+++ b/reference/c/core/meson.build
@@ -0,0 +1,12 @@
+project(
+  'efl-reference-core', 'c',
+  version : '0.0.1',
+  default_options: [ 'c_std=gnu99', 'warning_level=2' ],
+  meson_version : '>= 0.38.0')
+
+eina = dependency('eina', version : '>=1.20.99')
+efl = dependency('efl-core', version : '>=1.20.99')
+
+inc = include_directories('.')
+subdir('src')
+
diff --git a/reference/c/core/src/core_loop.c b/reference/c/core/src/core_loop.c
new file mode 100644
index 000..09414a4
--- /dev/null
+++ b/reference/c/core/src/core_loop.c
@@ -0,0 +1,147 @@
+#define EFL_EO_API_SUPPORT 1
+#define EFL_BETA_API_SUPPORT 1
+
+#include 
+
+#include 
+#include 
+
+#define FILENAME "/tmp/core_loop_test.txt"
+
+/*
+ * Efl Core Loop examples.
+ *
+ * TODO
+ */
+
+static int _count = 0;
+static void _loop_fd_read();
+
+static void
+_print_loop(Efl_Loop *loop, const char *label)
+{
+   printf("%s loop found at %p \"%s\"\n", label, loop, efl_name_get(loop));
+}
+
+static void
+_loop_current(Efl_Loop *current)
+{
+   Efl_Loop *loop;
+
+   loop = current;
+   _print_loop(loop, "Current");
+   loop = efl_loop_main_get(current);
+   _print_loop(loop, "Application Main");
+
+   loop = efl_add(EFL_LOOP_USER_CLASS, NULL,
+  efl_name_set(efl_added, "User Loop"));
+   _print_loop(loop, "Child");
+   efl_del(loop);
+}
+
+static void
+_loop_fd_read_cb(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   Efl_Loop_Fd *fd;
+   char buf[7];
+   int len;
+
+   fd = event->object;
+
+   len = read(efl_loop_fd_file_get(fd), , sizeof(buf));
+
+   // here we are exiting
+   if (len <= 0)
+ {
+efl_del(fd);
+unlink(FILENAME);
+
+efl_exit(0);
+return;
+ }
+
+   buf[len] = 0;
+   printf("READ %s", buf);
+}
+
+static void
+_loop_fd_write_cb(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   Efl_Loop_Fd *fd;
+
+   fd = event->object;
+
+   // we have outputted all we want to, remove the write handler
+   // start checking for read availability instead
+   if (_count >= 5)
+ {
+efl_del(fd);
+
+_loop_fd_read();
+return;
+ }
+
+   _count++;
+   printf("WRITING %d\n", _count);
+   write(efl_loop_fd_file_get(fd), eina_slstr_printf("TEST %d\n", _count), 7);
+}
+
+static void
+_loop_fd_write()
+{
+   Efl_Loop_Fd *loop_fd;
+   FILE *file;
+   int fd;
+
+   loop_fd = efl_add(EFL_LOOP_FD_CLASS, NULL,
+  efl_name_set(efl_added, "Write Loop"));
+
+   efl_event_callback_add(loop_fd, EFL_LOOP_FD_EVENT_WRITE, _loop_fd_write_cb, 
NULL);
+
+   file = fopen(FILENAME, "w+");
+   fd = fileno(file);
+
+   printf("Opened file with fd %d\n", fd);
+   efl_loop_fd_file_set(loop_fd, fd);
+
+}
+
+static void
+_loop_fd_read()
+{
+   Efl_Loop_Fd *loop_fd;
+   FILE *file;
+   int fd;
+
+   loop_fd = efl_add(EFL_LOOP_FD_CLASS, NULL,
+ efl_name_set(efl_added, "Read Loop"));
+
+   efl_event_callback_add(loop_fd, EFL_LOOP_FD_EVENT_READ, _loop_fd_read_cb, 
NULL);
+
+   file = fopen("/tmp/core_loop_test.txt", "r");
+   fd = fileno(file);
+
+   printf("Opened file with fd %d\n", fd);
+   efl_loop_fd_file_set(loop_fd, fd);
+}
+
+EAPI_MAIN void
+efl_main(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   const Efl_Version *version;
+
+   version = efl_loop_efl_version_get(ev->object);
+   printf("Running on EFL version %d.%d.%d [%s]\n", version->major, 
version->minor,
+version->micro, 
version->build_id);
+   printf("\n");
+
+   _loop_current(ev->object);
+   printf("\n");
+
+   _loop_fd_write();
+   // we will call _loop_fd_read() once write is complete!
+
+   // we will exit from the end of the read loop
+}
+EFL_MAIN()
+
diff --git a/reference/c/core/src/meson.build b/reference/c/core/src/meson.build
new file mode 100644
index 000..dd362e1
--- /dev/null
+++ b/reference/c/core/src/meson.build
@@ -0,0 +1,22 @@
+deps = [eina, efl]
+
+executable('efl_reference_core_loop',
+  files(['core_loop.c']),
+  dependencies : deps,
+  include_directories : inc,
+  install : true
+)
+
+executable('efl_reference_core_exe',
+  files(['core_exe.c']),
+  dependencies : deps,
+  include_directories : inc,
+  install : true
+)
+
+executable('efl_reference_core_thread',
+  files(['core_thread.c']),
+  dependencies : deps,
+  include_directories : inc,
+  install : 

[EGIT] [tools/examples] master 02/03: core: Add an io example (copier)

2017-11-21 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/examples.git/commit/?id=b6c382900c5d0579b6cc6323c37069a056061524

commit b6c382900c5d0579b6cc6323c37069a056061524
Author: Andy Williams 
Date:   Tue Nov 21 19:07:45 2017 +

core: Add an io example (copier)
---
 reference/c/core/src/core_io.c   | 93 
 reference/c/core/src/meson.build | 10 +
 2 files changed, 95 insertions(+), 8 deletions(-)

diff --git a/reference/c/core/src/core_io.c b/reference/c/core/src/core_io.c
new file mode 100644
index 000..64add9c
--- /dev/null
+++ b/reference/c/core/src/core_io.c
@@ -0,0 +1,93 @@
+#define EFL_EO_API_SUPPORT 1
+#define EFL_BETA_API_SUPPORT 1
+
+#include 
+
+#include 
+#include 
+
+/*
+ * Efl.IO examples.
+ *
+ * This IO example simply copies data from a source (stdin) to a
+ * destination (stdout) using an Efl.Io.Copier.
+ */
+
+Eo *_copier = NULL;
+
+static void
+_copier_done(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   fprintf(stderr, "INFO: %s done\n", efl_name_get(event->object));
+
+   efl_exit(EXIT_SUCCESS);
+}
+
+static void
+_copier_error(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   const Eina_Error *perr = event->info;
+
+   fprintf(stderr, "INFO: %s error: #%d '%s'\n",
+   efl_name_get(event->object), *perr, eina_error_msg_get(*perr));
+
+   efl_exit(EXIT_FAILURE);
+}
+
+EFL_CALLBACKS_ARRAY_DEFINE(copier_cbs,
+   { EFL_IO_COPIER_EVENT_DONE, _copier_done },
+   { EFL_IO_COPIER_EVENT_ERROR, _copier_error });
+
+EAPI void
+efl_pause(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
+{
+}
+
+EAPI void
+efl_resume(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
+{
+}
+
+EAPI void
+efl_terminate(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
+{
+   if (!_copier)
+ return;
+
+   efl_del(efl_io_copier_source_get(_copier));
+   efl_del(efl_io_copier_destination_get(_copier));
+   efl_del(_copier);
+}
+
+EAPI_MAIN void
+efl_main(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   Eo *input, *output, *loop;
+
+   /*
+* some objects such as the Efl.Io.Copier depend on main loop,
+* thus their parent must be a loop provider. We use the loop itself.
+*/
+   loop = ev->object;
+
+   // set up our objects to copy, use stdin and stdout
+   input = efl_add(EFL_IO_STDIN_CLASS, loop);
+   output = efl_add(EFL_IO_STDOUT_CLASS, loop);
+
+   // copier: set up a copied from input to output
+   _copier = efl_add(EFL_IO_COPIER_CLASS, loop,
+ efl_name_set(efl_added, "Copier"),
+ efl_io_copier_source_set(efl_added, input),
+ efl_io_copier_destination_set(efl_added, output),
+ efl_event_callback_array_add(efl_added, copier_cbs(), 
NULL));
+   if (!_copier)
+ {
+fprintf(stderr, "ERROR: could not create Efl_Io_Copier\n");
+efl_exit(EXIT_FAILURE);
+ }
+
+   printf("Type something here and press enter, it will be copied to 
stdout...\n");
+   printf("  (press Ctrl-D to exit)\n");
+}
+EFL_MAIN_EX()
+
diff --git a/reference/c/core/src/meson.build b/reference/c/core/src/meson.build
index dd362e1..fae0d69 100644
--- a/reference/c/core/src/meson.build
+++ b/reference/c/core/src/meson.build
@@ -7,16 +7,10 @@ executable('efl_reference_core_loop',
   install : true
 )
 
-executable('efl_reference_core_exe',
-  files(['core_exe.c']),
+executable('efl_reference_core_io',
+  files(['core_io.c']),
   dependencies : deps,
   include_directories : inc,
   install : true
 )
 
-executable('efl_reference_core_thread',
-  files(['core_thread.c']),
-  dependencies : deps,
-  include_directories : inc,
-  install : true
-)

-- 




[EGIT] [core/efl] master 01/01: gl_drm: Use the same gbm_device for multiple instances

2017-11-21 Thread Derek Foreman
derekf pushed a commit to branch master.

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

commit cbbac076f47e6cd0782abe0ec3957f867059800c
Author: Derek Foreman 
Date:   Tue Nov 21 12:26:17 2017 -0600

gl_drm: Use the same gbm_device for multiple instances

If we want to share a gl context (we do) between multiple instances of
gl_drm, we need to make sure they all use the same gbm_device.

This resolves a blocker for multi-output on the gl_drm backend.
---
 src/modules/evas/engines/gl_drm/evas_engine.c | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c 
b/src/modules/evas/engines/gl_drm/evas_engine.c
index fd219bbd9b..39f5442218 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.c
+++ b/src/modules/evas/engines/gl_drm/evas_engine.c
@@ -34,6 +34,8 @@ int _extn_have_buffer_age = 1;
 static Eina_Bool initted = EINA_FALSE;
 static Eina_Bool dmabuf_present = EINA_FALSE;
 static int gl_wins = 0;
+static struct gbm_device *gbm_dev = NULL;
+static int gbm_dev_refs = 0;
 
 /* local function prototype types */
 typedef void (*glsym_func_void)();
@@ -125,6 +127,13 @@ eng_gbm_init(Evas_Engine_Info_GL_Drm *info)
int fd;
if (!info) return EINA_FALSE;
 
+   if (gbm_dev)
+ {
+info->info.gbm = gbm_dev;
+gbm_dev_refs++;
+return EINA_TRUE;
+ }
+
fd = ecore_drm2_device_fd_get(info->info.dev);
if (!(info->info.gbm = gbm_create_device(fd)))
  {
@@ -132,6 +141,8 @@ eng_gbm_init(Evas_Engine_Info_GL_Drm *info)
 return EINA_FALSE;
  }
 
+   gbm_dev = info->info.gbm;
+   gbm_dev_refs = 1;
return EINA_TRUE;
 }
 
@@ -142,8 +153,13 @@ eng_gbm_shutdown(Evas_Engine_Info_GL_Drm *info)
 
if (info->info.gbm)
  {
-gbm_device_destroy(info->info.gbm);
+gbm_dev_refs--;
 info->info.gbm = NULL;
+if (!gbm_dev_refs)
+  {
+ gbm_device_destroy(gbm_dev);
+ gbm_dev = NULL;
+  }
  }
 
return EINA_TRUE;

-- 




[EGIT] [core/efl] feature/ecore_exe_formatting 01/01: ecore: reformat ecore_exe_posix.c

2017-11-21 Thread Mike Blumenkrantz
discomfitor pushed a commit to branch feature/ecore_exe_formatting.

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

commit a0a9468f4c1624b5e73e42f5012f01e921d6f80f
Author: Mike Blumenkrantz 
Date:   Tue Nov 21 12:24:51 2017 -0500

ecore: reformat ecore_exe_posix.c
---
 src/lib/ecore/ecore_exe_posix.c | 1413 ---
 1 file changed, 708 insertions(+), 705 deletions(-)

diff --git a/src/lib/ecore/ecore_exe_posix.c b/src/lib/ecore/ecore_exe_posix.c
index 3cbba20f44..bebfce26a1 100644
--- a/src/lib/ecore/ecore_exe_posix.c
+++ b/src/lib/ecore/ecore_exe_posix.c
@@ -49,52 +49,54 @@ struct _ecore_exe_dead_exe
char *cmd;
 };
 
-static inline void _ecore_exe_exec_it(const char *exe_cmd,
+static inline void _ecore_exe_exec_it(const char *exe_cmd,
   Ecore_Exe_Flags flags);
-static Eina_Bool   _ecore_exe_data_generic_handler(void *data,
+static Eina_Bool   _ecore_exe_data_generic_handler(void *data,
Ecore_Fd_Handler 
*fd_handler,
-   Ecore_Exe_Flags   flags);
-static Eina_Bool_ecore_exe_data_error_handler(void 
*data,
-  Ecore_Fd_Handler 
*fd_handler);
-static Eina_Bool_ecore_exe_data_read_handler(void 
*data,
- Ecore_Fd_Handler 
*fd_handler);
-static Eina_Bool_ecore_exe_data_write_handler(void 
*data,
-  Ecore_Fd_Handler 
*fd_handler);
-static void _ecore_exe_flush(Ecore_Exe *obj);
-static Ecore_Exe   *_ecore_exe_is_it_alive(pid_t pid);
-static Eina_Bool_ecore_exe_make_sure_its_dead(void *data);
-static Eina_Bool_ecore_exe_make_sure_its_really_dead(void *data);
-static void _ecore_exe_dead_attach(Ecore_Exe *obj);
+   Ecore_Exe_Flags flags);
+static Eina_Bool   _ecore_exe_data_error_handler(void *data,
+ Ecore_Fd_Handler *fd_handler);
+static Eina_Bool   _ecore_exe_data_read_handler(void *data,
+Ecore_Fd_Handler *fd_handler);
+static Eina_Bool   _ecore_exe_data_write_handler(void *data,
+ Ecore_Fd_Handler *fd_handler);
+static void_ecore_exe_flush(Ecore_Exe *obj);
+static Ecore_Exe  *_ecore_exe_is_it_alive(pid_t pid);
+static Eina_Bool   _ecore_exe_make_sure_its_dead(void *data);
+static Eina_Bool   _ecore_exe_make_sure_its_really_dead(void *data);
+static void_ecore_exe_dead_attach(Ecore_Exe *obj);
 
 static const char *shell = NULL;
 
 /* FIXME: This errno checking stuff should be put elsewhere for everybody to 
use.
  * For now it lives here though, just to make testing easier.
  */
-static int _ecore_exe_check_errno(int result,
-  const char *file,
-  int line);
+static int _ecore_exe_check_errno(int result,
+  const char *file,
+  int line);
 
-#define E_IF_NO_ERRNO(result, foo, ok) 
  \
-  while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) 
== -1) sleep(1);  \
-  if (ok)
+#define E_IF_NO_ERRNO(result, foo, ok) 
   \
+  while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) 
== -1) \
+sleep(1);  
   \
+  if (ok)
 
-#define E_NO_ERRNO(result, foo, ok) \
-  while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) 
== -1) sleep(1)
+#define E_NO_ERRNO(result, foo, ok)
   \
+  while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) 
== -1) \
+sleep(1)
 
 #define E_IF_NO_ERRNO_NOLOOP(result, foo, ok) \
   if (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)))
 
 static int
-_ecore_exe_check_errno(int result,
+_ecore_exe_check_errno(int result,
const char *file EINA_UNUSED,
-   int line EINA_UNUSED)
+   int line EINA_UNUSED)
 {
int saved_errno = errno;
 
if (result == -1)
-   {
-  perror("*** errno reports ");
+ {
+perror("*** errno reports ");
 /* What is currently supported -
  *
  *   pipe
@@ -150,63 +152,63 @@ _ecore_exe_check_errno(int result,
  *// Something failed, cleanup.
  * }
  */
-  switch (saved_errno)
-  {
-   

[EGIT] [core/efl] master 01/01: ecore_wl2: Fix buffer manager refcounting

2017-11-21 Thread Derek Foreman
derekf pushed a commit to branch master.

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

commit 9f3edead9d959ab86265f8d8ca1750a8ddf7ae4e
Author: Derek Foreman 
Date:   Tue Nov 21 10:09:15 2017 -0600

ecore_wl2: Fix buffer manager refcounting

commit 0cf806005e32827f174f42cba27192c47ed9c4a7 correctly fixed a
leaked buffer.  However, other code was already accounting for the
leaked reference to the buffer manager, so an extra deref happened
and broke the universe - but only on hardware that no developer
has access to for testing.
---
 src/lib/ecore_wl2/ecore_wl2_buffer.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_buffer.c 
b/src/lib/ecore_wl2/ecore_wl2_buffer.c
index 3aabe46858..8c4b0ff39e 100644
--- a/src/lib/ecore_wl2/ecore_wl2_buffer.c
+++ b/src/lib/ecore_wl2/ecore_wl2_buffer.c
@@ -583,7 +583,6 @@ _create_failed(void *data, struct 
zwp_linux_buffer_params_v1 *params)
Ecore_Wl2_Display *ewd = data;
 
zwp_linux_buffer_params_v1_destroy(params);
-   _buffer_manager_deref();
_buffer_manager_destroy();
ewd->wl.dmabuf = NULL;
 }

-- 




[EGIT] [core/efl] master 01/04: elm_widget: dont use the inner var for searching the top widget

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 8c68c85706e37ede02917970371dabde05403e0b
Author: Marcel Hollerbach 
Date:   Tue Nov 21 16:12:12 2017 +0100

elm_widget: dont use the inner var for searching the top widget

you think there is only one elm_parent behind the elementary property
parent? Oh no! Elm_Notify and Elm_Popup have theire own parent fields,
and those fields are not returned when calleing elm_widget_parent_get,
they are also not given to the elm_widget implementation of
elm_widget_top_get, so a call to elm_widget_top_get stalls at elm.notify
or elm.popup.

fix T6389
---
 src/lib/elementary/elm_widget.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c
index d735823d80..5186fea304 100644
--- a/src/lib/elementary/elm_widget.c
+++ b/src/lib/elementary/elm_widget.c
@@ -1927,10 +1927,11 @@ elm_widget_highlight_get(const Eo *obj)
 EOLIAN static Evas_Object*
 _elm_widget_widget_top_get(Eo *obj, Elm_Widget_Smart_Data *sd)
 {
-   if (sd->parent_obj)
+   Elm_Widget *parent = elm_widget_parent_get(obj);
+   if (parent)
  {
-if (!efl_isa(sd->parent_obj, ELM_WIDGET_CLASS)) return NULL;
-return efl_ui_widget_top_get(sd->parent_obj);
+if (!efl_isa(parent, ELM_WIDGET_CLASS)) return NULL;
+return efl_ui_widget_top_get(parent);
  }
return obj;
 }

-- 




[EGIT] [core/efl] master 04/04: efl_ui_focus_manager_calc: keep focus history arround

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit e8cfdb5dcd921aa9793c5cc42d966b2af1ac3ef3
Author: Marcel Hollerbach 
Date:   Tue Nov 21 16:15:46 2017 +0100

efl_ui_focus_manager_calc: keep focus history arround

this now keeps items arround even if a explicit other widget was
focused. This is usefull if we have a few logical items on the focus
stack and you remove them.
---
 src/lib/elementary/efl_ui_focus_manager_calc.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index c5e1d496f0..4e61fa1472 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -1344,8 +1344,8 @@ _request_subchild(Node *node)
 EOLIAN static void
 _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, 
Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Object *focus)
 {
-   Node *node;
-   Efl_Ui_Focus_Object *last_focusable;
+   Node *node, *last;
+   Efl_Ui_Focus_Object *last_focusable = NULL;
Efl_Ui_Focus_Manager *redirect_manager;
Eo *focusable;
Node_Type type;
@@ -1409,7 +1409,9 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
type = node->type;
focusable = node->focusable;
 
-   last_focusable = _focus_stack_unfocus_last(pd);
+   last = eina_list_last_data_get(pd->focus_stack);
+   if (last)
+ last_focusable = last->focusable;
 
//remove the object from the list and add it again
pd->focus_stack = eina_list_remove(pd->focus_stack, node);
@@ -1422,6 +1424,7 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_
if (node->type == NODE_TYPE_NORMAL)
  {
 //populate the new change
+efl_ui_focus_object_focus_set(last_focusable, EINA_FALSE);
 efl_ui_focus_object_focus_set(node->focusable, EINA_TRUE);
 efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, 
last_focusable);
  }

-- 




[EGIT] [core/efl] master 02/04: efl_ui_focus_layer: rely on _manager_in_chain_set

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit a58cc75e55cb18d9ab4c36310a23d2d90d9a9cd0
Author: Marcel Hollerbach 
Date:   Tue Nov 21 16:14:18 2017 +0100

efl_ui_focus_layer: rely on _manager_in_chain_set

so we dont have to set the direct by hand anymore
---
 src/lib/elementary/efl_ui_focus_layer.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_focus_layer.c 
b/src/lib/elementary/efl_ui_focus_layer.c
index eee240523a..f46b7351d4 100644
--- a/src/lib/elementary/efl_ui_focus_layer.c
+++ b/src/lib/elementary/efl_ui_focus_layer.c
@@ -88,13 +88,15 @@ _efl_ui_focus_layer_enable_set(Eo *obj, 
Efl_Ui_Focus_Layer_Data *pd, Eina_Bool v
  {
 pd->registered_manager = elm_widget_top_get(obj);
 
-efl_ui_focus_manager_redirect_set(pd->registered_manager, obj);
+efl_ui_focus_manager_calc_register_logical(pd->registered_manager, 
obj, efl_ui_focus_manager_root_get(pd->registered_manager), obj);
 efl_ui_focus_manager_focus_set(pd->manager, obj);
  }
else
  {
 if (efl_ui_focus_manager_redirect_get(pd->registered_manager) == obj)
   efl_ui_focus_manager_redirect_set(pd->registered_manager, NULL);
+
+efl_ui_focus_manager_calc_unregister(pd->registered_manager, obj);
 pd->registered_manager = NULL;
  }
 }

-- 




[EGIT] [core/efl] master 03/04: efl_ui_focus_manager_calc: remove a logical item that caused a redirect

2017-11-21 Thread Marcel Hollerbach
bu5hm4n pushed a commit to branch master.

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

commit 688e7001c158af51bb92e586f701a8833cc98b46
Author: Marcel Hollerbach 
Date:   Tue Nov 21 16:15:02 2017 +0100

efl_ui_focus_manager_calc: remove a logical item that caused a redirect

so we dont try to focus a logical item.
---
 src/lib/elementary/efl_ui_focus_manager_calc.c | 16 +++-
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c 
b/src/lib/elementary/efl_ui_focus_manager_calc.c
index d6f7bfac82..c5e1d496f0 100644
--- a/src/lib/elementary/efl_ui_focus_manager_calc.c
+++ b/src/lib/elementary/efl_ui_focus_manager_calc.c
@@ -895,15 +895,21 @@ 
_efl_ui_focus_manager_calc_efl_ui_focus_manager_redirect_set(Eo *obj, Efl_Ui_Foc
 
efl_ui_focus_manager_reset_history(old_manager);
 
+   //we might have saved a logical element at the top, remove that if there is 
one
+   {
+  Node *n = NULL;
+
+  n = eina_list_last_data_get(pd->focus_stack);
+
+  if (n && n->type == NODE_TYPE_ONLY_LOGICAL && n->redirect_manager == 
old_manager)
+pd->focus_stack = eina_list_remove(pd->focus_stack, n);
+   }
+
//adjust focus property of the most upper element
{
   Node *n = NULL;
-  Eina_List *last;
-  /* focus the upper most element */
-  last = eina_list_last(pd->focus_stack);
 
-  if (last)
-n = eina_list_data_get(last);
+  n = eina_list_last_data_get(pd->focus_stack);
 
   if (n)
 {

-- 




[EGIT] [website/www-content] master 01/01: Wiki page eo-inherit.md changed with summary [] by Nate Drake

2017-11-21 Thread Nate Drake
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=c1b10a65081c542981a62ea2fd68c633d247ff8e

commit c1b10a65081c542981a62ea2fd68c633d247ff8e
Author: Nate Drake 
Date:   Tue Nov 21 07:09:02 2017 -0800

Wiki page eo-inherit.md changed with summary [] by Nate Drake
---
 pages/develop/tutorial/c/eo-inherit.md.txt | 57 +++---
 1 file changed, 29 insertions(+), 28 deletions(-)

diff --git a/pages/develop/tutorial/c/eo-inherit.md.txt 
b/pages/develop/tutorial/c/eo-inherit.md.txt
index df83932e..987cb49b 100644
--- a/pages/develop/tutorial/c/eo-inherit.md.txt
+++ b/pages/develop/tutorial/c/eo-inherit.md.txt
@@ -12,11 +12,11 @@ This tutorial shows how to inherit from a class in Eolian. 
It also describes how
 ## Prerequisites ##
 
 * This tutorial builds on top of the ``Example.Rectangle`` class developed in 
[Creating New Classes with Eolian](eo-classes.md).
-* The [Hello World](hello-world.md) tutorial explains how to write an 
application using the EFL.
+* The [Hello World](hello-world.md) tutorial explains how to write an 
application using EFL.
 
 ## Step One: Creating a Derived Class ##
 
-Copy all the ``example_rectangle.*`` files you created in the [Creating New 
Classes with Eolian](eo-classes.md) tutorial. There should be 4 of them: The 
Eolian file (``.eo``), the implementation file (``.c``) and two autogenerated 
files (``.eo.h`` and ``.eo.c``). Also copy the main file 
(``eo_classes_main.c``) and rename it to ``eo_inherit_main.c``, for consistency 
with the name of this tutorial.
+Copy all the ``example_rectangle.*`` files you created in the [Creating New 
Classes with Eolian](eo-classes.md) tutorial. There should be 4 of them: The 
Eolian file (``.eo``), the implementation file (``.c``) and two autogenerated 
files (``.eo.h`` and ``.eo.c``). Make sure to copy the main file 
(``eo_classes_main.c``) and rename it to ``eo_inherit_main.c`` for consistency 
with the name of this tutorial.
 
 Now you will create a new class, named ``Example.Square`` which will inherit 
from ``Example.rectangle``. The theory states that squares are a particular 
kind of rectangles in which the width and the height are equal. Therefore, the 
``Example.Square`` class will *override* ``Example.Rectangle``'s ``width`` and 
``height`` setters to ensure that those two variables have always the same 
value.
 
@@ -31,11 +31,11 @@ class Example.Square (Example.Rectangle) {
 }
 ```
 
-As you can see, it is derived from ``Example.Rectangle``. Regular classes must 
derive from the ``Efl.Object``, but in this case, you get that automatically, 
since ``Example.Rectangle`` already derives from ``Efl.Object``.
+As you can see this is derived from ``Example.Rectangle``. Regular classes 
must be derived from ``Efl.Object`` but in this case you get that 
automatically, since ``Example.Rectangle`` already is already derived from 
``Efl.Object``.
 
-You can also notice that this class does not provide any new method or 
property (there is no ``methods`` block). It only implements two properties, 
which currently belong to its parent class (``Example.Rectangle.width`` and 
``Example.Rectangle.height``). Furthermore, only the setters for these 
properties are implemented: Reads of these properties will be routed to the 
getter in the parent class.
+You can also notice that this class does not provide any new method or 
property (there is no ``methods`` block). It only implements two properties, 
which currently belong to its parent class (``Example.Rectangle.width`` and 
``Example.Rectangle.height``). Furthermore only the setters for these 
properties are implemented: Reads of these properties will be routed to the 
getter in the parent class.
 
-Next, turn the Eolian description into C files with the ``eolian_gen`` command 
(as seen in the previous tutorial). Be careful, though, there is a new 
parameter in use in this example:
+Next turn the Eolian description into C files with the ``eolian_gen`` command 
(as seen in the previous tutorial). Be careful, as there's a new parameter in 
use in this example:
 
 ```bash
 eolian_gen -gchi example_square.eo -I .
@@ -43,13 +43,13 @@ eolian_gen -gchi example_square.eo -I .
 
 The ``-I`` parameter tells ``eolian_gen`` where to look for other Eolian 
files, in case it needs the description of a class it does not know about. In 
this tutorial, ``Example.Square`` needs the description of 
``Example.Rectangle`` which resides in the ``example_rectangle.eo`` file. This 
file is in the same folder as ``example_square.eo``, the current folder, 
therefore, the final command requires a ``-I .`` (The dot indicates the current 
folder).
 
-This will create the boilerplate files (``.eo.h`` and ``.eo.c``) and the 
implementation file which you will fill in the next step.
+This will create the boilerplate files (``.eo.h`` and ``.eo.c``) and the 
implementation file, which you will complete in the 

[EGIT] [website/www-content] master 01/01: Wiki page git-guide.md changed with summary [] by Mike Blumenkrantz

2017-11-21 Thread Mike Blumenkrantz
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=03a1f6cd9c488bec31b33be5e2c5db11d15a5286

commit 03a1f6cd9c488bec31b33be5e2c5db11d15a5286
Author: Mike Blumenkrantz 
Date:   Tue Nov 21 07:09:06 2017 -0800

Wiki page git-guide.md changed with summary [] by Mike Blumenkrantz
---
 pages/contrib/devs/git-guide.md.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/contrib/devs/git-guide.md.txt 
b/pages/contrib/devs/git-guide.md.txt
index 612ae211..98bfaa39 100644
--- a/pages/contrib/devs/git-guide.md.txt
+++ b/pages/contrib/devs/git-guide.md.txt
@@ -143,7 +143,7 @@ $ git push origin --delete devs/{devname}/{branch}
 
 ### Feature Branches ###
 
-Anyone with full commit access can create, manage, or delete a feature branch 
for a repository. The naming must be ``feature/{name}`` where ``{name}`` is the 
name of the feature. Feature branches can be pushed to by anyone with any form 
of commit access, but they cannot be rewritten (ie. no ``rebase -i``).
+Anyone with full commit access can create, manage, or delete a feature branch 
for a repository. The naming must be ``feature/{name}`` where ``{name}`` is the 
name of the feature. Feature branches can be pushed to by anyone with any form 
of commit access (including probies), but they cannot be rewritten (ie. no 
``rebase -i``).
 
 The purpose of a feature branch is to continue the collaborative development 
of a feature which has already reached the state of being functional during 
initial development in a developer branch; feature branches should be 
considered the "alpha release" state for any significant feature prior to 
merging it to master.
 

-- 




[EGIT] [core/efl] master 02/02: edje_cc: Not reset inherit_script during group inherit

2017-11-21 Thread Jeeyong Um
conr2d pushed a commit to branch master.

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

commit eeb2809d9e0d6fd9ea30d1555946d4ff384791dc
Author: Jeeyong Um 
Date:   Tue Nov 21 23:51:21 2017 +0900

edje_cc: Not reset inherit_script during group inherit

If group inherits after setting "inherit_script: 1;", inherit_script
is overwritten by the value of parent group. However, inherit_script
indicates user wants to inherit script in this context, it should not
be initialized as false.
---
 src/bin/edje/edje_cc_handlers.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index 74e5ad9c0d..c32609b1df 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -5034,7 +5034,8 @@ st_collections_group_inherit(void)
pcp = (Edje_Part_Collection_Parser *)pc;
pcp2 = (Edje_Part_Collection_Parser *)pc2;
pcp->default_mouse_events = pcp2->default_mouse_events;
-   pcp->inherit_script = pcp2->inherit_script;
+   if (pcp2->inherit_script)
+ pcp->inherit_script = pcp2->inherit_script;
 
/* as of 7 April 2014, target groups cannot be modified and are not freed.
 * this code will break if that ever changes.

-- 




[EGIT] [core/efl] master 01/02: edje_cc: Fix successive script inheritance

2017-11-21 Thread Jeeyong Um
conr2d pushed a commit to branch master.

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

commit cf24e714ea8cdffc084969b67d0c1c48b53a4bac
Author: Jeeyong Um 
Date:   Tue Nov 21 23:48:28 2017 +0900

edje_cc: Fix successive script inheritance
---
 src/bin/edje/edje_cc_script.c | 29 +++--
 1 file changed, 7 insertions(+), 22 deletions(-)

diff --git a/src/bin/edje/edje_cc_script.c b/src/bin/edje/edje_cc_script.c
index 840945ed73..dca9fef953 100644
--- a/src/bin/edje/edje_cc_script.c
+++ b/src/bin/edje/edje_cc_script.c
@@ -46,16 +46,13 @@ code_parse(Code *code)
Eina_List *l;
int id;
 
-   if (code->is_lua) return;
+   if (code->is_lua || code->parsed) return;
 
id = eina_list_data_idx(codes, code);
pcp = eina_list_nth(edje_collections, id);
 
EINA_LIST_FOREACH(pcp->base_codes, l, base)
- {
-if (!base->parsed)
-  code_parse(base);
- }
+ code_parse(base);
 
if (code->shared)
  code_parse_internal(code);
@@ -393,21 +390,6 @@ script_rewrite(Code *code)
   }
 if (count)
   eina_strbuf_append(buf, ";\n");
-
-count = 0;
-EINA_LIST_FOREACH(vars, l, sym)
-  {
- if (sym->is_public) continue;
-
- if (count++)
-   eina_strbuf_append(buf, ", ");
-
- if (sym->tag)
-   eina_strbuf_append_printf(buf, "%s:", sym->tag);
- eina_strbuf_append(buf, sym->name);
-  }
-if (count)
-  eina_strbuf_append(buf, ";\n");
  }
 
if (func)
@@ -460,6 +442,9 @@ script_rewrite(Code *code)
code->original = strdup(code->shared);
eina_strbuf_free(buf);
 
-   eina_list_free(vars);
-   eina_list_free(func);
+   eina_list_free(code->vars);
+   eina_list_free(code->func);
+
+   code->vars = vars;
+   code->func = func;
 }

-- 




[EGIT] [website/www-content] master 02/03: Merge branch 'master' of git+ssh://git.enlightenment.org/website/www-content

2017-11-21 Thread www.enlightenment.org
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=5a7a719feb4883f8bd840b0582ed9b81734226f7

commit 5a7a719feb4883f8bd840b0582ed9b81734226f7
Merge: e06f7309 bdc31297
Author: www.enlightenment.org 
Date:   Tue Nov 21 04:18:50 2017 -0800

Merge branch 'master' of git+ssh://git.enlightenment.org/website/www-content


-- 




[EGIT] [website/www-content] master 03/03: Wiki page eo-inherit.md changed with summary [] by Nate Drake

2017-11-21 Thread Nate Drake
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=0db38ecdd4c4aa8385a8be9e095d73416b5c6e4f

commit 0db38ecdd4c4aa8385a8be9e095d73416b5c6e4f
Author: Nate Drake 
Date:   Tue Nov 21 06:24:32 2017 -0800

Wiki page eo-inherit.md changed with summary [] by Nate Drake
---
 pages/develop/tutorial/c/eo-inherit.md.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/pages/develop/tutorial/c/eo-inherit.md.txt 
b/pages/develop/tutorial/c/eo-inherit.md.txt
index 27b61c20..df83932e 100644
--- a/pages/develop/tutorial/c/eo-inherit.md.txt
+++ b/pages/develop/tutorial/c/eo-inherit.md.txt
@@ -1,10 +1,11 @@
 ---
 ~~Title: Class Inheritance with Eolian~~
+~~NOCACHE~~
 ---
 
 # Class Inheritance with Eolian #
 
-The [Creating New Classes](eo-classes.md) tutorial explained how to define new 
classes using Eolian. New classes, though, don't need to start from scratch. In 
fact, it is common practice in *Object Oriented Programming* to (OOP) extend 
the functionality of an existing class by *inheriting* from it and creating a 
new one.
+The [Creating New Classes](eo-classes.md) tutorial explained how to define new 
classes using Eolian. New classes don't need to start from scratch however. In 
fact, it is common practice in *Object Oriented Programming (OOP)* to extend 
the functionality of an existing class by *inheriting* from it and creating a 
new one.
 
 This tutorial shows how to inherit from a class in Eolian. It also describes 
how derived classes can access their parent's public and private data.
 

-- 




[EGIT] [website/www-content] master 01/03: re-add file that somehow got deleted by mistake

2017-11-21 Thread root
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=e06f73093b359c5ed5248df29e65dc0bbbebf479

commit e06f73093b359c5ed5248df29e65dc0bbbebf479
Author: root 
Date:   Tue Nov 21 04:17:06 2017 -0800

re-add file that somehow got deleted by mistake
---
 pages/develop/tutorial/c/eo-classes.md.txt | 372 +
 1 file changed, 372 insertions(+)

diff --git a/pages/develop/tutorial/c/eo-classes.md.txt 
b/pages/develop/tutorial/c/eo-classes.md.txt
new file mode 100644
index ..c21280c6
--- /dev/null
+++ b/pages/develop/tutorial/c/eo-classes.md.txt
@@ -0,0 +1,372 @@
+---
+~~Title: Creating New Classes with Eolian~~
+---
+
+# Creating New Classes with Eolian #
+
+The [Introduction to Eo](eo-intro.md) tutorial showed you how to instantiate 
Eo objects of a given class using ``efl_add()``. This tutorial demonstrates how 
to create new classes so new kinds of objects can be instantiated.
+
+You'll learn how to describe classes using the Eolian language and then 
further customize them with class-specific code. You will also master the 
basics of class inheritance with Eolian.
+
+## Prerequisites ##
+
+* The [Introduction to Eo](eo-intro.md) tutorial explains the basis of Eo 
object creation and reference counting.
+* The [Hello World](hello-world.md) tutorial details how to write a simple 
application using EFL.
+
+## Eolian Files and eolian_gen ##
+
+Each class in EFL is described in an *Eolian file*, with the same name as the 
class and extension *.eo*. Eolian files are plain text files that contain, 
among other things, the name of the described class and the list of its 
properties and methods, along with their parameters and return values.
+
+Most importantly, this class description is independent of any programming 
language and can be used to generate automatic bindings and boiler plate code 
for other programming languages. With this automatically generated code you 
only need to write the details of your implementation in the language of your 
choice.
+
+The code generator for the C language is ``eolian_gen``, which is included in 
your EFL installation. So far, it is the only language available but there are 
plans to support more in the near future.
+
+You can invoke ``eolian_gen`` like so:
+
+```bash
+eolian_gen -gchi my_new_class.eo
+```
+
+This generates three files:
+
+* ``my_new_class.eo.h``: **Header file** including all the method signatures 
related to your class. In particular, it contains the class symbol you need to 
pass to ``efl_add()``, so always include this file if you want to use your 
class.
+* ``my_new_class.eo.c``: Boilerplate code you don't usually need to worry 
about. It is automatically included from the implementation file (next one).
+* ``my_new_class.c``: The **implementation file**. It initially contains the 
empty bodies for all the methods you need to implement in your class. This is 
the only file you need to modify and include in your builds, as you will see in 
this tutorial.
+
+The ``-gchi`` parameter tells ``eolian_gen`` to generate the Source file, the 
Header file and the Implementation file.
+
+In summary, for each new class you create you must:
+
+1. Describe the class with an ``.eo`` file and call ``eolian_gen``.
+2. Add your code to the implementation file (``my_new_class.c``).
+3. Add the implementation file to your build.
+4. Include the header file (``my_new_class.eo.h``) from your application to 
use the new class.
+
+The rest of the tutorial shows a practical example which will illustrate this 
procedure.
+
+## Step One: Creating a Simple Class Description ##
+
+You will now create an Eolian file for a class named ``Example.Rectangle``. 
The file **must** be called ``examples_rectangle.eo``.
+
+This class will represent a rectangle shape, so it will have two properties, 
the ``width`` and ``height`` of the rectangle, which can be read and written.
+
+Start with the class name and the list of its parent classes in parentheses:
+
+```
+class Example.Rectangle (Efl.Object) {
+}
+```
+
+The only parent class is ``Efl.Object``, which is mandatory for regular 
classes (exceptions like *Interfaces* will be dealt with later).
+
+Next add a method declaration block, wherein you'll list the methods and 
properties of your class:
+
+```
+class Example.Rectangle (Efl.Object) {
+   methods {
+   }
+}
+```
+
+Now add a property named ``width`` inside the ``methods`` block, which you can 
``set``, ``get`` and whose only value is an ``int``:
+
+```
+  @property width {
+ set {
+ }
+ get {
+ }
+ values {
+width: int;
+ }
+  }
+```
+
+Next do the same for the ``height`` property, right after the ``width`` block:
+
+```
+  @property height {
+ set {
+ }
+ get {
+ }
+ values {
+height: int;
+ }
+  }
+```
+

[EGIT] [website/www-content] master 01/01: re-add file that somehow got deleted by mistake

2017-11-21 Thread Andy Williams
ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=bdc31297aff5cae8e6a1241d9a9b209be0fabfaa

commit bdc31297aff5cae8e6a1241d9a9b209be0fabfaa
Author: Andy Williams 
Date:   Tue Nov 21 12:18:06 2017 +

re-add file that somehow got deleted by mistake
---
 pages/develop/tutorial/c/eo-classes.md.txt | 372 +
 1 file changed, 372 insertions(+)

diff --git a/pages/develop/tutorial/c/eo-classes.md.txt 
b/pages/develop/tutorial/c/eo-classes.md.txt
new file mode 100644
index ..c21280c6
--- /dev/null
+++ b/pages/develop/tutorial/c/eo-classes.md.txt
@@ -0,0 +1,372 @@
+---
+~~Title: Creating New Classes with Eolian~~
+---
+
+# Creating New Classes with Eolian #
+
+The [Introduction to Eo](eo-intro.md) tutorial showed you how to instantiate 
Eo objects of a given class using ``efl_add()``. This tutorial demonstrates how 
to create new classes so new kinds of objects can be instantiated.
+
+You'll learn how to describe classes using the Eolian language and then 
further customize them with class-specific code. You will also master the 
basics of class inheritance with Eolian.
+
+## Prerequisites ##
+
+* The [Introduction to Eo](eo-intro.md) tutorial explains the basis of Eo 
object creation and reference counting.
+* The [Hello World](hello-world.md) tutorial details how to write a simple 
application using EFL.
+
+## Eolian Files and eolian_gen ##
+
+Each class in EFL is described in an *Eolian file*, with the same name as the 
class and extension *.eo*. Eolian files are plain text files that contain, 
among other things, the name of the described class and the list of its 
properties and methods, along with their parameters and return values.
+
+Most importantly, this class description is independent of any programming 
language and can be used to generate automatic bindings and boiler plate code 
for other programming languages. With this automatically generated code you 
only need to write the details of your implementation in the language of your 
choice.
+
+The code generator for the C language is ``eolian_gen``, which is included in 
your EFL installation. So far, it is the only language available but there are 
plans to support more in the near future.
+
+You can invoke ``eolian_gen`` like so:
+
+```bash
+eolian_gen -gchi my_new_class.eo
+```
+
+This generates three files:
+
+* ``my_new_class.eo.h``: **Header file** including all the method signatures 
related to your class. In particular, it contains the class symbol you need to 
pass to ``efl_add()``, so always include this file if you want to use your 
class.
+* ``my_new_class.eo.c``: Boilerplate code you don't usually need to worry 
about. It is automatically included from the implementation file (next one).
+* ``my_new_class.c``: The **implementation file**. It initially contains the 
empty bodies for all the methods you need to implement in your class. This is 
the only file you need to modify and include in your builds, as you will see in 
this tutorial.
+
+The ``-gchi`` parameter tells ``eolian_gen`` to generate the Source file, the 
Header file and the Implementation file.
+
+In summary, for each new class you create you must:
+
+1. Describe the class with an ``.eo`` file and call ``eolian_gen``.
+2. Add your code to the implementation file (``my_new_class.c``).
+3. Add the implementation file to your build.
+4. Include the header file (``my_new_class.eo.h``) from your application to 
use the new class.
+
+The rest of the tutorial shows a practical example which will illustrate this 
procedure.
+
+## Step One: Creating a Simple Class Description ##
+
+You will now create an Eolian file for a class named ``Example.Rectangle``. 
The file **must** be called ``examples_rectangle.eo``.
+
+This class will represent a rectangle shape, so it will have two properties, 
the ``width`` and ``height`` of the rectangle, which can be read and written.
+
+Start with the class name and the list of its parent classes in parentheses:
+
+```
+class Example.Rectangle (Efl.Object) {
+}
+```
+
+The only parent class is ``Efl.Object``, which is mandatory for regular 
classes (exceptions like *Interfaces* will be dealt with later).
+
+Next add a method declaration block, wherein you'll list the methods and 
properties of your class:
+
+```
+class Example.Rectangle (Efl.Object) {
+   methods {
+   }
+}
+```
+
+Now add a property named ``width`` inside the ``methods`` block, which you can 
``set``, ``get`` and whose only value is an ``int``:
+
+```
+  @property width {
+ set {
+ }
+ get {
+ }
+ values {
+width: int;
+ }
+  }
+```
+
+Next do the same for the ``height`` property, right after the ``width`` block:
+
+```
+  @property height {
+ set {
+ }
+ get {
+ }
+ values {
+height: int;
+ }
+  }
+```
+
+Finally add a method 

[EGIT] [website/www-content] master 01/01: Wiki media playground:02-hello-world:image03.png uploaded by Paul

2017-11-21 Thread Paul
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=c8b8600ffc061b77708584de2bf39a07f773ca68

commit c8b8600ffc061b77708584de2bf39a07f773ca68
Author: Paul 
Date:   Tue Nov 21 03:46:19 2017 -0800

Wiki media playground:02-hello-world:image03.png uploaded by Paul
---
 media/playground/02-hello-world/image03.png | Bin 0 -> 28040 bytes
 pages/develop/tutorial/c/eo-classes.md.txt  | 372 
 2 files changed, 372 deletions(-)

diff --git a/media/playground/02-hello-world/image03.png 
b/media/playground/02-hello-world/image03.png
new file mode 100644
index ..3c5e3d6f
Binary files /dev/null and b/media/playground/02-hello-world/image03.png differ
diff --git a/pages/develop/tutorial/c/eo-classes.md.txt 
b/pages/develop/tutorial/c/eo-classes.md.txt
deleted file mode 100644
index c21280c6..
--- a/pages/develop/tutorial/c/eo-classes.md.txt
+++ /dev/null
@@ -1,372 +0,0 @@

-~~Title: Creating New Classes with Eolian~~

-
-# Creating New Classes with Eolian #
-
-The [Introduction to Eo](eo-intro.md) tutorial showed you how to instantiate 
Eo objects of a given class using ``efl_add()``. This tutorial demonstrates how 
to create new classes so new kinds of objects can be instantiated.
-
-You'll learn how to describe classes using the Eolian language and then 
further customize them with class-specific code. You will also master the 
basics of class inheritance with Eolian.
-
-## Prerequisites ##
-
-* The [Introduction to Eo](eo-intro.md) tutorial explains the basis of Eo 
object creation and reference counting.
-* The [Hello World](hello-world.md) tutorial details how to write a simple 
application using EFL.
-
-## Eolian Files and eolian_gen ##
-
-Each class in EFL is described in an *Eolian file*, with the same name as the 
class and extension *.eo*. Eolian files are plain text files that contain, 
among other things, the name of the described class and the list of its 
properties and methods, along with their parameters and return values.
-
-Most importantly, this class description is independent of any programming 
language and can be used to generate automatic bindings and boiler plate code 
for other programming languages. With this automatically generated code you 
only need to write the details of your implementation in the language of your 
choice.
-
-The code generator for the C language is ``eolian_gen``, which is included in 
your EFL installation. So far, it is the only language available but there are 
plans to support more in the near future.
-
-You can invoke ``eolian_gen`` like so:
-
-```bash
-eolian_gen -gchi my_new_class.eo
-```
-
-This generates three files:
-
-* ``my_new_class.eo.h``: **Header file** including all the method signatures 
related to your class. In particular, it contains the class symbol you need to 
pass to ``efl_add()``, so always include this file if you want to use your 
class.
-* ``my_new_class.eo.c``: Boilerplate code you don't usually need to worry 
about. It is automatically included from the implementation file (next one).
-* ``my_new_class.c``: The **implementation file**. It initially contains the 
empty bodies for all the methods you need to implement in your class. This is 
the only file you need to modify and include in your builds, as you will see in 
this tutorial.
-
-The ``-gchi`` parameter tells ``eolian_gen`` to generate the Source file, the 
Header file and the Implementation file.
-
-In summary, for each new class you create you must:
-
-1. Describe the class with an ``.eo`` file and call ``eolian_gen``.
-2. Add your code to the implementation file (``my_new_class.c``).
-3. Add the implementation file to your build.
-4. Include the header file (``my_new_class.eo.h``) from your application to 
use the new class.
-
-The rest of the tutorial shows a practical example which will illustrate this 
procedure.
-
-## Step One: Creating a Simple Class Description ##
-
-You will now create an Eolian file for a class named ``Example.Rectangle``. 
The file **must** be called ``examples_rectangle.eo``.
-
-This class will represent a rectangle shape, so it will have two properties, 
the ``width`` and ``height`` of the rectangle, which can be read and written.
-
-Start with the class name and the list of its parent classes in parentheses:
-
-```
-class Example.Rectangle (Efl.Object) {
-}
-```
-
-The only parent class is ``Efl.Object``, which is mandatory for regular 
classes (exceptions like *Interfaces* will be dealt with later).
-
-Next add a method declaration block, wherein you'll list the methods and 
properties of your class:
-
-```
-class Example.Rectangle (Efl.Object) {
-   methods {
-   }
-}
-```
-
-Now add a property named ``width`` inside the ``methods`` block, which you can 
``set``, ``get`` and whose only value is an ``int``:
-
-```
-  @property width {
- set {
- }
- get {
- }
- 

[EGIT] [website/www-content] master 01/01: Wiki page debian-start changed with summary [] by Pierre Couderc

2017-11-21 Thread Pierre Couderc
WWW-www.enlightenment.org pushed a commit to branch master.

http://git.enlightenment.org/website/www-content.git/commit/?id=3b428d67547d5d057b0c37f624576f3e2ba1ac6a

commit 3b428d67547d5d057b0c37f624576f3e2ba1ac6a
Author: Pierre Couderc 
Date:   Tue Nov 21 00:14:45 2017 -0800

Wiki page debian-start changed with summary [] by Pierre Couderc
---
 pages/docs/distros/debian-start.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pages/docs/distros/debian-start.txt 
b/pages/docs/distros/debian-start.txt
index a602d430..7da9f409 100644
--- a/pages/docs/distros/debian-start.txt
+++ b/pages/docs/distros/debian-start.txt
@@ -155,4 +155,4 @@ startx
 These run-time requirements may be provided - or not - by a display manger. In 
this case, you can reboot and choose Enlightenment as a window manager.
 
 == Test ==
-This procedure has been tested in February 2017 on jessie 8.7.1 and on stretch 
(potential problems on stretch).
+This procedure has been tested in February 2017 on jessie 8.7.1 and on stretch.

--