[EGIT] [core/efl] master 01/01: ecore_wl2_display: move wl_display_dispatch_pending before condition check.

2020-08-22 Thread Hosang Kim
devilhorns pushed a commit to branch master.

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

commit e2944780fad775de31f99fc8dd6d93528bbdc7ae
Author: Hosang Kim 
Date:   Wed Aug 19 11:50:31 2020 +

ecore_wl2_display: move wl_display_dispatch_pending before condition check.

Sometimes display ref count is not zero after wl_display_dispatch_pending.

For example, wl_data_source_listener's callback is called by 
wl_display_dispatch_pending.
Display ref count is not zero but display is cleaned up, it makes double 
free corruption.

Reviewed-by: Christopher Michael 
Differential Revision: https://phab.enlightenment.org/D12109
---
 src/lib/ecore_wl2/ecore_wl2_display.c | 13 ++---
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c 
b/src/lib/ecore_wl2/ecore_wl2_display.c
index a91285e466..7344cf8b74 100644
--- a/src/lib/ecore_wl2/ecore_wl2_display.c
+++ b/src/lib/ecore_wl2/ecore_wl2_display.c
@@ -965,17 +965,16 @@ EAPI void
 ecore_wl2_display_disconnect(Ecore_Wl2_Display *display)
 {
EINA_SAFETY_ON_NULL_RETURN(display);
+   int ret;
+
+   do
+ {
+ret = wl_display_dispatch_pending(display->wl.display);
+ } while (ret > 0);
 
--display->refs;
if (display->refs == 0)
  {
-int ret;
-
-do
-  {
- ret = wl_display_dispatch_pending(display->wl.display);
-  } while (ret > 0);
-
 _ecore_wl2_display_cleanup(display);
 
 wl_display_disconnect(display->wl.display);

-- 




[EGIT] [core/efl] master 01/01: ecore_wl2_window: copy available rotation info.

2020-05-27 Thread Hosang Kim
devilhorns pushed a commit to branch master.

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

commit d6ce6a8cd541d21cb6fe5bed910238c0cc1fdd00
Author: Hosang Kim 
Date:   Wed May 27 10:05:30 2020 -0400

ecore_wl2_window: copy available rotation info.

Summary:
ecore_wl2_window doesn't copy rotation information.
If passed pointer is destroyed, rotation information disappears.
So add memory allocating for managing information.

Reviewers: CHAN, devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11891
---
 src/lib/ecore_wl2/ecore_wl2_window.c | 20 +++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 7d9de5775c..e11e2e30a3 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -739,6 +739,9 @@ ecore_wl2_window_free(Ecore_Wl2_Window *window)
if (window->class) eina_stringshare_del(window->class);
if (window->role) eina_stringshare_del(window->role);
 
+   if (window->wm_rot.available_rots) free(window->wm_rot.available_rots);
+   window->wm_rot.available_rots = NULL;
+
display->windows =
  eina_inlist_remove(display->windows, EINA_INLIST_GET(window));
 
@@ -1252,9 +1255,24 @@ ecore_wl2_window_preferred_rotation_get(Ecore_Wl2_Window 
*window)
 EAPI void
 ecore_wl2_window_available_rotations_set(Ecore_Wl2_Window *window, const int 
*rots, unsigned int count)
 {
+   unsigned int i = 0;
EINA_SAFETY_ON_NULL_RETURN(window);
+
+   if (window->wm_rot.available_rots)
+ {
+free(window->wm_rot.available_rots);
+window->wm_rot.available_rots = NULL;
+ }
window->wm_rot.count = count;
-   window->wm_rot.available_rots = (int *)rots;
+
+   if (count >= 1)
+ {
+window->wm_rot.available_rots = calloc(count, sizeof(int));
+if (!window->wm_rot.available_rots) return;
+
+for (; i < count; i++)
+  window->wm_rot.available_rots[i] = ((int *)rots)[i];
+ }
 }
 
 EAPI Eina_Bool

-- 




[EGIT] [core/efl] efl-1.24 05/09: elm_genlist/elm_gengrid: fix memory leak caused by efl_wref_del.

2020-05-25 Thread Hosang Kim
stefan pushed a commit to branch efl-1.24.

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

commit e81c32608865e16272205880ddb6024329af6790
Author: Hosang Kim 
Date:   Thu May 21 18:36:10 2020 +0900

elm_genlist/elm_gengrid: fix memory leak caused by efl_wref_del.

Summary:
efl_wref_del makes pointer to NULL.
So we should copy pointer before efl_wref_del is called.

Reviewers: SanghyeonLee, cedric

Reviewed By: SanghyeonLee

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11866
---
 src/lib/elementary/elm_gengrid.c | 9 +++--
 src/lib/elementary/elm_genlist.c | 9 +++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 707272be55..8446db8cab 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -165,8 +165,10 @@ _item_cache_free(Item_Cache *itc)
/* does not exist if cache item has just been reused */
if (itc->base_view)
  {
+Evas_Object *view = itc->base_view;
 efl_wref_del(itc->base_view, >base_view);
-efl_del(itc->base_view);
+efl_del(view);
+itc->base_view = NULL;
  }
eina_stringshare_del(itc->item_style);
EINA_LIST_FREE(itc->contents, c)
@@ -1494,7 +1496,10 @@ _item_unrealize_cb(Elm_Gen_Item *it)
Evas_Object *c;
if (!_item_cache_add(it, _content_cache_add(it, )))
  {
-ELM_SAFE_FREE(VIEW(it), evas_object_del);
+Evas_Object *view = VIEW(it);
+efl_wref_del(VIEW(it), (it));
+ELM_SAFE_FREE(view, evas_object_del);
+VIEW(it) = NULL;
 ELM_SAFE_FREE(it->spacer, evas_object_del);
 EINA_LIST_FREE(cache, c)
   evas_object_del(c);
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 5da1517fc8..6866b14965 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -1555,8 +1555,10 @@ _item_cache_free(Item_Cache *itc)
/* does not exist if cache item has just been reused */
if (itc->base_view)
  {
+Evas_Object *view = itc->base_view;
 efl_wref_del(itc->base_view, >base_view);
-efl_del(itc->base_view);
+efl_del(view);
+itc->base_view = NULL;
  }
itc->item_class = NULL;
EINA_LIST_FREE(itc->contents, c)
@@ -5386,7 +5388,10 @@ _item_unrealize(Elm_Gen_Item *it)
 
if (!_item_cache_add(it, _content_cache_add(it, )))
  {
-ELM_SAFE_FREE(VIEW(it), efl_del);
+Evas_Object *view = VIEW(it);
+efl_wref_del(VIEW(it), (it));
+ELM_SAFE_FREE(view, efl_del);
+VIEW(it) = NULL;
 it->callbacks = EINA_FALSE;
 ELM_SAFE_FREE(it->spacer, evas_object_del);
 EINA_LIST_FREE(cache, c)

-- 




[EGIT] [core/efl] master 01/01: elm_genlist/elm_gengrid: fix memory leak caused by efl_wref_del.

2020-05-21 Thread Hosang Kim
sanghyeonlee pushed a commit to branch master.

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

commit c493e80c216c71373bfa4898841ffaca32dd18a9
Author: Hosang Kim 
Date:   Thu May 21 18:36:10 2020 +0900

elm_genlist/elm_gengrid: fix memory leak caused by efl_wref_del.

Summary:
efl_wref_del makes pointer to NULL.
So we should copy pointer before efl_wref_del is called.

Reviewers: SanghyeonLee, cedric

Reviewed By: SanghyeonLee

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11866
---
 src/lib/elementary/elm_gengrid.c | 9 +++--
 src/lib/elementary/elm_genlist.c | 9 +++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c
index 707272be55..8446db8cab 100644
--- a/src/lib/elementary/elm_gengrid.c
+++ b/src/lib/elementary/elm_gengrid.c
@@ -165,8 +165,10 @@ _item_cache_free(Item_Cache *itc)
/* does not exist if cache item has just been reused */
if (itc->base_view)
  {
+Evas_Object *view = itc->base_view;
 efl_wref_del(itc->base_view, >base_view);
-efl_del(itc->base_view);
+efl_del(view);
+itc->base_view = NULL;
  }
eina_stringshare_del(itc->item_style);
EINA_LIST_FREE(itc->contents, c)
@@ -1494,7 +1496,10 @@ _item_unrealize_cb(Elm_Gen_Item *it)
Evas_Object *c;
if (!_item_cache_add(it, _content_cache_add(it, )))
  {
-ELM_SAFE_FREE(VIEW(it), evas_object_del);
+Evas_Object *view = VIEW(it);
+efl_wref_del(VIEW(it), (it));
+ELM_SAFE_FREE(view, evas_object_del);
+VIEW(it) = NULL;
 ELM_SAFE_FREE(it->spacer, evas_object_del);
 EINA_LIST_FREE(cache, c)
   evas_object_del(c);
diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c
index 5da1517fc8..6866b14965 100644
--- a/src/lib/elementary/elm_genlist.c
+++ b/src/lib/elementary/elm_genlist.c
@@ -1555,8 +1555,10 @@ _item_cache_free(Item_Cache *itc)
/* does not exist if cache item has just been reused */
if (itc->base_view)
  {
+Evas_Object *view = itc->base_view;
 efl_wref_del(itc->base_view, >base_view);
-efl_del(itc->base_view);
+efl_del(view);
+itc->base_view = NULL;
  }
itc->item_class = NULL;
EINA_LIST_FREE(itc->contents, c)
@@ -5386,7 +5388,10 @@ _item_unrealize(Elm_Gen_Item *it)
 
if (!_item_cache_add(it, _content_cache_add(it, )))
  {
-ELM_SAFE_FREE(VIEW(it), efl_del);
+Evas_Object *view = VIEW(it);
+efl_wref_del(VIEW(it), (it));
+ELM_SAFE_FREE(view, efl_del);
+VIEW(it) = NULL;
 it->callbacks = EINA_FALSE;
 ELM_SAFE_FREE(it->spacer, evas_object_del);
 EINA_LIST_FREE(cache, c)

-- 




[EGIT] [core/efl] master 01/01: edje_message_queue: decrease number of messages when message is removed.

2020-03-17 Thread Hosang Kim
zmike pushed a commit to branch master.

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

commit 91ab84286a87521fea9f7eba587e0a095c8dcc5d
Author: Hosang Kim 
Date:   Tue Mar 17 09:52:59 2020 -0400

edje_message_queue: decrease number of messages when message is removed.

Summary:
Sometimes edje_message_del is called while processing edje message.
It makes double free corruption.

Reviewers: raster, bu5hm4n, zmike

Reviewed By: zmike

Subscribers: bu5hm4n, zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11393
---
 src/lib/edje/edje_message_queue.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/edje/edje_message_queue.c 
b/src/lib/edje/edje_message_queue.c
index 020f89b46d..d92601073b 100644
--- a/src/lib/edje/edje_message_queue.c
+++ b/src/lib/edje/edje_message_queue.c
@@ -223,6 +223,7 @@ again:
 if (!lookup_ed) continue;
 tmp_msgq = eina_inlist_remove(tmp_msgq, &(em->inlist_main));
 lookup_ed->messages = eina_inlist_remove(lookup_ed->messages, 
&(em->inlist_edje));
+lookup_ed->message.num--;
 if (!lookup_ed->delete_me)
   {
  lookup_ed->processing_messages++;

-- 




[EGIT] [core/efl] master 02/06: ecore_input_evas: fix memory leak when ecore_event_evas is shutdown.

2020-03-17 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit e38ea9b958509df92909b77e16caa9ec6b1d3400
Author: Hosang Kim 
Date:   Tue Mar 17 03:34:05 2020 +

ecore_input_evas: fix memory leak when ecore_event_evas is shutdown.

_last_events and eel structure are not freed when ecore_event_evas is 
shutdown.

Reviewed-by: Marcel Hollerbach 
Differential Revision: https://phab.enlightenment.org/D11520
---
 src/lib/ecore_input_evas/ecore_input_evas.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/lib/ecore_input_evas/ecore_input_evas.c 
b/src/lib/ecore_input_evas/ecore_input_evas.c
index bd2f0d1868..8f26737778 100644
--- a/src/lib/ecore_input_evas/ecore_input_evas.c
+++ b/src/lib/ecore_input_evas/ecore_input_evas.c
@@ -845,10 +845,14 @@ EAPI int
 ecore_event_evas_shutdown(void)
 {
size_t i;
+   Ecore_Event_Last *eel;
 
if (--_ecore_event_evas_init_count != 0)
  return _ecore_event_evas_init_count;
 
+   EINA_LIST_FREE(_last_events, eel)
+  free(eel);
+
eina_hash_free(_window_hash);
_window_hash = NULL;
for (i = 0; i < sizeof(ecore_event_evas_handlers) / 
sizeof(Ecore_Event_Handler *); i++)

-- 




[EGIT] [core/efl] master 03/04: win/widget: free array when object is deleted.

2020-03-17 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit 5b8dc56100e3c850b21cb7ca41dd9f86e7d57c22
Author: Hosang Kim 
Date:   Tue Mar 17 04:12:19 2020 +

win/widget: free array when object is deleted.

It makes a memory leak.

Reviewed-by: Marcel Hollerbach 
Differential Revision: https://phab.enlightenment.org/D11522
---
 src/lib/elementary/efl_ui_widget.c | 5 +
 src/lib/elementary/efl_ui_win.c| 3 +++
 2 files changed, 8 insertions(+)

diff --git a/src/lib/elementary/efl_ui_widget.c 
b/src/lib/elementary/efl_ui_widget.c
index bc6574f05a..a58c66b99c 100644
--- a/src/lib/elementary/efl_ui_widget.c
+++ b/src/lib/elementary/efl_ui_widget.c
@@ -4882,6 +4882,11 @@ _efl_ui_widget_efl_object_destructor(Eo *obj, 
Elm_Widget_Smart_Data *sd)
 efl_weak_unref(>logical.parent);
 sd->logical.parent = NULL;
  }
+   if (sd->children)
+ {
+eina_array_free(sd->children);
+sd->children = NULL;
+ }
 
sd->on_destroy = EINA_TRUE;
efl_destructor(efl_super(obj, EFL_UI_WIDGET_CLASS));
diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c
index 48da9d56fe..51806d15d5 100644
--- a/src/lib/elementary/efl_ui_win.c
+++ b/src/lib/elementary/efl_ui_win.c
@@ -3182,6 +3182,9 @@ _efl_ui_win_efl_canvas_group_group_del(Eo *obj, 
Efl_Ui_Win_Data *sd)
eina_array_free(sd->profile.available);
sd->profile.available = NULL;
 
+   eina_array_free(sd->planned_changes);
+   sd->planned_changes = NULL;
+
free(sd->wm_rot.rots);
sd->wm_rot.rots = NULL;
 

-- 




[EGIT] [core/efl] master 01/01: evas: Fix mouse event info for legacy events.

2020-03-04 Thread Hosang Kim
zmike pushed a commit to branch master.

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

commit 9ea61428db639a8e6d666885fe245e9f753bbe7c
Author: Hosang Kim 
Date:   Wed Mar 4 09:35:30 2020 -0500

evas: Fix mouse event info for legacy events.

Summary:
Legacy event info have canvas and output coordinates.
Output coordinates have information of original position.
Canvas coordinates have information of transformed position.
So keep backward compatibility, fix filling legacy information.

This reverts commit 7f724f6c5db1127a6dd5786791f495b58910e9a9

Reviewers: Hermet, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D11445
---
 src/lib/evas/canvas/evas_events_legacy.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events_legacy.c 
b/src/lib/evas/canvas/evas_events_legacy.c
index 1204800631..4d574d0209 100644
--- a/src/lib/evas/canvas/evas_events_legacy.c
+++ b/src/lib/evas/canvas/evas_events_legacy.c
@@ -34,15 +34,18 @@ efl_input_pointer_legacy_info_fill(Evas *eo_evas, 
Efl_Input_Key *eo_ev, Evas_Cal
 {
Efl_Input_Pointer_Data *ev = efl_data_scope_get(eo_ev, 
EFL_INPUT_POINTER_CLASS);
Evas_Public_Data *evas;
+   Evas_Pointer_Data *pdata;
 
if (!ev) return NULL;
if (!eo_evas) eo_evas = efl_provider_find(eo_ev, EVAS_CANVAS_CLASS);
evas = efl_data_scope_get(eo_evas, EVAS_CANVAS_CLASS);
if (!evas) return NULL;
+   pdata = _evas_pointer_data_by_device_get(evas, ev->device);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(pdata, NULL);
 
-#define COORD_DUP(e) do { (e)->output.x = (e)->canvas.x; (e)->output.y = 
(e)->canvas.y; } while (0)
-#define COORD_DUP_CUR(e) do { (e)->cur.output.x = (e)->cur.canvas.x; 
(e)->cur.output.y = (e)->cur.canvas.y; } while (0)
-#define COORD_DUP_PREV(e) do { (e)->prev.output.x = (e)->prev.canvas.x; 
(e)->prev.output.y = (e)->prev.canvas.y; } while (0)
+#define COORD_DUP(e) do { (e)->output.x = pdata->seat->x; (e)->output.y = 
pdata->seat->y; } while (0)
+#define COORD_DUP_CUR(e) do { (e)->cur.output.x = pdata->seat->x; 
(e)->cur.output.y = pdata->seat->y; } while (0)
+#define COORD_DUP_PREV(e) do { (e)->prev.output.x = pdata->seat->prev.x; 
(e)->prev.output.y = pdata->seat->prev.y; } while (0)
 #define TYPE_CHK(typ) do { if ((type != EVAS_CALLBACK_LAST) && (type != 
EVAS_CALLBACK_ ## typ)) return NULL; } while (0)
 
switch (ev->action)

-- 




[EGIT] [core/efl] master 01/01: efl_ui_layout: send theme signal when style is already updated.

2020-01-23 Thread Hosang Kim
zmike pushed a commit to branch master.

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

commit 0e2778f0ca7cee9b167513852e6d505d42684430
Author: Hosang Kim 
Date:   Thu Jan 23 09:03:08 2020 -0500

efl_ui_layout: send theme signal when style is already updated.

Summary:
If you run below code, text is invisible.

```
efl_add(EFL_UI_BUTTON_CLASS, box,
efl_ui_widget_style_set(efl_added, "anchor"),
efl_text_set(efl_added, "anchor style"),
efl_pack_end(box, efl_added));
```

But below code is working well.
```
efl_add(EFL_UI_BUTTON_CLASS, box,
efl_text_set(efl_added, "anchor style"),
efl_ui_widget_style_set(efl_added, "anchor"),
efl_pack_end(box, efl_added));
```

Test Plan: run  efl_ui_theme_example_01

Reviewers: zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8
---
 src/lib/elementary/efl_ui_layout.c | 33 -
 1 file changed, 20 insertions(+), 13 deletions(-)

diff --git a/src/lib/elementary/efl_ui_layout.c 
b/src/lib/elementary/efl_ui_layout.c
index 9ab1ab3a4a..3b6c50ba2a 100644
--- a/src/lib/elementary/efl_ui_layout.c
+++ b/src/lib/elementary/efl_ui_layout.c
@@ -551,6 +551,23 @@ _efl_ui_layout_theme_internal(Eo *obj, Efl_Ui_Layout_Data 
*sd, Elm_Widget_Smart_
return ret;
 }
 
+static void
+_deferred_signals_emit(Efl_Ui_Layout_Data *pd)
+{
+   do
+ {
+Deferred_Version_Signal *dvs = eina_inarray_pop(pd->deferred_signals);
+
+if (pd->version < dvs->version_threshold)
+  efl_layout_signal_emit(pd->obj, dvs->old_sig, "efl");
+else
+  efl_layout_signal_emit(pd->obj, dvs->new_sig, "efl");
+eina_stringshare_del(dvs->old_sig);
+eina_stringshare_del(dvs->new_sig);
+ } while (eina_inarray_count(pd->deferred_signals));
+   ELM_SAFE_FREE(pd->deferred_signals, eina_inarray_free);
+}
+
 EOLIAN static Eina_Error
 _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, Efl_Ui_Layout_Data *sd)
 {
@@ -603,20 +620,8 @@ _efl_ui_layout_base_efl_ui_widget_theme_apply(Eo *obj, 
Efl_Ui_Layout_Data *sd)
   }
  }
if (sd->deferred_signals)
- {
-do
-  {
- Deferred_Version_Signal *dvs = 
eina_inarray_pop(sd->deferred_signals);
+ _deferred_signals_emit(sd);
 
- if (sd->version < dvs->version_threshold)
-   efl_layout_signal_emit(sd->obj, dvs->old_sig, "efl");
- else
-   efl_layout_signal_emit(sd->obj, dvs->new_sig, "efl");
- eina_stringshare_del(dvs->old_sig);
- eina_stringshare_del(dvs->new_sig);
-  } while (eina_inarray_count(sd->deferred_signals));
-ELM_SAFE_FREE(sd->deferred_signals, eina_inarray_free);
- }
if (!version)
  {
 snprintf(buf, sizeof(buf), "%d%d", EFL_VERSION_MAJOR, 
EFL_VERSION_MINOR + (EFL_VERSION_MICRO == 99 ? 1 : 0));
@@ -2730,6 +2735,8 @@ _efl_ui_layout_base_efl_object_finalize(Eo *obj, 
Efl_Ui_Layout_Data *pd)
 /* handle case where subclass does not call into layout */
 pd->needs_theme_apply = EINA_FALSE;
  }
+   else if (pd->deferred_signals)
+ _deferred_signals_emit(pd);
efl_canvas_group_change(obj);
 
Elm_Layout_Data *ld = efl_data_scope_safe_get(obj, ELM_LAYOUT_MIXIN);

-- 




[EGIT] [core/efl] master 01/01: efl_ui_scrollbar: change scrollbar state when theme is reloaded.

2020-01-17 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit fbb77e7d1c3116f4187370ec9406755f38cf44be
Author: Hosang Kim 
Date:   Fri Jan 10 09:26:32 2020 +

efl_ui_scrollbar: change scrollbar state when theme is reloaded.

Scrollbar visible state is not synchronized when theme is reloaded.

Differential Revision: https://phab.enlightenment.org/D10649
---
 src/lib/efl/interfaces/efl_ui_scrollbar.eo | 12 +
 src/lib/elementary/efl_ui_scroll_manager.c |  7 +++
 src/lib/elementary/efl_ui_scroll_manager.eo|  1 +
 src/lib/elementary/efl_ui_scroll_util.c| 14 ++
 src/tests/elementary/efl_ui_test_list_collection.c |  4 +-
 src/tests/elementary/efl_ui_test_scroller.c| 51 ++
 6 files changed, 87 insertions(+), 2 deletions(-)

diff --git a/src/lib/efl/interfaces/efl_ui_scrollbar.eo 
b/src/lib/efl/interfaces/efl_ui_scrollbar.eo
index 5741df6b8f..3b4696f00b 100644
--- a/src/lib/efl/interfaces/efl_ui_scrollbar.eo
+++ b/src/lib/efl/interfaces/efl_ui_scrollbar.eo
@@ -60,6 +60,18 @@ interface Efl.Ui.Scrollbar
 and $[1.0] (the bottom side of the thumb is 
touching the bottom edge of the widget).]]
  }
   }
+  @property bar_visibility {
+ [[Current visibility state of the scrollbars.
+   This is useful in @Efl.Ui.Scrollbar_Mode.auto mode where EFL 
decides if the scrollbars
+   are shown or hidden. See also the @[.bar,show] and @[.bar,hide] 
events.
+ ]]
+ get {
+ }
+ values {
+hbar: bool; [[Whether the horizontal scrollbar is currently 
visible.]]
+vbar: bool; [[Whether the vertical scrollbar is currently 
visible.]]
+ }
+  }
   bar_visibility_update @protected @beta{
  [[Update bar visibility.
 
diff --git a/src/lib/elementary/efl_ui_scroll_manager.c 
b/src/lib/elementary/efl_ui_scroll_manager.c
index 3d332e94fb..650a726bc1 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.c
+++ b/src/lib/elementary/efl_ui_scroll_manager.c
@@ -2187,6 +2187,13 @@ _efl_ui_scrollbar_v_visibility_adjust(Eo *obj)
if (scroll_v_vis_change) 
_efl_ui_scroll_manager_scrollbar_v_visibility_apply(sd);
 }
 
+EOLIAN static void
+_efl_ui_scroll_manager_efl_ui_scrollbar_bar_visibility_get(const Eo *obj 
EINA_UNUSED, Efl_Ui_Scroll_Manager_Data *sd, Eina_Bool *hbar, Eina_Bool *vbar)
+{
+   if (hbar) *hbar = sd->hbar_visible;
+   if (vbar) *vbar = sd->vbar_visible;
+}
+
 EOLIAN static void
 _efl_ui_scroll_manager_efl_ui_scrollbar_bar_visibility_update(Eo *obj, 
Efl_Ui_Scroll_Manager_Data *sd EINA_UNUSED)
 {
diff --git a/src/lib/elementary/efl_ui_scroll_manager.eo 
b/src/lib/elementary/efl_ui_scroll_manager.eo
index 957a4f4d4d..9dcd9f8a88 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.eo
+++ b/src/lib/elementary/efl_ui_scroll_manager.eo
@@ -39,6 +39,7 @@ class @beta Efl.Ui.Scroll.Manager extends Efl.Object 
implements
   Efl.Ui.Scrollbar.bar_mode { get; set; }
   Efl.Ui.Scrollbar.bar_size { get; }
   Efl.Ui.Scrollbar.bar_position { get; set; }
+  Efl.Ui.Scrollbar.bar_visibility { get; }
   Efl.Ui.Scrollbar.bar_visibility_update;
   Efl.Ui.Scrollable.scroll;
}
diff --git a/src/lib/elementary/efl_ui_scroll_util.c 
b/src/lib/elementary/efl_ui_scroll_util.c
index 673cac2eae..6a7378e3b4 100644
--- a/src/lib/elementary/efl_ui_scroll_util.c
+++ b/src/lib/elementary/efl_ui_scroll_util.c
@@ -38,6 +38,20 @@ _scroll_connector_reload_cb(void *data,
const char *source EINA_UNUSED)
 {
Scroll_Connector_Context *ctx = data;
+   ELM_WIDGET_DATA_GET_OR_RETURN(ctx->obj, wd);
+   Eina_Bool hbar_visible = EINA_FALSE, vbar_visible = EINA_FALSE;
+
+   efl_ui_scrollbar_bar_visibility_get(ctx->smanager, _visible, 
_visible);
+
+   if (hbar_visible)
+ efl_layout_signal_emit(wd->resize_obj, "efl,horizontal_bar,visible,on", 
"efl");
+   else
+ efl_layout_signal_emit(wd->resize_obj, "efl,horizontal_bar,visible,off", 
"efl");
+
+   if (vbar_visible)
+ efl_layout_signal_emit(wd->resize_obj, "efl,vertical_bar,visible,on", 
"efl");
+   else
+ efl_layout_signal_emit(wd->resize_obj, "efl,vertical_bar,visible,off", 
"efl");
 
efl_ui_scrollbar_bar_visibility_update(ctx->smanager);
 }
diff --git a/src/tests/elementary/efl_ui_test_list_collection.c 
b/src/tests/elementary/efl_ui_test_list_collection.c
index 1d4f913901..94bafbd010 100644
--- a/src/tests/elementary/efl_ui_test_list_collection.c
+++ b/src/tests/elementary/efl_ui_test_list_collection.c
@@ -161,7 +161,7 @@ EFL_START_TEST(placement_test_group)
 r = efl_gfx_entity_geometry_get(core_item[i]);
 
 ck_assert_int_eq(r.x, 1);
-ck_assert_int_eq(r.y, 21+(i - 1)*40);
+ck_assert_int_eq(r.y, 2

[EGIT] [core/efl] master 01/01: ecore_evas_buffer: Unregister input events when ecore_evas_buffer is freed

2019-12-30 Thread Hosang Kim
zmike pushed a commit to branch master.

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

commit 9c41899a085faadaaa1d0ed1decee3457eedbc46
Author: Hosang Kim 
Date:   Mon Dec 30 11:23:22 2019 -0500

ecore_evas_buffer: Unregister input events when ecore_evas_buffer is freed

Summary:
When ecore_evas_buffer is freed, input events is not unregistered.
So _window_hash size is increasing.

Reviewers: Hermet, cedric, raster, zmike

Reviewed By: zmike

Subscribers: zmike, rajeev.jnnce, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10983
---
 src/lib/ecore_evas/ecore_evas_buffer.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c 
b/src/lib/ecore_evas/ecore_evas_buffer.c
index 19422366b6..390ddd4a99 100644
--- a/src/lib/ecore_evas/ecore_evas_buffer.c
+++ b/src/lib/ecore_evas/ecore_evas_buffer.c
@@ -20,6 +20,8 @@ _ecore_evas_buffer_free(Ecore_Evas *ee)
 {
Ecore_Evas_Engine_Buffer_Data *bdata = ee->engine.data;
 
+   ecore_evas_input_event_unregister(ee);
+
if (!bdata) return;
if (bdata->image)
  {

-- 




[EGIT] [core/efl] master 01/01: scroller: add missing efl_content_unset

2019-12-19 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit ed7fb7ae27a1a6c1b758f8a415e1976d95a45e4b
Author: Hosang Kim 
Date:   Thu Dec 19 06:14:15 2019 +

scroller: add missing efl_content_unset

When efl_content_unset(scroller) is called, efl_content_unset for 
Efl.Ui.Pan class should be called also.

Reviewed-by: Marcel Hollerbach 
Differential Revision: https://phab.enlightenment.org/D10906
---
 src/lib/elementary/efl_ui_scroller.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/elementary/efl_ui_scroller.c 
b/src/lib/elementary/efl_ui_scroller.c
index 5b0eca2fa5..9b4140c10c 100644
--- a/src/lib/elementary/efl_ui_scroller.c
+++ b/src/lib/elementary/efl_ui_scroller.c
@@ -200,6 +200,7 @@ _efl_ui_scroller_efl_content_content_unset(Eo *obj 
EINA_UNUSED, Efl_Ui_Scroller_
 {
Efl_Gfx_Entity *old_content = pd->content;
 
+   efl_content_unset(pd->pan_obj);
efl_event_callback_del(pd->content, EFL_EVENT_INVALIDATE, 
_efl_ui_scroller_content_del_cb, obj);
pd->content = NULL;
efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL);

-- 




[EGIT] [core/efl] master 01/01: evas_events: fix wrong condition of proxy event behavior.

2019-12-05 Thread Hosang Kim
hermet pushed a commit to branch master.

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

commit 6e49a94c0e20a22866550c5f187cdd6ec32642f8
Author: Hosang Kim 
Date:   Fri Dec 6 10:21:35 2019 +0900

evas_events: fix wrong condition of proxy event behavior.

Summary:
If source_events is false, Evas object doesn't repeat events to source.
But events is always repeated to source in multi touch case.

Reviewers: Hermet, raster, cedric

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10807
---
 src/lib/evas/canvas/evas_events.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index bb8c9346fb..12b38f1621 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -3042,7 +3042,7 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data 
*e, Efl_Input_Pointer_Da
 
 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, 
evt,
 event_id, EFL_EVENT_FINGER_DOWN);
-if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
+if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
   _evas_event_source_multi_down_events(obj, e, evt, pdata, event_id);
 if (e->delete_me || e->is_frozen) break;
  }
@@ -3126,7 +3126,7 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, 
Efl_Input_Pointer_Data
   }
 evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, 
evt,
 event_id, EFL_EVENT_FINGER_UP);
-if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
+if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
   _evas_event_source_multi_up_events(obj, e, evt, pdata, event_id);
 if (e->delete_me || e->is_frozen) break;
  }
@@ -3308,7 +3308,7 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data 
*e, Efl_Input_Pointer_Da
   _evas_event_havemap_adjust_f(obj, >cur, >prev, 
obj_pdata->mouse_grabbed);
   evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MULTI_MOVE, evt,
   event_id, 
EFL_EVENT_FINGER_MOVE);
-  if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
+  if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
 _evas_event_source_multi_move_events(obj, e, evt, pdata, 
event_id);
 
   if (e->delete_me || e->is_frozen) break;
@@ -3352,7 +3352,7 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data 
*e, Efl_Input_Pointer_Da
{
   evas_object_event_callback_call(eo_obj, obj, 
EVAS_CALLBACK_MULTI_MOVE, evt,
   event_id, 
EFL_EVENT_FINGER_MOVE);
-  if ((obj->proxy->is_proxy) || (obj->proxy->src_events))
+  if ((obj->proxy->is_proxy) && (obj->proxy->src_events))
 _evas_event_source_multi_move_events(obj, e, evt, pdata, 
event_id);
}
  if (e->delete_me || e->is_frozen) break;

-- 




[EGIT] [core/efl] efl-1.22 59/84: evas_events: fix grab count does not become 0 with proxy object.

2019-05-01 Thread Hosang Kim
zmike pushed a commit to branch efl-1.22.

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

commit 57644b8d583a4ad1df00f9208f43b5e1ca739370
Author: Hosang Kim 
Date:   Fri Apr 26 13:24:01 2019 +0900

evas_events: fix grab count does not become 0 with proxy object.

Summary:
1. src_event_in should not be initialized when grabbed object exists.

2. when object of pointer grab is deleted and if object has proxy,
   proxy object of pointer grab should be deleted together.

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8698
---
 src/lib/evas/canvas/evas_events.c  | 67 +++---
 src/lib/evas/canvas/evas_object_main.c | 33 -
 2 files changed, 78 insertions(+), 22 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index bff66c81d9..ca2a903ae4 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -460,6 +460,7 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, 
Evas *eo_e,
Eina_Vector2 point;
int addgrab = 0;
int no_rep = 0;
+   int srcgrab = 0;
 
if (obj->delete_me || src->delete_me || e->is_frozen) return;
 
@@ -472,31 +473,52 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, 
Evas *eo_e,
ev->source = eo_obj;
ev->tool = 0;
 
-   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, 
Evas_Object_Proxy_Data, proxy_write)
+   EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
  {
-if (proxy_write->src_event_in)
-proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
+Evas_Object_Pointer_Data *obj_pdata;
 
-if (src->is_smart)
+child = efl_data_scope_get(eo_child, EFL_CANVAS_OBJECT_CLASS);
+obj_pdata = _evas_object_pointer_data_get(pdata, child);
+if (!obj_pdata)
   {
- proxy_write->src_event_in = _evas_event_object_list_raw_in_get
-   (eo_e, proxy_write->src_event_in,
-evas_object_smart_members_get_direct(eo_src), NULL,
-NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
- }
-   else if (src->is_event_parent)
- {
-proxy_write->src_event_in = _evas_event_object_list_raw_in_get
-   (eo_e, proxy_write->src_event_in,
-NULL, evas_object_event_grabber_members_list(eo_src),
-NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
- }
-   else
- proxy_write->src_event_in = 
eina_list_append(proxy_write->src_event_in, eo_src);
+ ERR("Could not find the object pointer data for device %p",
+ ev->device);
+ continue;
+  }
+srcgrab += obj_pdata->mouse_grabbed;
  }
-   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
-   if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
+   if (srcgrab == 0)
+ {
+EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, 
Evas_Object_Proxy_Data, proxy_write)
+  {
+ if (proxy_write->src_event_in)
+   proxy_write->src_event_in = 
eina_list_free(proxy_write->src_event_in);
+
+ if (src->is_smart)
+   {
+  proxy_write->src_event_in = 
_evas_event_object_list_raw_in_get
+ (eo_e, proxy_write->src_event_in,
+  evas_object_smart_members_get_direct(eo_src), NULL,
+  NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
+   }
+ else if (src->is_event_parent)
+   {
+  proxy_write->src_event_in = 
_evas_event_object_list_raw_in_get
+ (eo_e, proxy_write->src_event_in,
+  NULL, evas_object_event_grabber_members_list(eo_src),
+  NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
+   }
+ else
+   proxy_write->src_event_in = 
eina_list_append(proxy_write->src_event_in, eo_src);
+  }
+EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+ }
+
+   if (pdata->seat->mouse_grabbed == 0)
+ {
+if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
+ }
 
EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
  {
@@ -960,7 +982,10 @@ 
_evas_event_source_multi_down_events(Evas_Object_Protected_Data *obj, Evas_Publi
ev->source = obj->object;
ev->action = EFL_POINTER_ACTION_DOWN;
 
-   if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
+   if (pdata->s

[EGIT] [core/efl] master 01/01: evas_events: fix grab count does not become 0 with proxy object.

2019-04-25 Thread Hosang Kim
hermet pushed a commit to branch master.

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

commit c006589607c78dd18ed1634f0696d63db0f47727
Author: Hosang Kim 
Date:   Fri Apr 26 13:24:01 2019 +0900

evas_events: fix grab count does not become 0 with proxy object.

Summary:
1. src_event_in should not be initialized when grabbed object exists.

2. when object of pointer grab is deleted and if object has proxy,
   proxy object of pointer grab should be deleted together.

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8698
---
 src/lib/evas/canvas/evas_events.c  | 67 +++---
 src/lib/evas/canvas/evas_object_main.c | 33 -
 2 files changed, 78 insertions(+), 22 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index bff66c81d9..ca2a903ae4 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -460,6 +460,7 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, 
Evas *eo_e,
Eina_Vector2 point;
int addgrab = 0;
int no_rep = 0;
+   int srcgrab = 0;
 
if (obj->delete_me || src->delete_me || e->is_frozen) return;
 
@@ -472,31 +473,52 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, 
Evas *eo_e,
ev->source = eo_obj;
ev->tool = 0;
 
-   EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, 
Evas_Object_Proxy_Data, proxy_write)
+   EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
  {
-if (proxy_write->src_event_in)
-proxy_write->src_event_in = eina_list_free(proxy_write->src_event_in);
+Evas_Object_Pointer_Data *obj_pdata;
 
-if (src->is_smart)
+child = efl_data_scope_get(eo_child, EFL_CANVAS_OBJECT_CLASS);
+obj_pdata = _evas_object_pointer_data_get(pdata, child);
+if (!obj_pdata)
   {
- proxy_write->src_event_in = _evas_event_object_list_raw_in_get
-   (eo_e, proxy_write->src_event_in,
-evas_object_smart_members_get_direct(eo_src), NULL,
-NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
- }
-   else if (src->is_event_parent)
- {
-proxy_write->src_event_in = _evas_event_object_list_raw_in_get
-   (eo_e, proxy_write->src_event_in,
-NULL, evas_object_event_grabber_members_list(eo_src),
-NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
- }
-   else
- proxy_write->src_event_in = 
eina_list_append(proxy_write->src_event_in, eo_src);
+ ERR("Could not find the object pointer data for device %p",
+ ev->device);
+ continue;
+  }
+srcgrab += obj_pdata->mouse_grabbed;
  }
-   EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
 
-   if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
+   if (srcgrab == 0)
+ {
+EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, 
Evas_Object_Proxy_Data, proxy_write)
+  {
+ if (proxy_write->src_event_in)
+   proxy_write->src_event_in = 
eina_list_free(proxy_write->src_event_in);
+
+ if (src->is_smart)
+   {
+  proxy_write->src_event_in = 
_evas_event_object_list_raw_in_get
+ (eo_e, proxy_write->src_event_in,
+  evas_object_smart_members_get_direct(eo_src), NULL,
+  NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
+   }
+ else if (src->is_event_parent)
+   {
+  proxy_write->src_event_in = 
_evas_event_object_list_raw_in_get
+ (eo_e, proxy_write->src_event_in,
+  NULL, evas_object_event_grabber_members_list(eo_src),
+  NULL, ev->cur.x, ev->cur.y, _rep, EINA_TRUE);
+   }
+ else
+   proxy_write->src_event_in = 
eina_list_append(proxy_write->src_event_in, eo_src);
+  }
+EINA_COW_WRITE_END(evas_object_proxy_cow, src->proxy, proxy_write);
+ }
+
+   if (pdata->seat->mouse_grabbed == 0)
+ {
+if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
+ }
 
EINA_LIST_FOREACH(src->proxy->src_event_in, l, eo_child)
  {
@@ -960,7 +982,10 @@ 
_evas_event_source_multi_down_events(Evas_Object_Protected_Data *obj, Evas_Publi
ev->source = obj->object;
ev->action = EFL_POINTER_ACTION_DOWN;
 
-   if (pdata->seat->downs > 1) addgrab = pdata->seat->downs - 1;
+   if (pdata->s

[EGIT] [core/efl] master 01/01: evas_callbacks: fix emission of EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED

2019-04-03 Thread Hosang Kim
zmike pushed a commit to branch master.

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

commit 55751f12044c5939b189d9ef149d82e8f331811a
Author: Hosang Kim 
Date:   Wed Apr 3 09:26:50 2019 -0400

evas_callbacks: fix emission of EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED

Summary:
When I add "efl_event_callback_add(btn, 
EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, _cb, NULL)",
_cb is not called. Because of callback_mask is not set correctly.

Test Plan: unit test

Reviewers: zmike, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8528
---
 src/Makefile_Elementary.am  |  1 +
 src/lib/evas/canvas/evas_callbacks.c|  5 +++
 src/tests/elementary/efl_ui_suite.c |  1 +
 src/tests/elementary/efl_ui_suite.h |  1 +
 src/tests/elementary/efl_ui_test_callback.c | 53 +
 src/tests/elementary/meson.build|  1 +
 6 files changed, 62 insertions(+)

diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
index 8de301999e..e4a46399bc 100644
--- a/src/Makefile_Elementary.am
+++ b/src/Makefile_Elementary.am
@@ -1937,6 +1937,7 @@ tests_elementary_efl_ui_suite_SOURCES = \
tests/elementary/efl_ui_build.c \
tests/elementary/elm_test_init.c \
tests/elementary/efl_ui_test_atspi.c \
+   tests/elementary/efl_ui_test_callback.c \
tests/elementary/efl_ui_test_focus_common.c \
tests/elementary/efl_ui_test_focus_common.h \
tests/elementary/efl_ui_test_focus.c \
diff --git a/src/lib/evas/canvas/evas_callbacks.c 
b/src/lib/evas/canvas/evas_callbacks.c
index f5dbb15353..dcd3338dd6 100644
--- a/src/lib/evas/canvas/evas_callbacks.c
+++ b/src/lib/evas/canvas/evas_callbacks.c
@@ -831,6 +831,11 @@ _check_event_catcher_add(void *data, const Efl_Event 
*event)
   {
  obj->callback_mask |= (((uint64_t)1) << type);
   }
+else if (array[i].desc == EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED)
+  {
+ obj->callback_mask |= (((uint64_t)1) << EVAS_CALLBACK_SHOW);
+ obj->callback_mask |= (((uint64_t)1) << EVAS_CALLBACK_HIDE);
+  }
  }
 }
 
diff --git a/src/tests/elementary/efl_ui_suite.c 
b/src/tests/elementary/efl_ui_suite.c
index 097f432e8a..a1ba34f1f4 100644
--- a/src/tests/elementary/efl_ui_suite.c
+++ b/src/tests/elementary/efl_ui_suite.c
@@ -10,6 +10,7 @@ static const Efl_Test_Case etc[] = {
   //{ "elm_focus_sub", elm_test_focus_sub},
   //{ "elm_widget_focus", elm_test_widget_focus},
   { "efl_ui_atspi", efl_ui_test_atspi},
+  { "efl_ui_callback", efl_ui_test_callback},
   { "efl_ui_focus", efl_ui_test_focus},
   { "efl_ui_focus_sub", efl_ui_test_focus_sub},
   { "efl_ui_box", efl_ui_test_box},
diff --git a/src/tests/elementary/efl_ui_suite.h 
b/src/tests/elementary/efl_ui_suite.h
index 3755a0e56f..5282949eb5 100644
--- a/src/tests/elementary/efl_ui_suite.h
+++ b/src/tests/elementary/efl_ui_suite.h
@@ -29,6 +29,7 @@ void efl_ui_test_atspi(TCase *tc);
 void efl_ui_test_image_zoomable(TCase *tc);
 void efl_ui_test_layout(TCase *tc);
 void efl_ui_test_image(TCase *tc);
+void efl_ui_test_callback(TCase *tc);
 
 void efl_ui_test_focus(TCase *tc);
 void efl_ui_test_focus_sub(TCase *tc);
diff --git a/src/tests/elementary/efl_ui_test_callback.c 
b/src/tests/elementary/efl_ui_test_callback.c
new file mode 100644
index 00..76230499f0
--- /dev/null
+++ b/src/tests/elementary/efl_ui_test_callback.c
@@ -0,0 +1,53 @@
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+
+#include 
+#include 
+#include "elm_suite.h"
+
+static Eo *win;
+
+static void
+callback_setup()
+{
+   win = win_add();
+
+   efl_gfx_entity_size_set(win, EINA_SIZE2D(500, 50));
+}
+
+static void
+_btn_visibility_change(void *data EINA_UNUSED, const Efl_Event *ev)
+{
+   Eina_Bool *flag = data;
+   Eina_Bool *visible = ev->info;
+
+   if (!(*visible))
+ *flag = EINA_TRUE;
+}
+
+static void
+callback_timer_cb(void *data EINA_UNUSED, const Efl_Event *event)
+{
+   ck_assert(0);
+   efl_del(event->object);
+   ecore_main_loop_quit();
+}
+
+EFL_START_TEST(efl_ui_callback_visibility)
+{
+   Eina_Bool check = EINA_FALSE;
+   Eo *box = efl_add(EFL_UI_BOX_CLASS, win,
+ efl_content_set(win, efl_added));
+   efl_event_callback_add(box, EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, 
_btn_visibility_change, );
+   efl_gfx_entity_visible_set(box, EINA_FALSE);
+
+   ck_assert_int_eq(check, EINA_TRUE);
+}
+EFL_END_TEST
+
+void efl_ui_test_callback(TCase *tc)
+{
+   tcase_add_checked_fixture(tc, callback_setup, NULL);
+   tcase_add_test(tc, efl_ui_callback_visibility);
+}
diff --git a/src/tests/elementary/meson.build b/src/tests/elementary/meson.build
index 987913aef2.

[EGIT] [core/efl] master 01/01: efl_ui_scroller: apply handling focus.

2019-02-25 Thread Hosang Kim
eagleeye pushed a commit to branch master.

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

commit 493b095add08d0dba5860a34a4f769f271966d4e
Author: Hosang Kim 
Date:   Tue Feb 26 16:52:54 2019 +0900

efl_ui_scroller: apply handling focus.

Summary: Focus manager is applied to process key events.

Test Plan: elementary_test -> efl.ui.scroller

Reviewers: SanghyeonLee, YOhoho, marcelhollerbach, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: woohyun, Jaehyun_Cho, bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7776
---
 data/elementary/config/default/base.src.in  | 103 -
 data/elementary/config/mobile/base.src.in   | 103 -
 data/elementary/config/standard/base.src.in | 103 -
 src/lib/elementary/efl_ui_scroller.c| 165 
 src/lib/elementary/efl_ui_scroller.eo   |   5 +
 src/lib/elementary/elm_priv.h   |   2 +-
 6 files changed, 477 insertions(+), 4 deletions(-)

diff --git a/data/elementary/config/default/base.src.in 
b/data/elementary/config/default/base.src.in
index 20670544eb..79f7a1bb55 100644
--- a/data/elementary/config/default/base.src.in
+++ b/data/elementary/config/default/base.src.in
@@ -1,5 +1,5 @@
 group "Elm_Config" struct {
-  value "config_version" int: 131092;
+  value "config_version" int: 131093;
   value "entry_select_allow" uchar: 1;
   value "engine" string: "";
   value "vsync" uchar: 0;
@@ -3153,5 +3153,106 @@ group "Elm_Config" struct {
}
 }
  }
+ group "Elm_Config_Bindings_Widget" struct {
+value "name" string: "Efl.Ui.Scroller";
+group "key_bindings" list {
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "Left";
+  value "action" string: "move";
+  value "params" string: "left";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "KP_Left";
+  value "action" string: "move";
+  value "params" string: "left";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "Right";
+  value "action" string: "move";
+  value "params" string: "right";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "KP_Right";
+  value "action" string: "move";
+  value "params" string: "right";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "Up";
+  value "action" string: "move";
+  value "params" string: "up";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "KP_Up";
+  value "action" string: "move";
+  value "params" string: "up";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "Down";
+  value "action" string: "move";
+  value "params" string: "down";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "KP_Down";
+  value "action" string: "move";
+  value "params" string: "down";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "Home";
+  value "action" string: "move";
+  value "params" string: "first";
+   }
+   group "Elm_Config_Binding_Key" struct {
+  value "context" int: 0;
+  value "key" string: "KP_Home&quo

[EGIT] [core/efl] master 01/01: efl_ui_scrollable: add step size property

2019-02-25 Thread Hosang Kim
eagleeye pushed a commit to branch master.

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

commit f92eb7f54cdbd04da9d244b82676e29edf264b73
Author: Hosang Kim 
Date:   Mon Feb 25 21:22:43 2019 +0900

efl_ui_scrollable: add step size property

Summary: The step size property determines amount of scroll by arrow key 
event.

Test Plan: elementary_test -> efl.ui.scroller

Reviewers: bu5hm4n, woohyun, cedric

Reviewed By: bu5hm4n, cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7916
---
 src/lib/efl/interfaces/efl_ui_scrollable_interactive.eo | 13 +
 src/lib/elementary/efl_ui_scroll_manager.c  | 13 +
 src/lib/elementary/efl_ui_scroll_manager.eo |  1 +
 3 files changed, 27 insertions(+)

diff --git a/src/lib/efl/interfaces/efl_ui_scrollable_interactive.eo 
b/src/lib/efl/interfaces/efl_ui_scrollable_interactive.eo
index c5bbc1cceb..906c43982e 100644
--- a/src/lib/efl/interfaces/efl_ui_scrollable_interactive.eo
+++ b/src/lib/efl/interfaces/efl_ui_scrollable_interactive.eo
@@ -137,6 +137,19 @@ interface @beta Efl.Ui.Scrollable_Interactive extends 
Efl.Ui.Scrollable
 h: bool; [[Whether to limit the minimum vertical size]]
  }
   }
+  @property step_size {
+ [[Control the step size
+
+   Use this call to set step size.
+   This value is used when scroller scroll by arrow key event.]]
+ set {
+ }
+ get {
+ }
+ values {
+step: Eina.Position2D; [[The step size in pixels]]
+ }
+  }
   scroll {
  [[Show a specific virtual region within the scroller content object.
 
diff --git a/src/lib/elementary/efl_ui_scroll_manager.c 
b/src/lib/elementary/efl_ui_scroll_manager.c
index 522b623309..e3711109ed 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.c
+++ b/src/lib/elementary/efl_ui_scroll_manager.c
@@ -274,6 +274,19 @@ 
_efl_ui_scroll_manager_efl_ui_scrollable_interactive_match_content_set(Eo *obj E
sd->match_content_h = !!h;
 }
 
+EOLIAN static void
+_efl_ui_scroll_manager_efl_ui_scrollable_interactive_step_size_set(Eo *obj 
EINA_UNUSED, Efl_Ui_Scroll_Manager_Data *sd, Eina_Position2D step)
+{
+   sd->step.x = step.x * elm_config_scale_get();
+   sd->step.y = step.y * elm_config_scale_get();
+}
+
+EOLIAN static Eina_Position2D
+_efl_ui_scroll_manager_efl_ui_scrollable_interactive_step_size_get(const Eo 
*obj EINA_UNUSED, Efl_Ui_Scroll_Manager_Data *sd)
+{
+   return EINA_POSITION2D(sd->step.x, sd->step.y);
+}
+
 static Evas_Coord
 _efl_ui_scroll_manager_x_mirrored_get(const Evas_Object *obj,
Evas_Coord x)
diff --git a/src/lib/elementary/efl_ui_scroll_manager.eo 
b/src/lib/elementary/efl_ui_scroll_manager.eo
index ee7a3a46aa..93cd7e99bc 100644
--- a/src/lib/elementary/efl_ui_scroll_manager.eo
+++ b/src/lib/elementary/efl_ui_scroll_manager.eo
@@ -35,6 +35,7 @@ class @beta Efl.Ui.Scroll.Manager extends Efl.Object 
implements
   Efl.Ui.Scrollable_Interactive.movement_block { get; set; }
   Efl.Ui.Scrollable_Interactive.gravity { get; set; }
   Efl.Ui.Scrollable_Interactive.match_content { set; }
+  Efl.Ui.Scrollable_Interactive.step_size { set; get; }
   Efl.Ui.Scrollbar.bar_mode { get; set; }
   Efl.Ui.Scrollbar.bar_size { get; }
   Efl.Ui.Scrollbar.bar_position { get; set; }

-- 




[EGIT] [core/efl] master 01/01: ecore: check fcntl return.

2019-01-29 Thread Hosang Kim
jaehyun pushed a commit to branch master.

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

commit 58c9f5688530fc109b649b54fecfc802ded04522
Author: Hosang Kim 
Date:   Tue Jan 29 19:30:45 2019 +0900

ecore: check fcntl return.

Summary: Found by svace

Reviewers: Jaehyun_Cho, woohyun, Hermet

Reviewed By: Jaehyun_Cho

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7808
---
 src/lib/ecore/ecore_signal.c |  4 +++-
 src/lib/ecore/efl_thread.c   | 24 
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/lib/ecore/ecore_signal.c b/src/lib/ecore/ecore_signal.c
index f970842d31..1138c7be53 100644
--- a/src/lib/ecore/ecore_signal.c
+++ b/src/lib/ecore/ecore_signal.c
@@ -247,7 +247,9 @@ _ecore_signal_pipe_init(void)
   }
 eina_file_close_on_exec(sig_pipe[0], EINA_TRUE);
 eina_file_close_on_exec(sig_pipe[1], EINA_TRUE);
-fcntl(sig_pipe[0], F_SETFL, O_NONBLOCK);
+if (fcntl(sig_pipe[0], F_SETFL, O_NONBLOCK) < 0)
+  ERR("can't set pipe to NONBLOCK");
+
  }
_signalhandler_setup();
if (!sig_pipe_handler)
diff --git a/src/lib/ecore/efl_thread.c b/src/lib/ecore/efl_thread.c
index 8e4cd978fb..4d48296093 100644
--- a/src/lib/ecore/efl_thread.c
+++ b/src/lib/ecore/efl_thread.c
@@ -618,8 +618,10 @@ _efl_thread_efl_task_run(Eo *obj, Efl_Thread_Data *pd)
 pd->fd.out= pipe_from_thread[0]; // read - output from child
 eina_file_close_on_exec(thdat->fd.in, EINA_TRUE);
 eina_file_close_on_exec(pd->fd.out, EINA_TRUE);
-fcntl(thdat->fd.in, F_SETFL, O_NONBLOCK);
-fcntl(pd->fd.out, F_SETFL, O_NONBLOCK);
+if (fcntl(thdat->fd.in, F_SETFL, O_NONBLOCK) < 0)
+  ERR("can't set pipe to NONBLOCK");
+if (fcntl(pd->fd.out, F_SETFL, O_NONBLOCK) < 0)
+  ERR("can't set pipe to NONBLOCK");
 pd->fd.out_handler =
   efl_add(EFL_LOOP_HANDLER_CLASS, obj,
   efl_loop_handler_fd_set(efl_added, pd->fd.out),
@@ -634,8 +636,10 @@ _efl_thread_efl_task_run(Eo *obj, Efl_Thread_Data *pd)
 thdat->fd.out = pipe_to_thread  [0]; // read - output from parent
 eina_file_close_on_exec(pd->fd.in, EINA_TRUE);
 eina_file_close_on_exec(thdat->fd.out, EINA_TRUE);
-fcntl(thdat->fd.out, F_SETFL, O_NONBLOCK);
-fcntl(pd->fd.in, F_SETFL, O_NONBLOCK);
+if (fcntl(thdat->fd.out, F_SETFL, O_NONBLOCK) < 0)
+  ERR("can't set pipe to NONBLOCK");
+if (fcntl(pd->fd.in, F_SETFL, O_NONBLOCK) < 0)
+  ERR("can't set pipe to NONBLOCK");
 pd->fd.in_handler =
   efl_add(EFL_LOOP_HANDLER_CLASS, obj,
   efl_loop_handler_fd_set(efl_added, pd->fd.in),
@@ -682,10 +686,14 @@ _efl_thread_efl_task_run(Eo *obj, Efl_Thread_Data *pd)
thdat->ctrl.out = pipe_to_thread  [0]; // read - output from parent
pd->ctrl.in = pipe_to_thread  [1]; // write - input to child
pd->ctrl.out= pipe_from_thread[0]; // read - output from child
-   fcntl(thdat->ctrl.in, F_SETFL, O_NONBLOCK);
-   fcntl(thdat->ctrl.out, F_SETFL, O_NONBLOCK);
-   fcntl(pd->ctrl.in, F_SETFL, O_NONBLOCK);
-   fcntl(pd->ctrl.out, F_SETFL, O_NONBLOCK);
+   if (fcntl(thdat->ctrl.in, F_SETFL, O_NONBLOCK) < 0)
+ ERR("can't set pipe to NONBLOCK");
+   if (fcntl(thdat->ctrl.out, F_SETFL, O_NONBLOCK) < 0)
+ ERR("can't set pipe to NONBLOCK");
+   if (fcntl(pd->ctrl.in, F_SETFL, O_NONBLOCK) < 0)
+ ERR("can't set pipe to NONBLOCK");
+   if (fcntl(pd->ctrl.out, F_SETFL, O_NONBLOCK) < 0)
+ ERR("can't set pipe to NONBLOCK");
eina_file_close_on_exec(pd->ctrl.in, EINA_TRUE);
eina_file_close_on_exec(pd->ctrl.out, EINA_TRUE);
eina_file_close_on_exec(thdat->ctrl.in, EINA_TRUE);

-- 




[EGIT] [core/efl] master 01/01: efl_ui_scrollable: implement efl_ui_scrollable_content_pos_get method.

2018-11-27 Thread Hosang Kim
eagleeye pushed a commit to branch master.

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

commit c4ae2be68588c58459d7eb9b0435ab2f02550575
Author: Hosang Kim 
Date:   Wed Nov 28 14:32:39 2018 +0900

efl_ui_scrollable: implement efl_ui_scrollable_content_pos_get method.

Summary:
Applications want to know current position on scroller.
Also, it is necessary when calculate position of focusable object.

Reviewers: herdsman, akanad, YOhoho, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7251
---
 src/bin/elementary/test_ui_scroller.c  |  6 +-
 src/lib/elementary/efl_ui_image_zoomable.c |  1 +
 src/lib/elementary/efl_ui_list.c   | 90 +-
 src/lib/elementary/efl_ui_list.eo  |  7 ---
 src/lib/elementary/efl_ui_list_view.c  | 28 +-
 src/lib/elementary/efl_ui_list_view.eo |  3 -
 src/lib/elementary/efl_ui_scroller.c   | 90 +-
 src/lib/elementary/efl_ui_scroller.eo  |  7 ---
 src/lib/elementary/efl_ui_widget.c | 16 +-
 9 files changed, 21 insertions(+), 227 deletions(-)

diff --git a/src/bin/elementary/test_ui_scroller.c 
b/src/bin/elementary/test_ui_scroller.c
index 3edc6868bf..a1f8cbd2f8 100644
--- a/src/bin/elementary/test_ui_scroller.c
+++ b/src/bin/elementary/test_ui_scroller.c
@@ -13,13 +13,15 @@ _bt_clicked(void *data EINA_UNUSED, const Efl_Event *ev)
 static void
 _scroll_start_cb(void *data EINA_UNUSED, const Efl_Event *ev)
 {
-   printf("scroll start: %p\n", ev->object);
+   Eina_Position2D pos = efl_ui_scrollable_content_pos_get(ev->object);
+   printf("scroll start: %p x: %d y: %d\n", ev->object, pos.x, pos.y);
 }
 
 static void
 _scroll_stop_cb(void *data EINA_UNUSED, const Efl_Event *ev)
 {
-   printf("scroll stop: %p\n", ev->object);
+   Eina_Position2D pos = efl_ui_scrollable_content_pos_get(ev->object);
+   printf("scroll stop: %p x: %d y: %d\n", ev->object, pos.x, pos.y);
 }
 
 void
diff --git a/src/lib/elementary/efl_ui_image_zoomable.c 
b/src/lib/elementary/efl_ui_image_zoomable.c
index 2a565067fd..2a46ddb29b 100644
--- a/src/lib/elementary/efl_ui_image_zoomable.c
+++ b/src/lib/elementary/efl_ui_image_zoomable.c
@@ -1847,6 +1847,7 @@ _efl_ui_image_zoomable_efl_canvas_group_group_add(Eo 
*obj, Efl_Ui_Image_Zoomable
elm_widget_can_focus_set(obj, EINA_TRUE);
 
priv->smanager = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj);
+   efl_composite_attach(obj, priv->smanager);
 
efl_ui_mirrored_set(priv->smanager, efl_ui_mirrored_get(obj));
efl_ui_scrollable_bounce_enabled_set(priv->smanager, bounce, bounce);
diff --git a/src/lib/elementary/efl_ui_list.c b/src/lib/elementary/efl_ui_list.c
index 0184234724..045346ceee 100644
--- a/src/lib/elementary/efl_ui_list.c
+++ b/src/lib/elementary/efl_ui_list.c
@@ -433,6 +433,7 @@ _efl_ui_list_efl_object_finalize(Eo *obj,
 
pd->smanager = efl_add(EFL_UI_SCROLL_MANAGER_CLASS, obj);
efl_ui_mirrored_set(pd->smanager, efl_ui_mirrored_get(obj));
+   efl_composite_attach(obj, pd->smanager);
 
pd->pan = efl_add(EFL_UI_PAN_CLASS, obj);
 
@@ -914,68 +915,6 @@ _efl_ui_list_efl_pack_pack_padding_get(const Eo *obj 
EINA_UNUSED,
  */
 
 /* Scroll APIs */
-EOLIAN static Eina_Size2D
-_efl_ui_list_efl_ui_scrollable_interactive_content_size_get(const Eo *obj 
EINA_UNUSED,
-Efl_Ui_List_Data 
*pd)
-{
-   return efl_ui_scrollable_content_size_get(pd->smanager);
-}
-
-EOLIAN static Eina_Rect
-_efl_ui_list_efl_ui_scrollable_interactive_viewport_geometry_get(const Eo *obj 
EINA_UNUSED,
- 
Efl_Ui_List_Data *pd)
-{
-   return efl_ui_scrollable_viewport_geometry_get(pd->smanager);
-}
-
-EOLIAN static void
-_efl_ui_list_efl_ui_scrollable_interactive_bounce_enabled_set(Eo *obj 
EINA_UNUSED,
-  Efl_Ui_List_Data 
*pd,
-  Eina_Bool horiz,
-  Eina_Bool vert)
-{
-   efl_ui_scrollable_bounce_enabled_set(pd->smanager, horiz, vert);
-}
-
-EOLIAN static void
-_efl_ui_list_efl_ui_scrollable_interactive_bounce_enabled_get(const Eo *obj 
EINA_UNUSED,
-  Efl_Ui_List_Data 
*pd,
-  Eina_Bool *horiz,
-  Eina_Bool *vert)
-{
-   efl_ui_scrollable_bounce_enabled_get(pd->smanager, horiz, vert);
-}
-
-EOLIAN static Eina_Bool
-_efl_ui_list_efl_ui_scrollable_interactive_scroll_hold_get(const Eo *obj 

[EGIT] [core/efl] master 01/01: evas: fix backward compatibility issue.

2018-10-26 Thread Hosang Kim
hermet pushed a commit to branch master.

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

commit 46cca0febffefc330ec5f037c1cf8e9c1e00a6ab
Author: Hosang Kim 
Date:   Fri Oct 26 20:28:03 2018 +0900

evas: fix backward compatibility issue.

Summary:
Sometimes mouse_grabbed flag can not be zero.
Before version of EFL, object has just one mouse_grabbed flag.
But now we have a new feature, so object has list of pointer devices
and each pointer device has mouse_grabbed flag.

We need to check all of pointer devices mouse_grabbed flag.
And if all of mouse_grabbed flag are zero, dispatch move event.

Test Plan:
{F3384050}
gcc -o button_example_01 button_example_01.c `pkg-config --cflags --libs 
elementary`

Reviewers: iscaro, zmike, Hermet

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7216
---
 src/lib/evas/canvas/evas_object_main.c | 22 --
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/lib/evas/canvas/evas_object_main.c 
b/src/lib/evas/canvas/evas_object_main.c
index e0856b7561..d8a6fb42a6 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -2036,14 +2036,24 @@ _hide(Evas_Object *eo_obj, Evas_Object_Protected_Data 
*obj)
  ((obj->map->cur.map) && (obj->map->cur.map->count == 4) && 
(obj->map->cur.usemap)))
{
   Evas_Object_Pointer_Data *obj_pdata;
-
+  Eina_Bool mouse_grabbed = EINA_FALSE;
   EINA_INLIST_FOREACH(obj->events->pointer_grabs, obj_pdata)
 {
-   if (!obj_pdata->mouse_grabbed &&
-   evas_object_is_in_output_rect(eo_obj, obj, 
obj_pdata->evas_pdata->seat->x,
- 
obj_pdata->evas_pdata->seat->y,
- 1, 1))
- 
_evas_canvas_event_pointer_move_event_dispatch(obj->layer->evas, 
obj_pdata->evas_pdata, NULL);
+   if (obj_pdata->mouse_grabbed > 0)
+ {
+mouse_grabbed = EINA_TRUE;
+break;
+ }
+}
+  if (!mouse_grabbed)
+{
+   EINA_INLIST_FOREACH(obj->events->pointer_grabs, 
obj_pdata)
+ {
+if (evas_object_is_in_output_rect(eo_obj, obj, 
obj_pdata->evas_pdata->seat->x,
+  
obj_pdata->evas_pdata->seat->y,
+  1, 1))
+  
_evas_canvas_event_pointer_move_event_dispatch(obj->layer->evas, 
obj_pdata->evas_pdata, NULL);
+ }
 }
 /* this is at odds to handling events when an obj is moved out of the mouse
  * ore resized out or clipped out. if mouse is grabbed - regardless of

-- 




[EGIT] [core/efl] master 01/01: evas_events: Fix wrong condtion.

2018-10-16 Thread Hosang Kim
woohyun pushed a commit to branch master.

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

commit e9eff6b30ea036ba213909fed07e0f88804f4b28
Author: Hosang Kim 
Date:   Wed Oct 17 14:26:23 2018 +0900

evas_events: Fix wrong condtion.

Summary:
mouse_grabbed should not be less than zero.
But use OR instead of AND in the condition, so sometimes mouse_grabbed is 
-1.

Reviewers: woohyun, zmike

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7168
---
 src/lib/evas/canvas/evas_events.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lib/evas/canvas/evas_events.c 
b/src/lib/evas/canvas/evas_events.c
index 1cb89f4f67..13f2c358bd 100644
--- a/src/lib/evas/canvas/evas_events.c
+++ b/src/lib/evas/canvas/evas_events.c
@@ -829,7 +829,7 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, 
Evas *eo_e,
  continue;
   }
 if (((obj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) ||
- (obj_pdata->pointer_mode == 
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) ||
+ (obj_pdata->pointer_mode == 
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) &&
 (obj_pdata->mouse_grabbed > 0))
   {
  obj_pdata->mouse_grabbed--;
@@ -1044,7 +1044,7 @@ 
_evas_event_source_multi_up_events(Evas_Object_Protected_Data *obj, Evas_Public_
   }
 
 if (((obj_pdata->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) ||
- (obj_pdata->pointer_mode == 
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) ||
+ (obj_pdata->pointer_mode == 
EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)) &&
 (obj_pdata->mouse_grabbed > 0))
   {
  obj_pdata->mouse_grabbed--;

-- 




[EGIT] [core/efl] master 01/04: ecore_wl2: fix coverity issue. (Resource Leak)

2018-10-10 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit 185a1f739b9f6b5b1ee44c768e3a470e5528c57e
Author: Hosang Kim 
Date:   Wed Oct 10 08:22:57 2018 +

ecore_wl2: fix coverity issue. (Resource Leak)

Module is not freed when eina_module_load is failed.
Differential Revision: https://phab.enlightenment.org/D7152
---
 src/lib/ecore_wl2/ecore_wl2.c | 9 -
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index fe447e0cec..81573da85a 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -82,7 +82,14 @@ _ecore_wl2_surface_modules_init(void)
   {
  Eina_Module *local_module = eina_module_new(path);
  EINA_SAFETY_ON_NULL_RETURN_VAL(local_module, EINA_FALSE);
- EINA_SAFETY_ON_FALSE_RETURN_VAL(eina_module_load(local_module), 
EINA_FALSE);
+
+ if (!eina_module_load(local_module))
+   {
+  ERR("Cannot load module %s", local_module->file);
+  eina_module_free(local_module);
+  local_module = NULL;
+  return EINA_FALSE;
+   }
  return EINA_TRUE;
   }
  }

-- 




[EGIT] [core/efl] master 04/04: eldbus: remove unreachable code.

2018-10-10 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit 53b8174fbfc495e541aea1c3bc9cc3ccf0b2cd5c
Author: Hosang Kim 
Date:   Fri Sep 28 11:39:43 2018 +

eldbus: remove unreachable code.

Coverity doesn't like this unreachable code.
Differential Revision: https://phab.enlightenment.org/D7120
---
 src/lib/eldbus/eldbus_signal_handler.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/lib/eldbus/eldbus_signal_handler.c 
b/src/lib/eldbus/eldbus_signal_handler.c
index e577ddc1bb..dba557bbc1 100644
--- a/src/lib/eldbus/eldbus_signal_handler.c
+++ b/src/lib/eldbus/eldbus_signal_handler.c
@@ -114,9 +114,6 @@ 
eldbus_signal_handler_match_extra_vset(Eldbus_Signal_Handler *sh, va_list ap)
   eina_strbuf_string_get(sh->match), NULL);
return EINA_TRUE;
 
-   ERR("Error setting new match.");
-   return EINA_FALSE;
-
 error:
dbus_bus_add_match(sh->conn->dbus_conn,
   eina_strbuf_string_get(sh->match), NULL);

-- 




[EGIT] [core/efl] master 01/01: elm_interface_scrollable: fix using wrong variable.

2018-09-28 Thread Hosang Kim
sanghyeonlee pushed a commit to branch master.

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

commit cd547c5a078c251a3d66099690d64a6d802e5123
Author: Hosang Kim 
Date:   Fri Sep 28 15:44:58 2018 +0900

elm_interface_scrollable: fix using wrong variable.

Summary:
vy isn't initialized when p >1.0 or p<0.

this function is for finding out a current animating speed of momentum 
scrolling.
and a caller of this function calls this function by reference(vx, vy)
so that if progress ratio is not between 0 and 1, vx, vy must be zero.

The issue was detected by coverity check.
It may not discovered any issues yet, but the typo is too obvious, so need 
to fix the right value.

Test Plan: This is coverity issue.

Reviewers: akanad, Hermet, SanghyeonLee

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7114
---
 src/lib/elementary/elm_interface_scrollable.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/elm_interface_scrollable.c 
b/src/lib/elementary/elm_interface_scrollable.c
index 483fc47ce4..f5fc08361d 100644
--- a/src/lib/elementary/elm_interface_scrollable.c
+++ b/src/lib/elementary/elm_interface_scrollable.c
@@ -2605,7 +2605,7 @@ 
_elm_scroll_running_momentum_speed_get(Elm_Scrollable_Smart_Interface_Data *sid,
if ( p > 1.0 || p < 0)
  {
 if (vx) *vx = 0;
-if (vy) *vx = 0;
+if (vy) *vy = 0;
 return EINA_FALSE;
  }
 

-- 




[EGIT] [core/efl] master 01/04: efl_input: fix problem that ref count does not become 0.

2018-08-27 Thread Hosang Kim
bu5hm4n pushed a commit to branch master.

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

commit 586f8ae9571d34eaa32007019e13b239e707f081
Author: Hosang Kim 
Date:   Mon Aug 27 07:17:13 2018 +

efl_input: fix problem that ref count does not become 0.

1.fix reusing instance logic.
2.remove efl_ref() when default devices are created.
Differential Revision: https://phab.enlightenment.org/D6882
---
 src/lib/evas/canvas/efl_input_event.c |  6 +++---
 src/lib/evas/canvas/evas_main.c   | 26 +-
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/lib/evas/canvas/efl_input_event.c 
b/src/lib/evas/canvas/efl_input_event.c
index 9bd5151a07..1a172166b1 100644
--- a/src/lib/evas/canvas/efl_input_event.c
+++ b/src/lib/evas/canvas/efl_input_event.c
@@ -117,9 +117,9 @@ efl_input_event_instance_get(Eo *klass, Eo *owner)
  }
else
  {
-evt = efl_add(klass, owner,
-  efl_event_callback_add(efl_added, EFL_EVENT_NOREF, 
_noref_death, NULL),
-  efl_del_intercept_set(efl_added, _del_hook));
+evt = efl_add(klass, owner);
+efl_event_callback_add(evt, EFL_EVENT_NOREF, _noref_death, NULL);
+efl_del_intercept_set(evt, _del_hook);
  }
 
return efl_ref(evt);
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index f5917d2ede..9af9f016dc 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -1248,20 +1248,20 @@ evas_output_method_set(Evas *eo_e, int render_method)
 return;
  }
 
-   e->default_seat = efl_ref(evas_device_add_full(eo_e, "default", "The 
default seat",
-  NULL, NULL, 
EVAS_DEVICE_CLASS_SEAT,
-  EVAS_DEVICE_SUBCLASS_NONE));
+   e->default_seat = evas_device_add_full(eo_e, "default", "The default seat",
+  NULL, NULL, EVAS_DEVICE_CLASS_SEAT,
+  EVAS_DEVICE_SUBCLASS_NONE);
evas_device_seat_id_set(e->default_seat, 1);
-   e->default_mouse = efl_ref(evas_device_add_full(eo_e, "Mouse",
-   "The default mouse",
-   e->default_seat, NULL,
-   EVAS_DEVICE_CLASS_MOUSE,
-   EVAS_DEVICE_SUBCLASS_NONE));
-   e->default_keyboard = efl_ref(evas_device_add_full(eo_e, "Keyboard",
-  "The default keyboard",
-  e->default_seat, NULL,
-  
EVAS_DEVICE_CLASS_KEYBOARD,
-  
EVAS_DEVICE_SUBCLASS_NONE));
+   e->default_mouse = evas_device_add_full(eo_e, "Mouse",
+   "The default mouse",
+   e->default_seat, NULL,
+   EVAS_DEVICE_CLASS_MOUSE,
+   EVAS_DEVICE_SUBCLASS_NONE);
+   e->default_keyboard = evas_device_add_full(eo_e, "Keyboard",
+  "The default keyboard",
+  e->default_seat, NULL,
+  EVAS_DEVICE_CLASS_KEYBOARD,
+  EVAS_DEVICE_SUBCLASS_NONE);
 }
 
 EAPI int

-- 




[EGIT] [core/efl] master 02/02: ecore: fix that timers are not called in the order they were registered.

2018-08-02 Thread Hosang Kim
discomfitor pushed a commit to branch master.

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

commit a92274f81184cd06b398a0930110f2a4bee49e76
Author: Hosang Kim 
Date:   Thu Aug 2 09:14:15 2018 -0400

ecore: fix that timers are not called in the order they were registered.

Summary:
Timers are not called in the order they were registered.
Because when current timer is deleted, getting next timer is called twice.

Test Plan:

Timer1 expired after 0.001 seconds.
Timer3 expired after 0.001 seconds.
Timer5 expired after 0.001 seconds.
Timer7 expired after 0.001 seconds.
Timer2 expired after 0.001 seconds.
Timer6 expired after 0.001 seconds.
Timer4 expired after 0.001 seconds.
Timer8 expired after 0.001 seconds.

Timer1 expired after 0.001 seconds.
Timer2 expired after 0.001 seconds.
Timer3 expired after 0.001 seconds.
Timer4 expired after 0.001 seconds.
Timer5 expired after 0.001 seconds.
Timer6 expired after 0.001 seconds.
Timer7 expired after 0.001 seconds.
Timer8 expired after 0.001 seconds.|

{F3268233}

Reviewers: Hermet, Jaehyun_Cho, zmike, SanghyeonLee

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl_tests

Differential Revision: https://phab.enlightenment.org/D6700
---
 src/lib/ecore/ecore_timer.c| 13 +++--
 src/tests/ecore/ecore_test_timer.c | 37 +
 2 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c
index 1ebce1f3df..776848875c 100644
--- a/src/lib/ecore/ecore_timer.c
+++ b/src/lib/ecore/ecore_timer.c
@@ -461,11 +461,20 @@ _efl_loop_timer_util_delay(Efl_Loop_Timer_Data *timer, 
double add)
 EOLIAN static void
 _efl_loop_timer_efl_object_parent_set(Eo *obj, Efl_Loop_Timer_Data *pd, 
Efl_Object *parent)
 {
+   Eina_Inlist *first;
+
efl_parent_set(efl_super(obj, EFL_LOOP_TIMER_CLASS), parent);
 
if ((!pd->constructed) || (!pd->finalized)) return;
 
-   _efl_loop_timer_util_loop_clear(pd);
+   // Remove the timer from all possible pending list
+   first = eina_inlist_first(EINA_INLIST_GET(pd));
+   if (first == pd->loop_data->timers)
+ pd->loop_data->timers = eina_inlist_remove
+   (pd->loop_data->timers, EINA_INLIST_GET(pd));
+   else if (first == pd->loop_data->suspended)
+ pd->loop_data->suspended = eina_inlist_remove
+   (pd->loop_data->suspended, EINA_INLIST_GET(pd));
 
if (efl_invalidated_get(obj)) return;
 
@@ -555,7 +564,7 @@ _efl_loop_timer_next_get(Eo *obj, Efl_Loop_Data *pd)
 static inline void
 _efl_loop_timer_reschedule(Efl_Loop_Timer_Data *timer, double when)
 {
-   if (timer->frozen) return;
+   if (timer->frozen || efl_invalidated_get(timer->object)) return;
 
if (timer->loop_data &&
(EINA_INLIST_GET(timer)->next || EINA_INLIST_GET(timer)->prev))
diff --git a/src/tests/ecore/ecore_test_timer.c 
b/src/tests/ecore/ecore_test_timer.c
index 7b41b8bc1b..222c4151c5 100644
--- a/src/tests/ecore/ecore_test_timer.c
+++ b/src/tests/ecore/ecore_test_timer.c
@@ -252,10 +252,47 @@ EFL_START_TEST(ecore_test_ecore_main_loop_timer)
 }
 EFL_END_TEST
 
+static int count = 0;
+
+static Eina_Bool
+_timer_cb(void *data)
+{
+   count++;
+   int num = (intptr_t) data;
+   fail_if (num != count, "Error timer is called out of order");
+   if (count == 8) ecore_main_loop_quit();
+   return ECORE_CALLBACK_CANCEL;
+}
+
+EFL_START_TEST(ecore_test_timer_in_order)
+{
+   Ecore_Timer *timer;
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 1);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 2);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 3);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 4);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 5);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 6);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 7);
+   fail_if(timer == NULL);
+   timer = ecore_timer_add(0.001, _timer_cb, (void *) 8);
+   fail_if(timer == NULL);
+
+   ecore_main_loop_begin();
+}
+EFL_END_TEST
+
 void ecore_test_timer(TCase *tc)
 {
   tcase_add_test(tc, ecore_test_timers);
   tcase_add_test(tc, ecore_test_timer_inside_call);
   tcase_add_test(tc, ecore_test_timer_valid_callbackfunc);
   tcase_add_test(tc, ecore_test_ecore_main_loop_timer);
+  tcase_add_test(tc, ecore_test_timer_in_order);
 }

-- 




[EGIT] [core/efl] master 01/01: ecore_evas: skip rendering evas and making animator tick

2018-07-05 Thread Hosang Kim
discomfitor pushed a commit to branch master.

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

commit 1b2408d5f7aee1032a3fdda8bf0a2c5578eb6b2a
Author: Hosang Kim 
Date:   Thu Jul 5 15:15:55 2018 -0400

ecore_evas: skip rendering evas and making animator tick

Summary:
Some ecore_evas such as ecore_evas_extn_plug doesn't have evas.

ecore_evas_extn_plug seems to be Ecore_Evas, but actually it is 
Evas_Object_Image.
ecore_evas_extn_plug makes new ecore evas, but it only exists to 
communicate with ecore_evas_extn_socket.
newly ecore evas  only open and close file(ecore_evas_extn_socket). so it 
doesn't have evas.

```
EAPI Evas_Object *
ecore_evas_extn_plug_new_internal(Ecore_Evas *ee_target)
{
...
   ee = calloc(1, sizeof(Ecore_Evas));
...
   o = evas_object_image_filled_add(ee_target->evas);
...
  return o;
}
```

Reviewers: zmike, Hermet, woohyun, raster, devilhorns

Reviewed By: zmike

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6504
---
 src/lib/ecore_evas/ecore_evas.c | 11 ---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 88dd59ee7c..904dfda0c7 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -149,6 +149,8 @@ ecore_evas_render(Ecore_Evas *ee)
 {
Eina_Bool rend = EINA_FALSE;
 
+   if (!ee->evas) return EINA_FALSE;
+
if (ee->in_async_render)
  {
 DBG("ee=%p is rendering, skip.", ee);
@@ -3048,7 +3050,8 @@ ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle 
*viewport, double loop_t
// FIXME: We do not support partial animator in the subcanvas
EINA_LIST_FOREACH(ee->sub_ecore_evas, l, subee)
  {
-ecore_evas_animator_tick(subee, NULL, loop_time);
+if (subee->evas)
+  ecore_evas_animator_tick(subee, NULL, loop_time);
  }
 
// We are a source of sync for general animator.
@@ -3274,10 +3277,12 @@ _ecore_evas_register(Ecore_Evas *ee)
 EAPI void
 _ecore_evas_subregister(Ecore_Evas *ee_target, Ecore_Evas *ee)
 {
-   _ecore_evas_register_animators(ee);
-
ee_target->sub_ecore_evas = eina_list_append(ee_target->sub_ecore_evas, ee);
 
+   if (!ee->evas) return;
+
+   _ecore_evas_register_animators(ee);
+
if (!ee->engine.func->fn_render)
  evas_event_callback_priority_add(ee->evas, EVAS_CALLBACK_RENDER_POST, 
EVAS_CALLBACK_PRIORITY_AFTER,
   _evas_evas_buffer_rendered, ee);

-- 




[EGIT] [core/efl] master 01/01: evas: move clearing cows to right place.

2018-06-27 Thread Hosang Kim
discomfitor pushed a commit to branch master.

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

commit df652673febd8617d3f458a5c14478534e927940
Author: Hosang Kim 
Date:   Wed Jun 27 07:50:30 2018 -0400

evas: move clearing cows to right place.

Summary:
Evas is child of main loop now, so evas is deleted when main loop is 
quitted.
In case of not calling evas_free() explicitly by app side, a crash occurs.
So move clearing cows to below ecore_shutdown().

Test Plan:
//Compile with:
//gcc evas_test.c -o evas_test `pkg-config --cflags --libs ecore evas`

#include 
#include 

Eina_Bool
_timer_cb (void *data)
{
ecore_main_loop_quit();
return 0;
}
int
main(int argc, char *argv[])
{

   evas_init();
   Evas *evas = evas_new();
   Evas_Object *obj = evas_object_box_add(evas);
   Evas_Object *rect = evas_object_rectangle_add(evas);
   evas_object_color_set(rect, 255, 255, 255, 255);
   evas_object_resize(rect, 300, 400);
   evas_object_show(rect);

   evas_object_box_append(obj, rect);

   evas_object_show(obj);
   ecore_timer_add(2.0, _timer_cb, NULL);
   ecore_main_loop_begin();

   evas_shutdown();
   return 0;
}

Reviewers: devilhorns, cedric, jpeg, id213sin, woohyun, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6346
---
 src/Makefile_Evas.am|  1 +
 src/lib/ecore_evas/ecore_evas.c |  2 +-
 src/lib/evas/canvas/evas_main.c | 20 +++-
 src/tests/evas/evas_suite.c |  1 +
 src/tests/evas/evas_suite.h |  1 +
 src/tests/evas/evas_test_new.c  | 21 +
 6 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index 2caa195ab1..deab83005d 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -2434,6 +2434,7 @@ TESTS += tests/evas/evas_suite
 tests_evas_evas_suite_SOURCES = \
 tests/evas/evas_suite.c \
 tests/evas/evas_test_init.c \
+tests/evas/evas_test_new.c \
 tests/evas/evas_test_object.c \
 tests/evas/evas_test_object_smart.c \
 tests/evas/evas_test_textblock.c \
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index 52dfc36db1..88dd59ee7c 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -667,8 +667,8 @@ ecore_evas_shutdown(void)
 
eina_log_domain_unregister(_ecore_evas_log_dom);
_ecore_evas_log_dom = -1;
-   evas_shutdown();
ecore_shutdown();
+   evas_shutdown();
 
return _ecore_evas_init_count;
 }
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 2849f21ceb..50555c4ea1 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -155,9 +155,19 @@ evas_shutdown(void)
 #endif
evas_cache_vg_shutdown();
 
+   evas_font_path_global_clear();
+
+   evas_filter_shutdown();
+
+   evas_thread_shutdown();
+   _evas_preload_thread_shutdown();
+   evas_async_events_shutdown();
+   evas_module_shutdown();
+
+   ecore_shutdown();
+
_efl_gfx_map_shutdown();
 
-   evas_font_path_global_clear();
eina_cow_del(evas_object_proxy_cow);
eina_cow_del(evas_object_map_cow);
eina_cow_del(evas_object_state_cow);
@@ -172,17 +182,9 @@ evas_shutdown(void)
evas_object_image_load_opts_cow = NULL;
evas_object_image_state_cow = NULL;
 
-   evas_filter_shutdown();
eina_cow_del(evas_object_mask_cow);
evas_object_mask_cow = NULL;
 
-   evas_thread_shutdown();
-   _evas_preload_thread_shutdown();
-   evas_async_events_shutdown();
-   evas_module_shutdown();
-
-   ecore_shutdown();
-
 #ifdef BUILD_LOADER_EET
eet_shutdown();
 #endif
diff --git a/src/tests/evas/evas_suite.c b/src/tests/evas/evas_suite.c
index a5c27d5dfa..e84d23f5dc 100644
--- a/src/tests/evas/evas_suite.c
+++ b/src/tests/evas/evas_suite.c
@@ -10,6 +10,7 @@
 
 static const Efl_Test_Case etc[] = {
   { "Evas", evas_test_init },
+  { "Evas New", evas_test_new },
   { "Object", evas_test_object },
   { "Object Textblock", evas_test_textblock },
   { "Object Text", evas_test_text },
diff --git a/src/tests/evas/evas_suite.h b/src/tests/evas/evas_suite.h
index f7feb2ccbe..0da47fe13f 100644
--- a/src/tests/evas/evas_suite.h
+++ b/src/tests/evas/evas_suite.h
@@ -4,6 +4,7 @@
 #include 
 #include "../efl_check.h"
 void evas_test_init(TCase *tc);
+void evas_test_new(TCase *tc);
 void evas_test_object(TCase *tc);
 void evas_test_textblock(TCase *tc);
 void evas_test_text(TCase *tc);
diff --git a/src/tests/evas/evas_test_new.c b/src/tests/evas/evas_test_new.c
new file mode 100644
index 00..c95c43a230
--- /dev/null
+++ b/src/tests/evas/evas_test_new.c
@@ -0,0 +1,21 @@
+#ifdef HAVE_CONFIG_H
+# incl

[EGIT] [core/efl] master 04/13: elm_interface_scrollable: change return value for post events.

2018-05-25 Thread Hosang Kim
cedric pushed a commit to branch master.

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

commit 37f13a9d10e1b94c5d34ead61d316f434f7688de
Author: Hosang Kim <hosang12@samsung.com>
Date:   Fri May 25 10:04:49 2018 -0700

elm_interface_scrollable: change return value for post events.

Summary:
1. Scroller in scroller case, callback process should continue.
 If child scroller does not scroll, parent scroller should be checked 
whether scroll or not.
 So returning EINA_TRUE is necessary.
2. down.dragged flag is always EINA_FALSE, so scroll is never unlocked.
@fix

Test Plan:
precondition
  elementary_config -> scrolling -> Set Scroll Smooth Amount to 0
elementary_test -> pagescroller

Reviewers: woohyun, zmike, singh.amitesh, cedric

Reviewed By: cedric

Subscribers: #committers, cedric, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6187

Reviewed-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/elementary/elm_interface_scrollable.c | 7 +++
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/lib/elementary/elm_interface_scrollable.c 
b/src/lib/elementary/elm_interface_scrollable.c
index e99db959cf..b7ffad275c 100644
--- a/src/lib/elementary/elm_interface_scrollable.c
+++ b/src/lib/elementary/elm_interface_scrollable.c
@@ -2209,10 +2209,9 @@ _elm_scroll_post_event_up(void *data,
 
if (sid->obj)
  {
-if (sid->down.dragged)
-  elm_widget_scroll_lock_set(sid->obj, EFL_UI_SCROLL_BLOCK_NONE);
+elm_widget_scroll_lock_set(sid->obj, EFL_UI_SCROLL_BLOCK_NONE);
  }
-   return EINA_FALSE;
+   return EINA_TRUE;
 }
 
 static Eina_Bool
@@ -3096,7 +3095,7 @@ _elm_scroll_post_event_move(void *data,
  }
if (start) _elm_scroll_drag_start(sid);
 
-   return EINA_FALSE;
+   return EINA_TRUE;
 }
 
 static void

-- 




[EGIT] [core/efl] master 01/01: efl_ui_scrollable: apply scroll_hold_push/pop and scroll_freeze_push/pop

2018-05-17 Thread Hosang Kim
jaehyun pushed a commit to branch master.

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

commit ec670e9a22f0da8ee360642dbe8b426a150093a2
Author: Hosang Kim <hosang12@samsung.com>
Date:   Thu May 17 18:17:44 2018 +0900

efl_ui_scrollable: apply scroll_hold_push/pop and scroll_freeze_push/pop

Test Plan: elementary_test -> Efl.Ui.Scroller -> move slider

Reviewers: jpeg, woohyun, akanad, cedric, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Subscribers: zmike, Jaehyun_Cho, eagle001, cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D5796
---
 src/bin/elementary/test_ui_scroller.c |  3 ++
 src/lib/elementary/efl_ui_widget.c| 56 ---
 2 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/src/bin/elementary/test_ui_scroller.c 
b/src/bin/elementary/test_ui_scroller.c
index 5a0a1fc34e..5d9a6898e4 100644
--- a/src/bin/elementary/test_ui_scroller.c
+++ b/src/bin/elementary/test_ui_scroller.c
@@ -46,6 +46,9 @@ test_efl_ui_scroller(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void
 efl_gfx_size_hint_align_set(efl_added, EVAS_HINT_FILL, 0),
 efl_content_set(sc, efl_added));
 
+   efl_add(EFL_UI_SLIDER_CLASS, bx,
+   efl_gfx_size_hint_min_set(efl_added, EINA_SIZE2D(160, 0)),
+   efl_pack(bx, efl_added));
 
for (i = 0; i < 3; i++)
   {
diff --git a/src/lib/elementary/efl_ui_widget.c 
b/src/lib/elementary/efl_ui_widget.c
index fac32cd4a3..f4c8cc9d7d 100644
--- a/src/lib/elementary/efl_ui_widget.c
+++ b/src/lib/elementary/efl_ui_widget.c
@@ -173,8 +173,12 @@ static inline Eina_Bool
 _elm_scrollable_is(const Evas_Object *obj)
 {
INTERNAL_ENTRY EINA_FALSE;
-   return
-  efl_isa(obj, ELM_INTERFACE_SCROLLABLE_MIXIN);
+   if (elm_widget_is_legacy(obj))
+ return
+efl_isa(obj, ELM_INTERFACE_SCROLLABLE_MIXIN);
+   else
+ return
+efl_isa(obj, EFL_UI_SCROLLABLE_INTERACTIVE_INTERFACE);
 }
 
 static void
@@ -2630,7 +2634,12 @@ _efl_ui_widget_scroll_hold_push(Eo *obj, 
Elm_Widget_Smart_Data *sd)
if (sd->scroll_hold == 1)
  {
 if (_elm_scrollable_is(obj))
-   elm_interface_scrollable_hold_set(obj, EINA_TRUE);
+  {
+ if (elm_widget_is_legacy(obj))
+   elm_interface_scrollable_hold_set(obj, EINA_TRUE);
+ else
+   efl_ui_scrollable_scroll_hold_set(obj, EINA_TRUE);
+  }
 else
   {
  Evas_Object *child;
@@ -2639,7 +2648,10 @@ _efl_ui_widget_scroll_hold_push(Eo *obj, 
Elm_Widget_Smart_Data *sd)
  EINA_LIST_FOREACH(sd->subobjs, l, child)
{
   if (elm_widget_is(child) && _elm_scrollable_is(child))
-elm_interface_scrollable_hold_set(child, EINA_TRUE);
+if (elm_widget_is_legacy(obj))
+  elm_interface_scrollable_hold_set(child, EINA_TRUE);
+else
+  efl_ui_scrollable_scroll_hold_set(child, EINA_TRUE);
}
   }
  }
@@ -2654,7 +2666,12 @@ _efl_ui_widget_scroll_hold_pop(Eo *obj, 
Elm_Widget_Smart_Data *sd)
if (!sd->scroll_hold)
  {
 if (_elm_scrollable_is(obj))
-   elm_interface_scrollable_hold_set(obj, EINA_FALSE);
+  {
+ if (elm_widget_is_legacy(obj))
+   elm_interface_scrollable_hold_set(obj, EINA_FALSE);
+ else
+   efl_ui_scrollable_scroll_hold_set(obj, EINA_FALSE);
+  }
 else
   {
  Evas_Object *child;
@@ -2663,7 +2680,10 @@ _efl_ui_widget_scroll_hold_pop(Eo *obj, 
Elm_Widget_Smart_Data *sd)
  EINA_LIST_FOREACH(sd->subobjs, l, child)
{
   if (elm_widget_is(child) && _elm_scrollable_is(child))
-elm_interface_scrollable_hold_set(child, EINA_FALSE);
+if (elm_widget_is_legacy(obj))
+  elm_interface_scrollable_hold_set(child, EINA_FALSE);
+else
+  efl_ui_scrollable_scroll_hold_set(child, EINA_FALSE);
}
   }
  }
@@ -2687,7 +2707,12 @@ _efl_ui_widget_scroll_freeze_push(Eo *obj, 
Elm_Widget_Smart_Data *sd)
if (sd->scroll_freeze == 1)
  {
 if (_elm_scrollable_is(obj))
-   elm_interface_scrollable_freeze_set(obj, EINA_TRUE);
+  {
+ if (elm_widget_is_legacy(obj))
+   elm_interface_scrollable_freeze_set(obj, EINA_TRUE);
+ else
+   efl_ui_scrollable_scroll_freeze_set(obj, EINA_TRUE);
+  }
 else
   {
  Evas_Object *child;
@@ -2696,7 +2721,10 @@ _efl_ui_widget_scroll_freeze_push(Eo *obj, 
Elm_Widget_Smart_Data *sd)
   

[EGIT] [core/efl] master 01/01: elm_slider: fix test suite fail

2018-05-15 Thread Hosang Kim
jaehyun pushed a commit to branch master.

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

commit 19833657e81734ac0b9d4bd9ffcca0dddfe21867
Author: Hosang Kim <hosang12@samsung.com>
Date:   Tue May 15 20:13:06 2018 +0900

elm_slider: fix test suite fail

Summary: change legacy widget name.

Reviewers: Jaehyun, stefan_schmidt, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Subscribers: cedric, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6162
---
 src/lib/elementary/efl_ui_widget.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_widget.c 
b/src/lib/elementary/efl_ui_widget.c
index 83451defd4..b4fe8ee6ee 100644
--- a/src/lib/elementary/efl_ui_widget.c
+++ b/src/lib/elementary/efl_ui_widget.c
@@ -93,7 +93,6 @@ static const char *legacy_type_table[][2] =
  { "Efl.Ui.Panes_Legacy", "Elm_Panes" },
  { "Efl.Ui.Progressbar_Legacy", "Elm_Progressbar" },
  { "Efl.Ui.Radio_Legacy", "Elm_Radio" },
- { "Efl.Ui.Slider_Legacy", "Elm_Slider" },
  { "Efl.Ui.Video_Legacy", "Elm_Video" },
  { "Efl.Ui.Win_Legacy", "Elm_Win" },
  { "Elm.Code_Widget_Legacy", "Elm_Code_Widget" },
@@ -140,6 +139,7 @@ static const char *legacy_type_table[][2] =
  { "Elm.Index", "Elm_Index" },
  { "Elm.Label", "Elm_Label" },
  { "Elm.Panel", "Elm_Panel" },
+ { "Elm.Slider", "Elm_Slider" },
  { "Elm.Slideshow", "Elm_Slideshow" },
  { "Elm.Spinner", "Elm_Spinner" },
  { "Elm.Plug", "Elm_Plug" },

-- 




[EGIT] [core/efl] master 01/05: ecore_evas: don't set in_async_render flag if not in use async render.

2018-03-26 Thread Hosang Kim
cedric pushed a commit to branch master.

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

commit 86ae239bae7cb79d094aca3c0079096bdcf20ece
Author: Hosang Kim <hosang12@samsung.com>
Date:   Mon Mar 26 15:52:44 2018 -0700

ecore_evas: don't set in_async_render flag if not in use async render.

Reviewers: jypark, raster, cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5844

Reviewed-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/ecore_evas/ecore_evas.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index f20bd0b9aa..9f3293af7e 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -163,8 +163,6 @@ ecore_evas_render(Ecore_Evas *ee)
 
ecore_evas_render_prepare(ee);
 
-   ee->in_async_render = 1;
-
if (!ee->visible)
  {
 evas_norender(ee->evas);
@@ -172,6 +170,7 @@ ecore_evas_render(Ecore_Evas *ee)
else if (ee->can_async_render && !ee->manual_render)
  {
 rend |= !!evas_render_async(ee->evas);
+if (rend) ee->in_async_render = 1;
  }
else
  {

-- 




[EGIT] [core/efl] master 01/01: ecore/evas: add NULL checks to handle argument is NULL.

2018-02-06 Thread Hosang Kim
jpeg pushed a commit to branch master.

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

commit 24b0ae0df5c6dc3f8de2f8a3144132d57deeef32
Author: Hosang Kim <hosang12@samsung.com>
Date:   Tue Feb 6 17:58:44 2018 +0900

ecore/evas: add NULL checks to handle argument is NULL.

Summary:
ecore_pipe_read_fd/ecore_pipe_write_fd
evas_engine_info_set/get

Reviewers: woohyun, Jaehyun, Jaehyun_Cho, jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5790
---
 src/lib/ecore/ecore_pipe.c  | 2 ++
 src/lib/evas/canvas/evas_main.c | 4 
 2 files changed, 6 insertions(+)

diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c
index f26f6bd25d..06b732b500 100644
--- a/src/lib/ecore/ecore_pipe.c
+++ b/src/lib/ecore/ecore_pipe.c
@@ -140,6 +140,7 @@ EAPI int
 ecore_pipe_read_fd(Ecore_Pipe *p)
 {
EINA_MAIN_LOOP_CHECK_RETURN_VAL(PIPE_FD_INVALID);
+   if (!p) return PIPE_FD_INVALID;
return p->fd_read;
 }
 
@@ -201,6 +202,7 @@ EAPI int
 ecore_pipe_write_fd(Ecore_Pipe *p)
 {
EINA_MAIN_LOOP_CHECK_RETURN_VAL(PIPE_FD_INVALID);
+   if (!p) return PIPE_FD_INVALID;
return p->fd_write;
 }
 
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 472dc03cdb..e98577a714 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -468,6 +468,8 @@ next_zombie:
 EAPI Evas_Engine_Info *
 evas_engine_info_get(const Evas *obj)
 {
+   if (!obj) return NULL;
+
Evas_Public_Data *e = efl_data_scope_get(obj, EVAS_CANVAS_CLASS);
Efl_Canvas_Output *output;
 
@@ -485,6 +487,8 @@ evas_engine_info_get(const Evas *obj)
 EAPI Eina_Bool
 evas_engine_info_set(Evas *obj, Evas_Engine_Info *info)
 {
+   if (!obj) return EINA_FALSE;
+
Evas_Public_Data *e = efl_data_scope_get(obj, EVAS_CANVAS_CLASS);
Efl_Canvas_Output *output;
 

-- 




[EGIT] [core/efl] master 01/01: win: apply conformant features.

2017-12-11 Thread Hosang Kim
jpeg pushed a commit to branch master.

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

commit 26272bf3a27dd79ffed194896d03f4af60f1b7bd
Author: Hosang Kim <hosang12@samsung.com>
Date:   Tue Dec 12 10:02:23 2017 +0900

win: apply conformant features.

Summary:
- implement indicator enable/disable
- implement indicator type
- add indicator swallow area to border.edc
- add 'test win indicator' sample

Test Plan: elementary_test -> win_indicator

Reviewers: woohyun, cedric, jpeg

Subscribers: taxi2se, jypark, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5418
---
 data/elementary/themes/edc/elm/border.edc | 136 -
 src/Makefile_Elementary.am|   1 +
 src/bin/elementary/test.c |   3 +
 src/bin/elementary/test_win_indicator.c   | 122 +++
 src/lib/elementary/efl_ui_win.c   | 192 --
 src/lib/elementary/efl_ui_win.eo  |  26 +---
 6 files changed, 417 insertions(+), 63 deletions(-)

diff --git a/data/elementary/themes/edc/elm/border.edc 
b/data/elementary/themes/edc/elm/border.edc
index 83ebdb260b..b788e73115 100644
--- a/data/elementary/themes/edc/elm/border.edc
+++ b/data/elementary/themes/edc/elm/border.edc
@@ -46,7 +46,7 @@ group { name: "elm/border/base/default";
  desc {
 rel1.to: "elm.swallow.menu";
 rel1.relative: 0.0 1.0;
-rel2.to: "bottom_clip";
+rel2.to: "elm.swallow.keyboard";
 rel2.relative: 1.0 0.0;
  }
   }
@@ -71,7 +71,9 @@ group { name: "elm/border/base/default";
   rect { "bg_clip";
  nomouse;
  desc { "default";
-rel.to: "elm.spacer.content";
+rel1.to: "top_clip";
+rel1.relative: 0.0 1.0;
+rel2.to: "bottom_clip";
  }
   }
   rect { "elm.rect.background";
@@ -108,6 +110,17 @@ group { name: "elm/border/base/default";
 visible: 1;
  }
   }
+  spacer { "indicator_spacer";
+ desc { "default";
+rel.to: "elm.swallow.indicator";
+ }
+ desc { "hidden";
+rel.to: "top_clip";
+rel1.relative: 0.0 1.0;
+align: 0.5 0.0;
+fixed: 1 1;
+ }
+  }
 
   /* main menu */
   rect { "menu_bg";
@@ -120,7 +133,7 @@ group { name: "elm/border/base/default";
   swallow { "elm.swallow.menu";
  required: 1; // since 1.19
  desc { "default";
-rel.to: "top_clip";
+rel.to: "indicator_spacer";
 rel1.relative: 0.0 1.0;
 visible: 0;
 align: 0.5 0.0;
@@ -137,7 +150,7 @@ group { name: "elm/border/base/default";
  desc { "default";
 rel1.to: "elm.swallow.menu";
 rel1.relative: 0.0 1.0;
-rel2.to: "bottom_clip";
+rel2.to: "elm.swallow.keyboard";
 rel2.relative: 1.0 0.0;
  }
   }
@@ -573,6 +586,14 @@ group { name: "elm/border/base/default";
  desc { "hidden"; inherit: "default"; hid; }
   }
   /* bottom border - spacer and clipper */
+  swallow { "elm.swallow.keyboard";
+ desc { "default";
+   rel.to: "bottom_clip";
+   rel2.relative: 1.0 0.0;
+   align: 0.0 1.0;
+   fixed: 0 1;
+ }
+  }
   rect { "bottom_clip";
  desc { "default";
 rel.to: "shadow_spacer";
@@ -662,6 +683,34 @@ group { name: "elm/border/base/default";
 FIXED_SIZE(69, 5)
  }
   }
+  rect { "indicator_bg";
+ clip: "bg_clip";
+ desc { "default";
+color: 148 23 45 255;
+rel.to: "elm.swallow.indicator";
+ }
+ desc { "bg_transparent";
+inherit: "default";
+color: 0 0 0 0;
+ }
+  }
+  swallow { "elm.swallow.indicator";
+ clip: "bg_clip";
+ desc { "default";
+rel.to: "top_clip";
+rel1.relative: 0.0 1.0;
+visible: 0;
+align: 0.5 0.0;
+fixed: 1 1;
+ }
+ desc { "visible"; inherit: "default";
+visible: 1;
+fixed: 0 1;
+ }
+ desc { "hidden"; inherit: "visible";
+align: 0.5 1.0;
+ }
+  }
}
 
 #define

[EGIT] [core/efl] master 01/03: edje: add fixed automatically for optimizing edje calc speed.

2016-03-19 Thread Hosang Kim
cedric pushed a commit to branch master.

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

commit 264ccb13ede2b90bf4f760a88c0eafc8b3ff954a
Author: Hosang Kim <hosang12@samsung.com>
Date:   Thu Mar 17 11:12:34 2016 -0700

edje: add fixed automatically for optimizing edje calc speed.

Summary:
Applications usually use edje syntax like as,

```
 part { name :"bg";
 type: SWALLOW;
 description {
  state: "default" 0.0;
  rel1.relative: 0.0 0.0;
  rel2.relative: 0.0 0.0;
  align: 0.0 0.0;
  min: 100 100;
 }
 }

```
But edje does not calculate it exactly without "fixed: 1 1".
So edje calculation is repeated until 4000 x 4000, it is waste of time.

Reviewers: woohyun, raster, Hermet, id213sin, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3801

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/edje/edje_calc.c | 21 +
 1 file changed, 21 insertions(+)

diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
index d8c607f..57de6a4 100644
--- a/src/lib/edje/edje_calc.c
+++ b/src/lib/edje/edje_calc.c
@@ -2725,6 +2725,7 @@ _edje_part_recalc_single(Edje *ed,
Edje_Color_Class *cc = NULL;
Edje_Internal_Aspect apref;
int minw = 0, minh = 0, maxw = 0, maxh = 0;
+   Eina_Bool fixedw = EINA_FALSE, fixedh = EINA_FALSE;
FLOAT_T sc;
 
sc = DIV(ed->scale, ed->file->base_scale);
@@ -2742,6 +2743,26 @@ _edje_part_recalc_single(Edje *ed,
/* size step */
_edje_part_recalc_single_step(desc, params);
 
+   /* check whether this part has fixed value or not*/
+   if ((rel1_to_x == rel2_to_x) &&
+   (desc->rel1.relative_x == desc->rel2.relative_x) &&
+   (!chosen_desc->fixed.w))
+ {
+chosen_desc->fixed.w = 1;
+fixedw = EINA_TRUE;
+ }
+
+   if ((rel1_to_y == rel2_to_y) &&
+   (desc->rel1.relative_y == desc->rel2.relative_y) &&
+   (!chosen_desc->fixed.h))
+ {
+chosen_desc->fixed.h = 1;
+fixedh = EINA_TRUE;
+ }
+   if (fixedw || fixedh)
+ ERR("file %s, group %s has a non-fixed part '%s'. You should add 'fixed: 
%d %d'. But in order to optimize the edje calc, we add it 
automatically.",ed->path, ed->group, ep->part->name, fixedw, fixedh);
+
+
/* colors */
if (ep->part->type != EDJE_PART_TYPE_SPACER)
  {

-- 




[EGIT] [core/efl] master 02/08: edje_cc: fix group inheriting

2016-03-15 Thread Hosang Kim
cedric pushed a commit to branch master.

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

commit 544bd91e5f8aafc1135f7e8449225a420aacbe06
Author: Hosang Kim <hosang12@samsung.com>
Date:   Tue Mar 15 11:23:28 2016 -0700

edje_cc: fix group inheriting

Summary:
When edje_cc inherits group, group's script wasn't copied.
So base group and inherited groups use same pointer.
When edje_cc makes lookups for script, loopkups is overwritten.

Test Plan: elementary_test -> shown error log

Reviewers: Hermet, woohyun, cedric, raster

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3796

Signed-off-by: Cedric Bail <ced...@osg.samsung.com>
---
 src/bin/edje/edje_cc_handlers.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c
index 173ad31..8fb43cf 100644
--- a/src/bin/edje/edje_cc_handlers.c
+++ b/src/bin/edje/edje_cc_handlers.c
@@ -4447,8 +4447,8 @@ st_collections_group_inherit(void)
 cp->script = STRDUP(cp2->script);
 cp->original = STRDUP(cp2->original);
 cd->is_lua = cd2->is_lua;
-cd->shared = cd2->shared;
-cd->original = cd2->original;
+cd->shared = STRDUP(cd2->shared);
+cd->original = STRDUP(cd2->original);
 cd->programs = eina_list_append(cd->programs, cp);
 data_queue_copied_anonymous_lookup(pc, &(cp2->id), &(cp->id));
  }

-- 




[EGIT] [core/elementary] master 01/02: slider: fix slider focus bug

2015-11-10 Thread Hosang Kim
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=ff8cf9a5037e4c30de0a668c75b15bf190906f0a

commit ff8cf9a5037e4c30de0a668c75b15bf190906f0a
Author: Hosang Kim <hosang12@samsung.com>
Date:   Tue Nov 10 14:31:03 2015 -0800

slider: fix slider focus bug

Summary: when slider is focused and slider's indicator mode is not 
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS, slider's indicator popup blinked.

Test Plan: elementary_test -> slider -> focus out -> click slider again

Reviewers: seoz, cedric, raster, Hermet, woohyun, CHAN, id213sin

Differential Revision: https://phab.enlightenment.org/D3308

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/elm_slider.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elm_slider.c b/src/lib/elm_slider.c
index 25cd4a7..33f2ecc 100644
--- a/src/lib/elm_slider.c
+++ b/src/lib/elm_slider.c
@@ -1208,7 +1208,7 @@ _elm_slider_elm_widget_on_focus(Eo *obj, Elm_Slider_Data 
*sd EINA_UNUSED, Elm_Ob
 
if ((sd->indicator_visible_mode == 
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS) && elm_widget_focus_get(obj))
  _popup_show(obj, NULL, NULL, NULL);
-   else
+   else if (!elm_widget_focus_get(obj))
  _popup_hide(obj, NULL, NULL, NULL);
 
return int_ret;

-- 




[EGIT] [core/elementary] master 02/03: interface_scrollable: delete unnecessary smart callback call.

2015-11-04 Thread Hosang Kim
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=5cfe1cff12645a94a9fd529f560125e1716d213a

commit 5cfe1cff12645a94a9fd529f560125e1716d213a
Author: Hosang Kim <hosang12@samsung.com>
Date:   Tue Nov 3 12:29:05 2015 -0800

interface_scrollable: delete unnecessary smart callback call.

Summary:
When _elm_interface_scrollable_page_bring_in is called, page is not changed 
yet.
So "page,changed" smart callback is unnecessary.

Sometimes "page,changed" smart callback is called twice.
Because "drag,stop" and "anim,stop"is called it.
So I add updating current page code.

Test Plan:
elementary_test -> scroller

1. using wheel.
2. using "prev page" and "next page".
3. draging sceen

Reviewers: Hermet, singh.amitesh, cedric, raster, jaehwan, seoz

Differential Revision: https://phab.enlightenment.org/D3260

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/elm_interface_scrollable.c | 16 +++-
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index 23d0ebb..ab2db63 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -939,6 +939,8 @@ _elm_scroll_drag_stop(Elm_Scrollable_Smart_Interface_Data 
*sid)
 if (sid->cb_func.page_change &&
 ((x != sid->current_page.x) || (y != sid->current_page.y)))
   sid->cb_func.page_change(sid->obj, NULL);
+sid->current_page.x = x;
+sid->current_page.y = y;
  }
 
if (sid->cb_func.drag_stop)
@@ -948,6 +950,9 @@ _elm_scroll_drag_stop(Elm_Scrollable_Smart_Interface_Data 
*sid)
 static void
 _elm_scroll_anim_start(Elm_Scrollable_Smart_Interface_Data *sid)
 {
+   sid->current_page.x = _elm_scroll_page_x_get(sid, 0, EINA_FALSE);
+   sid->current_page.y = _elm_scroll_page_y_get(sid, 0, EINA_FALSE);
+
if (sid->cb_func.animate_start)
  sid->cb_func.animate_start(sid->obj, NULL);
 }
@@ -963,6 +968,8 @@ _elm_scroll_anim_stop(Elm_Scrollable_Smart_Interface_Data 
*sid)
 y = _elm_scroll_page_y_get(sid, 0, EINA_FALSE);
 if ((x != sid->current_page.x) || (y != sid->current_page.y))
sid->cb_func.page_change(sid->obj, NULL);
+sid->current_page.x = x;
+sid->current_page.y = y;
  }
 
if (sid->cb_func.animate_stop)
@@ -4395,9 +4402,6 @@ _elm_interface_scrollable_page_bring_in(Eo *obj, 
Elm_Scrollable_Smart_Interface_
Evas_Coord x = 0;
Evas_Coord y = 0;
 
-   sid->current_page.x = _elm_scroll_page_x_get(sid, 0, EINA_FALSE);
-   sid->current_page.y = _elm_scroll_page_y_get(sid, 0, EINA_FALSE);
-
eo_do(sid->obj, elm_interface_scrollable_content_viewport_geometry_get
  (NULL, NULL, , ));
x = sid->pagesize_h * pagenumber_h;
@@ -4407,12 +4411,6 @@ _elm_interface_scrollable_page_bring_in(Eo *obj, 
Elm_Scrollable_Smart_Interface_
 _elm_scroll_scroll_to_x(sid, _elm_config->bring_in_scroll_friction, x);
 _elm_scroll_scroll_to_y(sid, _elm_config->bring_in_scroll_friction, y);
  }
-
-   if ((sid->current_page.x != x) || (sid->current_page.y != y))
- {
-if (sid->cb_func.page_change)
-  sid->cb_func.page_change(sid->obj, NULL);
- }
 }
 
 EOLIAN static void

-- 




[EGIT] [core/efl] master 01/09: ecore_fd: add _ecore_main_fdh_poll_del() when fd handler is deleted.

2015-10-09 Thread Hosang Kim
cedric pushed a commit to branch master.

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

commit ec53c8845e8d7319bbbad4fb7aa0fe3fc9bcac2a
Author: Hosang Kim <hosang12@samsung.com>
Date:   Thu Oct 8 12:14:00 2015 +0200

ecore_fd: add _ecore_main_fdh_poll_del() when fd handler is deleted.

Summary:
When fd handler is deleted by ECORE_CALLBACK_CANCEL, 
_ecore_main_fdh_poll_del() is not called.
So fd still exists in epoll's event pool.

Reviewers: raster, seoz, woohyun, Hermet, cedric

Reviewed By: cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3131

Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/ecore/ecore_main.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c
index 97cfaf8..e35241d 100644
--- a/src/lib/ecore/ecore_main.c
+++ b/src/lib/ecore/ecore_main.c
@@ -1546,6 +1546,7 @@ _ecore_main_fd_handlers_bads_rem(void)
ERR("Fd function err returned 0, remove it");
if (!fdh->delete_me)
  {
+_ecore_main_fdh_poll_del(fdh);
 fdh->delete_me = EINA_TRUE;
 fd_handlers_to_delete = 
eina_list_append(fd_handlers_to_delete, fdh);
  }
@@ -1558,6 +1559,7 @@ _ecore_main_fd_handlers_bads_rem(void)
   ERR("Problematic fd found at %d! setting it for delete", 
fdh->fd);
   if (!fdh->delete_me)
 {
+   _ecore_main_fdh_poll_del(fdh);
fdh->delete_me = EINA_TRUE;
fd_handlers_to_delete = 
eina_list_append(fd_handlers_to_delete, fdh);
 }
@@ -1673,6 +1675,7 @@ _ecore_main_fd_handlers_call(void)
  {
 if (!fdh->delete_me)
   {
+ _ecore_main_fdh_poll_del(fdh);
  fdh->delete_me = EINA_TRUE;
  fd_handlers_to_delete = 
eina_list_append(fd_handlers_to_delete, fdh);
   }

-- 




[EGIT] [core/elementary] master 01/01: elm_toolbar: fix elm_toolbar_select_mode_set API

2015-09-23 Thread Hosang Kim
woohyun pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=65d6839db1edba20737659f4f34ab07e6cd502d2

commit 65d6839db1edba20737659f4f34ab07e6cd502d2
Author: Hosang Kim <hosang12@samsung.com>
Date:   Wed Sep 23 16:20:45 2015 +0900

elm_toolbar: fix elm_toolbar_select_mode_set API

Summary: Item is unselected when I changed select mode 
"ELM_OBJECT_SELECT_MODE_DEFAULT" to "ELM_OBJECT_SELECT_MODE_ALWAYS".

Reviewers: Hermet, cedric, raster, seoz, woohyun

Reviewed By: woohyun

Differential Revision: https://phab.enlightenment.org/D3086
---
 src/lib/elm_toolbar.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 708f32f..124c2ca 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -3724,14 +3724,13 @@ _elm_toolbar_select_mode_set(Eo *obj EINA_UNUSED, 
Elm_Toolbar_Data *sd, Elm_Obje
  return;
 
if (sd->select_mode == mode) return;
+   sd->select_mode = mode;
 
if ((mode == ELM_OBJECT_SELECT_MODE_ALWAYS) &&
(sd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS) &&
sd->items)
  _item_select(ELM_TOOLBAR_ITEM_FROM_INLIST(sd->items));
 
-   if (sd->select_mode != mode)
- sd->select_mode = mode;
 }
 
 EOLIAN static Elm_Object_Select_Mode

-- 




[EGIT] [core/elementary] master 02/02: elm_test: Add test case for page scroller

2015-09-03 Thread Hosang Kim
jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=f5c96735978257929dc38e0145732d4ee963483b

commit f5c96735978257929dc38e0145732d4ee963483b
Author: Hosang Kim <hosang12@samsung.com>
Date:   Wed Sep 2 16:16:04 2015 +0900

elm_test: Add test case for page scroller

Signed-off-by: Jean-Philippe Andre <jp.an...@samsung.com>
---
 data/objects/test.edc   | 37 
 src/bin/test.c  |  2 ++
 src/bin/test_scroller.c | 64 +
 3 files changed, 103 insertions(+)

diff --git a/data/objects/test.edc b/data/objects/test.edc
index 74c90b6..84407e5 100644
--- a/data/objects/test.edc
+++ b/data/objects/test.edc
@@ -749,4 +749,41 @@ collections {
  }
   }
}
+group { name: "page_layout";
+   parts {
+  part { name: "bg";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+   min: 400 500;
+   max: 400 500;
+   color: 0 0 0 0;
+}
+  }
+  part { name: "page";
+ type: SWALLOW;
+ scale: 1;
+ description { state: "default" 0.0;
+   rel1.relative: 0.1 0.1;
+   rel1.to:"bg";
+   rel2.relative: 0.9 0.9;
+   rel2.to:"bg";
+ }
+  }
+  part { name: "text";
+ type: TEXT;
+ scale: 1;
+ description { state: "default" 0.0;
+   fixed: 1 1;
+   rel1.relative: 0.5 0.5;
+   rel2.relative: 0.5 0.5;
+   text {
+  min: 1 1;
+  size: 50;
+  ellipsis: -1;
+   }
+ }
+  }
+   }
+
 }
diff --git a/src/bin/test.c b/src/bin/test.c
index e6479ff..8a82f1e 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -152,6 +152,7 @@ void test_separator(void *data, Evas_Object *obj, void 
*event_info);
 void test_scroller(void *data, Evas_Object *obj, void *event_info);
 void test_scroller2(void *data, Evas_Object *obj, void *event_info);
 void test_scroller3(void *data, Evas_Object *obj, void *event_info);
+void test_scroller4(void *data, Evas_Object *obj, void *event_info);
 void test_spinner(void *data, Evas_Object *obj, void *event_info);
 void test_index(void *data, Evas_Object *obj, void *event_info);
 void test_index2(void *data, Evas_Object *obj, void *event_info);
@@ -759,6 +760,7 @@ add_tests:
ADD_TEST(NULL, "Scroller", "Scroller", test_scroller);
ADD_TEST(NULL, "Scroller", "Scroller 2", test_scroller2);
ADD_TEST(NULL, "Scroller", "Scroller 3", test_scroller3);
+   ADD_TEST(NULL, "Scroller", "Page Scroller", test_scroller4);
 
//--//
// FIXME: add frame test
diff --git a/src/bin/test_scroller.c b/src/bin/test_scroller.c
index 3a53d1b..eb00f25 100644
--- a/src/bin/test_scroller.c
+++ b/src/bin/test_scroller.c
@@ -664,3 +664,67 @@ test_scroller3(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
evas_object_resize(win, 500, 500);
evas_object_show(win);
 }
+
+void
+test_scroller4(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Evas_Object *win, *sc, *bx, *ly, *sc2, *rect, *rect2;
+   char buf[PATH_MAX];
+
+   win = elm_win_util_standard_add("scroller3", "Scroller 3");
+   elm_win_autodel_set(win, EINA_TRUE);
+
+   sc = elm_scroller_add(win);
+   elm_scroller_loop_set(sc, EINA_TRUE, EINA_FALSE);
+   evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_scroller_page_relative_set(sc, 1.0, 0.0);
+   elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_OFF);
+   elm_scroller_page_scroll_limit_set(sc, 1, 0);
+   elm_win_resize_object_add(win, sc);
+   evas_object_show(sc);
+
+   bx = elm_box_add(sc);
+   elm_box_horizontal_set(bx, EINA_TRUE);
+   elm_object_content_set(sc, bx);
+   evas_object_show(bx);
+
+   ly = elm_layout_add(bx);
+   snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
+   elm_layout_file_set(ly, buf, "page_layout");
+   elm_object_part_text_set(ly, "text", "Page1");
+   elm_box_pack_end(bx, ly);
+   evas_object_show(ly);
+
+   sc2 = elm_scroller_add(ly);
+   elm_object_part_content_set(ly, "page", sc2);
+   evas_object_show(sc2);
+
+   rect2 = evas_object_rectangle_add(evas_object_evas_get(sc2));
+   evas_object_color_set(rect2, 50, 0, 0, 50);
+   evas_object_size_hint_min_set(rect2, 0, 2000);
+   elm_object_content_set(sc2, rect2);
+   evas_object_show(rect2);
+
+   ly = elm_layout_add(bx);
+   snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get());
+   elm_layout_file_set(ly, buf, "page_layout");
+   rect = evas_object_rectangle_add(evas_object_evas_ge

[EGIT] [core/elementary] master 01/01: scroller: fix page calculation logic when looping is enabled.

2015-08-28 Thread Hosang Kim
hermet pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=074923fd616f614b4d218e4909cfaeb78f94cb1a

commit 074923fd616f614b4d218e4909cfaeb78f94cb1a
Author: Hosang Kim hosang12@samsung.com
Date:   Fri Aug 28 21:12:30 2015 +0900

scroller: fix page calculation logic when looping is enabled.

Test Plan:
1. elementary_test - scroller
   2. Lopping in x axis
   3. click prev page or next page

Reviewers: SanghyeonLee, singh.amitesh, Hermet, seoz, cedric, raster, 
jaehwan

Differential Revision: https://phab.enlightenment.org/D2982
---
 src/bin/test_scroller.c| 34 ++
 src/lib/elm_interface_scrollable.c | 18 --
 2 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/src/bin/test_scroller.c b/src/bin/test_scroller.c
index 75ddfb7..3a53d1b 100644
--- a/src/bin/test_scroller.c
+++ b/src/bin/test_scroller.c
@@ -28,6 +28,24 @@ _my_bt_go_900_900(void *data, Evas_Object *obj EINA_UNUSED, 
void *event_info EIN
 }
 
 static void
+_my_bt_prev_page(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   Evas_Object *sc = (Evas_Object *)data;
+   int page_x = 0, page_y = 0;
+   elm_scroller_current_page_get(sc, page_x, page_y);
+   elm_scroller_page_bring_in(sc, --page_x, page_y);
+}
+
+static void
+_my_bt_next_page(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   Evas_Object *sc = (Evas_Object *)data;
+   int page_x = 0, page_y = 0;
+   elm_scroller_current_page_get(sc, page_x, page_y);
+   elm_scroller_page_bring_in(sc, ++page_x, page_y);
+}
+
+static void
 _my_bt_freeze_toggle(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
if (elm_check_state_get(obj))
@@ -350,6 +368,22 @@ test_scroller(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_
elm_table_pack(tb2, bt, 2, 2, 1, 1);
evas_object_show(bt);
 
+   bt = elm_button_add(win);
+   elm_object_text_set(bt, prev page);
+   evas_object_smart_callback_add(bt, clicked, _my_bt_prev_page, sc);
+   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(bt, 0.1, 0.5);
+   elm_table_pack(tb2, bt, 0, 1, 1, 1);
+   evas_object_show(bt);
+
+   bt = elm_button_add(win);
+   elm_object_text_set(bt, next page);
+   evas_object_smart_callback_add(bt, clicked, _my_bt_next_page, sc);
+   evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(bt, 0.9, 0.5);
+   elm_table_pack(tb2, bt, 2, 1, 1, 1);
+   evas_object_show(bt);
+
evas_object_event_callback_add(sc, EVAS_CALLBACK_MOVE, _sc_move_cb, tb2);
evas_object_event_callback_add(sc, EVAS_CALLBACK_RESIZE, _sc_resize_cb, 
tb2);
evas_object_geometry_get(sc, x, y, w, h);
diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index 914fc9a..77763ab 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -2177,7 +2177,10 @@ 
_elm_scroll_page_x_get(Elm_Scrollable_Smart_Interface_Data *sid,
 
if (sid-pagesize_h  0)
  {
-x = x + (sid-pagesize_h * 0.5);
+if (x = 0)
+  x = x + (sid-pagesize_h * 0.5);
+else if (x  0  sid-loop_h)
+  x = x - (sid-pagesize_h * 0.5);
 x = x / (sid-pagesize_h);
 x = x * (sid-pagesize_h);
  }
@@ -2221,7 +2224,10 @@ 
_elm_scroll_page_y_get(Elm_Scrollable_Smart_Interface_Data *sid,
 
if (sid-pagesize_v  0)
  {
-y = y + (sid-pagesize_v * 0.5);
+if (y = 0)
+  y = y + (sid-pagesize_v * 0.5);
+else if (y  0  sid-loop_v)
+  y = y - (sid-pagesize_v * 0.5);
 y = y / (sid-pagesize_v);
 y = y * (sid-pagesize_v);
  }
@@ -4360,8 +4366,8 @@ _elm_interface_scrollable_page_show(Eo *obj, 
Elm_Scrollable_Smart_Interface_Data
 
eo_do(sid-obj, elm_interface_scrollable_content_viewport_geometry_get
  (NULL, NULL, w, h));
-   if (pagenumber_h = 0) x = sid-pagesize_h * pagenumber_h;
-   if (pagenumber_v = 0) y = sid-pagesize_v * pagenumber_v;
+   x = sid-pagesize_h * pagenumber_h;
+   y = sid-pagesize_v * pagenumber_v;
 
sid-wx = (sid-is_mirrored ? _elm_scroll_x_mirrored_get(sid-obj, x) : x);
sid-wy = y;
@@ -4390,8 +4396,8 @@ _elm_interface_scrollable_page_bring_in(Eo *obj, 
Elm_Scrollable_Smart_Interface_
 
eo_do(sid-obj, elm_interface_scrollable_content_viewport_geometry_get
  (NULL, NULL, w, h));
-   if (pagenumber_h = 0) x = sid-pagesize_h * pagenumber_h;
-   if (pagenumber_v = 0) y = sid-pagesize_v * pagenumber_v;
+   x = sid-pagesize_h * pagenumber_h;
+   y = sid-pagesize_v * pagenumber_v;
if (_elm_scroll_content_region_show_internal(obj, x, y, w, h))
  {
 _elm_scroll_scroll_to_x(sid, _elm_config-bring_in_scroll_friction, x);

-- 




[EGIT] [core/elementary] elementary-1.15 01/01: progressbar: fix memory leak

2015-08-25 Thread Hosang Kim
ami pushed a commit to branch elementary-1.15.

http://git.enlightenment.org/core/elementary.git/commit/?id=68aa6a5cb7f9b720d4a2342cee729f1328ede844

commit 68aa6a5cb7f9b720d4a2342cee729f1328ede844
Author: Hosang Kim hosang12@samsung.com
Date:   Tue Aug 25 20:05:57 2015 +0900

progressbar: fix memory leak

Summary: when elm_progressbar_value_set is called, progress_status is 
always created.

Test Plan: elementary_test - progressbar

Reviewers: woohyun, Hermet, cedric, raster

Differential Revision: https://phab.enlightenment.org/D2986
---
 src/lib/elm_progressbar.c | 13 +
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/src/lib/elm_progressbar.c b/src/lib/elm_progressbar.c
index 1fbaab3..aa34ec0 100644
--- a/src/lib/elm_progressbar.c
+++ b/src/lib/elm_progressbar.c
@@ -424,20 +424,9 @@ _elm_progressbar_part_value_get(const Eo *obj EINA_UNUSED, 
Elm_Progressbar_Data
 EOLIAN static void
 _elm_progressbar_value_set(Eo *obj, Elm_Progressbar_Data *sd, double val)
 {
-   Elm_Progress_Status *ps;
-
if (sd-val == val) return;
 
-   sd-val = val;
-   if (sd-val  MIN_RATIO_LVL) sd-val = MIN_RATIO_LVL;
-   if (sd-val  MAX_RATIO_LVL) sd-val = MAX_RATIO_LVL;
-
-   ps = _progress_status_new(elm.cur.progressbar, sd-val);
-   sd-progress_status = eina_list_append(sd-progress_status, ps);
-   _val_set(obj);
-   _units_set(obj);
-   eo_do(obj, eo_event_callback_call
- (ELM_PROGRESSBAR_EVENT_CHANGED, NULL));
+   elm_progressbar_part_value_set(obj, elm.cur.progressbar, val);
 }
 
 EOLIAN static double

-- 




[EGIT] [core/elementary] master 01/01: elm_gengrid: Fix condition error.

2015-07-23 Thread Hosang Kim
sanghyeonlee pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=39f39f8da036b46eed7c489ac932c81b17cf834c

commit 39f39f8da036b46eed7c489ac932c81b17cf834c
Author: Hosang Kim hosang12@samsung.com
Date:   Fri Jul 24 14:30:21 2015 +0900

elm_gengrid: Fix condition error.

Summary:
I missed ! in if condition and missed it-unhighlighted_cb().

@fix

Reviewers: singh.amitesh, raster, cedric, SanghyeonLee

Reviewed By: SanghyeonLee

Differential Revision: https://phab.enlightenment.org/D2861
---
 src/lib/elm_gengrid.c | 13 -
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index ce6d624..320375b 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -578,11 +578,14 @@ _item_mouse_move_cb(void *data,
   }
  }
   else if (ELM_RECTS_POINT_OUT(x, y, w, h, ev-cur.canvas.x, ev-cur.canvas.y) 

- !sd-reorder_it )
+   !sd-reorder_it )
 {
-ELM_SAFE_FREE(it-long_timer, ecore_timer_del);
-if (!sd-was_selected)
-  it-unsel_cb(it);
+   ELM_SAFE_FREE(it-long_timer, ecore_timer_del);
+   if (!sd-was_selected)
+ {
+it-unhighlight_cb(it);
+it-unsel_cb(it);
+ }
 it-base-still_in = EINA_FALSE;
 }
 
@@ -1105,7 +1108,7 @@ _item_mouse_up_cb(void *data,
 
if (eo_do_ret(eo_it, tmp, elm_wdg_item_disabled_get())) return;
 
-   if (sd-on_hold || it-base-still_in)
+   if (sd-on_hold || !it-base-still_in)
  {
 sd-longpressed = EINA_FALSE;
 sd-on_hold = EINA_FALSE;

-- 




[EGIT] [core/efl] master 01/01: evas: Init need_unload value after unload.

2015-07-08 Thread Hosang Kim
raster pushed a commit to branch master.

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

commit eeec1761662323720557a4ade297465ba44d7a86
Author: Hosang Kim hosang12@samsung.com
Date:   Thu Jul 9 12:04:39 2015 +0900

evas: Init need_unload value after unload.

Summary: @fix

Reviewers: seoz, cedric, woohyun, raster

Reviewed By: raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2803
---
 src/lib/evas/common/evas_image_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/lib/evas/common/evas_image_main.c 
b/src/lib/evas/common/evas_image_main.c
index 501b2c5..10966fd 100644
--- a/src/lib/evas/common/evas_image_main.c
+++ b/src/lib/evas/common/evas_image_main.c
@@ -380,6 +380,7 @@ evas_common_rgba_image_unload_real(Image_Entry *ie)
ie-allocated.h = 0;
ie-flags.loaded = 0;
ie-flags.preload_done = 0;
+   ie-need_unload = 0;
 #ifdef SURFDBG
surf_debug();
 #endif   

-- 




[EGIT] [core/elementary] master 07/11: gengrid: add unhighlight callback

2015-06-25 Thread Hosang Kim
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=b8959e778090547ef9df79601bef0c7cd9b3cd21

commit b8959e778090547ef9df79601bef0c7cd9b3cd21
Author: Hosang Kim hosang12@samsung.com
Date:   Thu Jun 25 16:31:36 2015 +0200

gengrid: add unhighlight callback

Summary:
item_unselect check it-select status, so when item highlighted but not 
selected,
item highlight is remaining even after unselect_cb is called.

And item_select and item_highlight are separated, but item_unselect and 
item_unhighlight are mixed.
so divide them, too.

This patch will solve upon problem.

Reviewers: seoz, woohyun, Hermet, CHAN, raster, SanghyeonLee, cedric

Reviewed By: cedric

Differential Revision: https://phab.enlightenment.org/D2653

Signed-off-by: Cedric BAIL ced...@osg.samsung.com
---
 src/lib/elm_gengrid.c | 58 +++
 1 file changed, 45 insertions(+), 13 deletions(-)

diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c
index e8a7fde..8d01e5d 100644
--- a/src/lib/elm_gengrid.c
+++ b/src/lib/elm_gengrid.c
@@ -529,12 +529,6 @@ _item_unselect(Elm_Gen_Item *it)
if ((it-generation  sd-generation) || (!it-selected))
  return;
 
-   edje_object_signal_emit(VIEW(it), elm,state,unselected, elm);
-   evas_object_smart_callback_call(WIDGET(it), SIG_UNHIGHLIGHTED, eo_it);
-
-   evas_object_stack_below(VIEW(it), sd-stack);
-
-   it-highlighted = EINA_FALSE;
if (it-selected)
  {
 it-selected = EINA_FALSE;
@@ -574,7 +568,10 @@ _item_mouse_move_cb(void *data,
   {
  sd-on_hold = EINA_TRUE;
  if (!sd-was_selected)
-   it-unsel_cb(it);
+   {
+  it-unhighlight_cb(it);
+  it-unsel_cb(it);
+   }
   }
  }
 
@@ -647,7 +644,10 @@ _item_mouse_move_cb(void *data,
 it-dragging = 1;
 ELM_SAFE_FREE(it-long_timer, ecore_timer_del);
 if (!sd-was_selected)
-  it-unsel_cb(it);
+  {
+ it-unhighlight_cb(it);
+ it-unsel_cb(it);
+  }
 
 if (dy  0)
   {
@@ -728,6 +728,24 @@ _item_highlight(Elm_Gen_Item *it)
 }
 
 static void
+_item_unhighlight(Elm_Gen_Item *it)
+{
+   ELM_GENGRID_DATA_GET_FROM_ITEM(it, sd);
+   Elm_Object_Item *eo_it = EO_OBJ(it);
+
+   if (!it-highlighted ||
+   (it-generation  sd-generation))
+ return;
+
+   edje_object_signal_emit(VIEW(it), elm,state,unselected, elm);
+   evas_object_smart_callback_call(WIDGET(it), SIG_UNHIGHLIGHTED, eo_it);
+
+   evas_object_stack_below(VIEW(it), sd-stack);
+
+   it-highlighted = EINA_FALSE;
+}
+
+static void
 _item_mouse_down_cb(void *data,
 Evas *evas EINA_UNUSED,
 Evas_Object *obj,
@@ -1060,7 +1078,11 @@ _item_mouse_up_cb(void *data,
if (sd-longpressed)
  {
 sd-longpressed = EINA_FALSE;
-if (!sd-was_selected) it-unsel_cb(it);
+if (!sd-was_selected)
+  {
+ it-unhighlight_cb(it);
+ it-unsel_cb(it);
+  }
 sd-was_selected = EINA_FALSE;
 return;
  }
@@ -1084,7 +1106,11 @@ _item_mouse_up_cb(void *data,
  it-highlight_cb(it);
  it-sel_cb(it);
   }
-else it-unsel_cb(it);
+else
+  {
+ it-unhighlight_cb(it);
+ it-unsel_cb(it);
+  }
  }
else
  {
@@ -1094,6 +1120,7 @@ _item_mouse_up_cb(void *data,
{
   Elm_Object_Item *eo_sel = sd-selected-data;
   Elm_Gen_Item *sel = eo_data_scope_get(eo_sel, 
ELM_GENGRID_ITEM_CLASS);
+  it-unhighlight_cb(sel);
   it-unsel_cb(sel);
}
   }
@@ -1105,7 +1132,11 @@ _item_mouse_up_cb(void *data,
  EINA_LIST_FOREACH_SAFE(sd-selected, l, l_next, eo_item2)
{
   ELM_GENGRID_ITEM_DATA_GET(eo_item2, item2);
-  if (item2 != it) it-unsel_cb(item2);
+  if (item2 != it)
+{
+   it-unhighlight_cb(item2);
+   it-unsel_cb(item2);
+}
}
   }
 it-highlight_cb(it);
@@ -3978,6 +4009,7 @@ _elm_gengrid_item_new(Elm_Gengrid_Data *sd,
 
it-del_cb = (Ecore_Cb)_item_del;
it-highlight_cb = (Ecore_Cb)_item_highlight;
+   it-unhighlight_cb = (Ecore_Cb)_item_unhighlight;
it-sel_cb = (Ecore_Cb)_item_select;
it-unsel_cb = (Ecore_Cb)_item_unselect;
it-unrealize_cb = (Ecore_Cb)_item_unrealize_cb;
@@ -4492,7 +4524,7 @@ _elm_gengrid_item_selected_set(Eo *eo_item EINA_UNUSED, 
Elm_Gen_Item *it,
{
   Elm_Object_Item *eo_sel = sd-selected-data;
   ELM_GENGRID_ITEM_DATA_GET(eo_sel, sel);
-  if (it-unhighlight_cb

[EGIT] [core/elementary] master 05/11: atspi_bridge: fix memory leak issue

2015-06-17 Thread Hosang Kim
cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=fbcdeb2a485fedb983aa71115f66a71f5002ef4d

commit fbcdeb2a485fedb983aa71115f66a71f5002ef4d
Author: Hosang Kim hosang12@samsung.com
Date:   Wed Jun 17 14:49:40 2015 +0200

atspi_bridge: fix memory leak issue

Summary:
Call eldbus_message_unref to free Eldbus_Message structure.
And delete unused Eldbus_Message variable.
CID-386474
CID-391869
CID-394549

Reviewers: raster, woohyun, CHAN, Hermet, seoz, lukasz.stanislawski, cedric

Reviewed By: cedric

Differential Revision: https://phab.enlightenment.org/D2690

Signed-off-by: Cedric BAIL ced...@osg.samsung.com
---
 src/lib/elm_atspi_bridge.c | 14 --
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/lib/elm_atspi_bridge.c b/src/lib/elm_atspi_bridge.c
index 4bf6673..c7a6a15 100644
--- a/src/lib/elm_atspi_bridge.c
+++ b/src/lib/elm_atspi_bridge.c
@@ -1291,7 +1291,10 @@ _text_character_extents_get(const 
Eldbus_Service_Interface *iface, const Eldbus_
eo_do(obj, res = elm_interface_atspi_text_character_extents_get(offset, 
screen_coords, rect));
 
if (!res)
- return eldbus_message_error_new(msg, org.freedesktop.DBus.Error.Failed, 
Unable to get character extents.);
+ {
+eldbus_message_unref(ret);
+return eldbus_message_error_new(msg, 
org.freedesktop.DBus.Error.Failed, Unable to get character extents.);
+ }
eldbus_message_arguments_append(ret, , rect.x, rect.y, rect.w, 
rect.h);
 
return ret;
@@ -1448,7 +1451,10 @@ _text_range_extents_get(const Eldbus_Service_Interface 
*iface, const Eldbus_Mess
screen_coords = type == ATSPI_COORD_TYPE_SCREEN ? EINA_TRUE : EINA_FALSE;
eo_do(obj, res = elm_interface_atspi_text_range_extents_get(screen_coords, 
start, end, rect));
if (!res)
- return eldbus_message_error_new(msg, org.freedesktop.DBus.Error.Failed, 
Can't get range extents.);
+ {
+eldbus_message_unref(ret);
+return eldbus_message_error_new(msg, 
org.freedesktop.DBus.Error.Failed, Can't get range extents.);
+ }
 
eldbus_message_arguments_append(ret, , rect.x, rect.y, rect.w, 
rect.h);
 
@@ -2871,7 +2877,6 @@ static Eina_Bool
 _selection_signal_send(void *data, Eo *obj EINA_UNUSED, const 
Eo_Event_Description *desc, void *event_info EINA_UNUSED)
 {
const char *event_desc;
-   Eldbus_Message *msg;
Eldbus_Service_Interface *selection = data;
 
enum _Atspi_Object_Signals type;
@@ -2892,9 +2897,6 @@ _selection_signal_send(void *data, Eo *obj EINA_UNUSED, 
const Eo_Event_Descripti
 return EINA_FALSE;
  }
 
-   msg = eldbus_service_signal_new(selection, type);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(msg, EINA_FALSE);
-
_object_signal_send(selection, type, event_desc, 0, 0, i, 0);
 
return EINA_TRUE;

-- 




[EGIT] [core/elementary] master 01/02: elm_interface_scrollable : Fix logic about setting EVAS_EVENT_FLAG_ON_HOLD

2015-06-14 Thread Hosang Kim
hermet pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=8ee96d16f1e311bbd08c992d45df83a415a36510

commit 8ee96d16f1e311bbd08c992d45df83a415a36510
Author: Hosang Kim hosang12@samsung.com
Date:   Wed Jun 3 22:08:38 2015 +0900

elm_interface_scrollable : Fix logic about setting EVAS_EVENT_FLAG_ON_HOLD

Summary: Even if scroller is not scrolled, EVAS_EVENT_FLAG_ON_HOLD is set. 
So clicked event is canceled in Edje.

Test Plan:
On the button in the vertical scroller, click button and move mouse 
horizontal.
Mouse up on the button, so now button is not clicked

Reviewers: Hermet, CHAN, seoz, jaehwan, woohyun, SanghyeonLee

Differential Revision: https://phab.enlightenment.org/D2550
---
 src/lib/elm_interface_scrollable.c | 66 +-
 1 file changed, 44 insertions(+), 22 deletions(-)

diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index fbfd7ce..bf598db 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -2782,49 +2782,62 @@ _elm_scroll_post_event_move(void *data,
elm_widget_parents_bounce_get(sid-obj, horiz, vert);
if (sid-down.hold_parent)
  {
-if ((sid-down.dir_x)  horiz 
+if ((sid-down.dir_x)  (horiz || !sid-bounce_horiz) 
 !_elm_scroll_can_scroll(sid, sid-down.hdir))
   {
  sid-down.dir_x = EINA_FALSE;
   }
-if ((sid-down.dir_y)  vert 
+if ((sid-down.dir_y)  (vert || !sid-bounce_vert) 
 !_elm_scroll_can_scroll(sid, sid-down.vdir))
   {
  sid-down.dir_y = EINA_FALSE;
   }
+sid-down.dragged_began = EINA_TRUE;
  }
if (sid-down.dir_x)
  {
 if ((!sid-obj) ||
 (!elm_widget_drag_child_locked_x_get(sid-obj)))
   {
- sid-down.want_dragged = EINA_FALSE;
- sid-down.dragged = EINA_TRUE;
- if (sid-obj)
+ if (sid-down.dragged_began)
{
-  elm_widget_drag_lock_x_set(sid-obj, 1);
+  sid-down.want_dragged = EINA_FALSE;
+  sid-down.dragged = EINA_TRUE;
+  if (sid-obj)
+{
+   elm_widget_drag_lock_x_set(sid-obj, 1);
+}
+  start = 1;
}
- start = 1;
   }
 else
-  sid-down.dir_x = EINA_FALSE;
+  {
+ sid-down.dragged_began = EINA_TRUE;
+ sid-down.dir_x = EINA_FALSE;
+  }
  }
if (sid-down.dir_y)
  {
 if ((!sid-obj) ||
 (!elm_widget_drag_child_locked_y_get(sid-obj)))
   {
- sid-down.want_dragged = EINA_FALSE;
- sid-down.dragged = EINA_TRUE;
- if (sid-obj)
+ if (sid-down.dragged_began)
{
-  elm_widget_drag_lock_y_set
-(sid-obj, EINA_TRUE);
+  sid-down.want_dragged = EINA_FALSE;
+  sid-down.dragged = EINA_TRUE;
+  if (sid-obj)
+{
+   elm_widget_drag_lock_y_set
+  (sid-obj, EINA_TRUE);
+}
+  start = 1;
}
- start = 1;
   }
 else
-  sid-down.dir_y = EINA_FALSE;
+  {
+ sid-down.dragged_began = EINA_TRUE;
+ sid-down.dir_y = EINA_FALSE;
+  }
  }
if ((!sid-down.dir_x)  (!sid-down.dir_y))
  {
@@ -3137,10 +3150,9 @@ _elm_scroll_mouse_move_event_cb(void *data,
 
 if (sid-one_direction_at_a_time)
   {
- if (!((sid-down.dir_x) || (sid-down.dir_y)) 
- (((x * x) + (y * y)) 
-  (_elm_config-thumbscroll_threshold *
-   _elm_config-thumbscroll_threshold)))
+ if (((x * x) + (y * y)) 
+ (_elm_config-thumbscroll_threshold *
+  _elm_config-thumbscroll_threshold))
{
   if (sid-one_direction_at_a_time ==
   ELM_SCROLLER_SINGLE_DIRECTION_SOFT)
@@ -3236,13 +3248,19 @@ _elm_scroll_mouse_move_event_cb(void *data,
   sid-down.dragged_began_timestamp = ecore_loop_time_get();
 #endif
}
- sid-down.dragged_began = EINA_TRUE;
+
  if (!sid-down.dragged)
{
   sid-down.want_dragged = EINA_TRUE;
+   }
+ if _elm_scroll_can_scroll(sid, LEFT) || 
_elm_scroll_can_scroll(sid, RIGHT))  sid-down.dir_x) ||
+  ((_elm_scroll_can_scroll(sid, UP) || 
_elm_scroll_can_scroll(sid, DOWN))  sid-down.dir_y)) 
+ !sid-down.dragged_began)
+   {
   ev-event_flags |= EVAS_EVENT_FLAG_ON_HOLD

[EGIT] [core/elementary] elementary-1.14 02/02: scroller: add example for resizing scroll's content area.

2015-05-19 Thread Hosang Kim
hermet pushed a commit to branch elementary-1.14.

http://git.enlightenment.org/core/elementary.git/commit/?id=69f369db84a4bedbaca16be86ff6311f44c2c46e

commit 69f369db84a4bedbaca16be86ff6311f44c2c46e
Author: Hosang Kim hosang12@samsung.com
Date:   Tue May 19 21:55:49 2015 +0900

scroller: add example for resizing scroll's content area.

Summary:
When content is resized, scrollbar's position is not updated.
Add bar position update after bar size is changed.

This is sample for resizing issue.

Test Plan: elementary_test - scroller3

Reviewers: jaehwan, woohyun, seoz, raster, Hermet

Subscribers: raster

Differential Revision: https://phab.enlightenment.org/D2291
---
 src/bin/test.c  |   2 +
 src/bin/test_scroller.c | 141 
 2 files changed, 143 insertions(+)

diff --git a/src/bin/test.c b/src/bin/test.c
index 2af3706..9a7de33 100644
--- a/src/bin/test.c
+++ b/src/bin/test.c
@@ -148,6 +148,7 @@ void test_fileselector(void *data, Evas_Object *obj, void 
*event_info);
 void test_separator(void *data, Evas_Object *obj, void *event_info);
 void test_scroller(void *data, Evas_Object *obj, void *event_info);
 void test_scroller2(void *data, Evas_Object *obj, void *event_info);
+void test_scroller3(void *data, Evas_Object *obj, void *event_info);
 void test_spinner(void *data, Evas_Object *obj, void *event_info);
 void test_index(void *data, Evas_Object *obj, void *event_info);
 void test_index2(void *data, Evas_Object *obj, void *event_info);
@@ -746,6 +747,7 @@ add_tests:
//--//
ADD_TEST(NULL, Scroller, Scroller, test_scroller);
ADD_TEST(NULL, Scroller, Scroller 2, test_scroller2);
+   ADD_TEST(NULL, Scroller, Scroller 3, test_scroller3);
 
//--//
// FIXME: add frame test
diff --git a/src/bin/test_scroller.c b/src/bin/test_scroller.c
index 8457e92..470a1f4 100644
--- a/src/bin/test_scroller.c
+++ b/src/bin/test_scroller.c
@@ -473,3 +473,144 @@ test_scroller2(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event
evas_object_resize(win, 320, 480);
evas_object_show(win);
 }
+
+static Ecore_Timer *timer = NULL;
+static int append = 0;
+static int count = 0;
+
+void
+del_item(void *data EINA_UNUSED, Evas_Object *obj, void *event_info 
EINA_UNUSED)
+{
+   evas_object_del(obj);
+}
+
+void
+append_item(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   Evas_Object *bx = data, *bt;
+   char buf[PATH_MAX];
+
+   bt = elm_button_add(bx);
+   snprintf(buf, sizeof(buf), Item %d, ++count);
+   elm_object_text_set(bt, buf);
+   elm_box_pack_end(bx, bt);
+   evas_object_smart_callback_add(bt, clicked, del_item, NULL);
+   evas_object_show(bt);
+}
+
+void
+prepend_item(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   Evas_Object *bx = data, *bt;
+   char buf[PATH_MAX];
+
+   bt = elm_button_add(bx);
+   snprintf(buf, sizeof(buf), Item %d, ++count);
+   elm_object_text_set(bt, buf);
+   elm_box_pack_start(bx, bt);
+   evas_object_smart_callback_add(bt, clicked, del_item, NULL);
+   evas_object_show(bt);
+}
+
+static Eina_Bool
+append_cb(void *data)
+{
+   Evas_Object *bx = data, *bt;
+   char buf[PATH_MAX];
+
+   bt = elm_button_add(bx);
+   snprintf(buf, sizeof(buf), Item %d, ++count);
+   elm_object_text_set(bt, buf);
+   elm_box_pack_end(bx, bt);
+   evas_object_smart_callback_add(bt, clicked, del_item, NULL);
+   evas_object_show(bt);
+
+   append--;
+
+   if (append = 0)
+ {
+timer = NULL;
+return ECORE_CALLBACK_CANCEL;
+ }
+   else
+ return ECORE_CALLBACK_RENEW;
+}
+
+static void
+append_items(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   append += 10;
+   timer = ecore_timer_add(0.3, append_cb, data);
+}
+
+static void
+win_del_cb(void *data EINA_UNUSED,
+   Evas *e EINA_UNUSED,
+   Evas_Object *obj EINA_UNUSED,
+   void *event_info EINA_UNUSED)
+{
+   ecore_timer_del(timer);
+   timer = NULL;
+}
+
+void
+test_scroller3(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Evas_Object *win, *bt, *bt2, *bt3, *bx, *bx2, *bx3, *bx4, *sc;
+
+   win = elm_win_util_standard_add(scroller3, Scroller 3);
+   elm_win_autodel_set(win, EINA_TRUE);
+   evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, win_del_cb, NULL);
+
+   bx = elm_box_add(win);
+   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(win, bx);
+   evas_object_show(bx);
+
+   bx2 = elm_box_add(bx);
+   evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0.1);
+   evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_horizontal_set(bx2, EINA_TRUE);
+   elm_box_pack_end(bx, bx2);
+   evas_object_show(bx2);
+
+   bt = elm_button_add(bx2);
+   elm_object_text_set(bt

[EGIT] [core/elementary] master 01/01: Fix scrollbar position issue when content is resized.

2015-04-26 Thread Hosang Kim
hermet pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=1062f7d3956a140594eff458ffdbf4fcc2e05441

commit 1062f7d3956a140594eff458ffdbf4fcc2e05441
Author: Hosang Kim hosang12@samsung.com
Date:   Mon Apr 27 13:55:10 2015 +0900

Fix scrollbar position issue when content is resized.

Summary:
When content is resized, scrollbar's position is not updated.
Add bar position update after bar size is changed.

Test Plan: elementary_test - scroller3

Reviewers: seoz, jaehwan, woohyun, cedric, raster, kimcinoo, Hermet

Reviewed By: Hermet

Differential Revision: https://phab.enlightenment.org/D2419
---
 src/lib/elm_interface_scrollable.c | 19 +++
 1 file changed, 19 insertions(+)

diff --git a/src/lib/elm_interface_scrollable.c 
b/src/lib/elm_interface_scrollable.c
index e52d78e..acb3021 100644
--- a/src/lib/elm_interface_scrollable.c
+++ b/src/lib/elm_interface_scrollable.c
@@ -846,6 +846,25 @@ 
_elm_scroll_scroll_bar_size_adjust(Elm_Scrollable_Smart_Interface_Data *sid)
 if (vx != mx) x = px;
 if (vy != my) y = py;
 eo_do(sid-pan_obj, elm_obj_pan_pos_set(x, y));
+
+if (mx  0) vx = (double)(x - minx) / (double)mx;
+else vx = 0.0;
+
+if (vx  0.0) vx = 0.0;
+else if (vx  1.0)
+  vx = 1.0;
+
+if (my  0) vy = (double)(y - miny) / (double)my;
+else vy = 0.0;
+
+if (vy  0.0) vy = 0.0;
+else if (vy  1.0)
+  vy = 1.0;
+
+edje_object_part_drag_value_set
+   (sid-edje_obj, elm.dragable.vbar, 0.0, vy);
+edje_object_part_drag_value_set
+   (sid-edje_obj, elm.dragable.hbar, vx, 0.0);
  }
else
  {

--