seoz pushed a commit to branch master.
commit 37ba7ada80519bc73cb7500aa3428cb2e52e732d
Author: Daniel Juyung Seo <[email protected]>
Date: Fri Jun 7 01:13:37 2013 +0900
elm: all the focusable widget now emits "focused" and "unfocused" smart
callbacks.
1. documentations, NEWS, and ChangeLog will be updated later after some
more test.
2. need to check entry.
---
src/lib/elm_datetime.c | 6 ++++++
src/lib/elm_glview.c | 14 ++++++--------
src/lib/elm_layout.c | 5 ++++-
src/lib/elm_map.c | 4 ++++
src/lib/elm_photocam.c | 4 ++++
src/lib/elm_toolbar.c | 4 ++++
src/lib/elm_web.c | 4 ++++
src/lib/elm_widget.c | 11 ++++++++++-
src/lib/elm_win.c | 5 ++++-
9 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/src/lib/elm_datetime.c b/src/lib/elm_datetime.c
index 0622684..e8f1d2c 100644
--- a/src/lib/elm_datetime.c
+++ b/src/lib/elm_datetime.c
@@ -452,6 +452,12 @@ static void
_elm_datetime_smart_on_focus(Eo *obj, void *_pd, va_list *list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ if (ret) *ret = EINA_FALSE;
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
+
if (!elm_widget_focus_get(obj))
{
Elm_Datetime_Smart_Data *sd = _pd;
diff --git a/src/lib/elm_glview.c b/src/lib/elm_glview.c
index a96a940..f3bf7ae 100644
--- a/src/lib/elm_glview.c
+++ b/src/lib/elm_glview.c
@@ -39,17 +39,15 @@ _elm_glview_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED,
va_list *list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
if (elm_widget_focus_get(obj))
- {
- evas_object_focus_set(wd->resize_obj, EINA_TRUE);
- evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
- }
+ evas_object_focus_set(wd->resize_obj, EINA_TRUE);
else
- {
- evas_object_focus_set(wd->resize_obj, EINA_FALSE);
- evas_object_smart_callback_call(obj, SIG_UNFOCUSED, NULL);
- }
+ evas_object_focus_set(wd->resize_obj, EINA_FALSE);
if (ret) *ret = EINA_TRUE;
}
diff --git a/src/lib/elm_layout.c b/src/lib/elm_layout.c
index db3bab4..b92917a 100644
--- a/src/lib/elm_layout.c
+++ b/src/lib/elm_layout.c
@@ -370,9 +370,12 @@ static void
_elm_layout_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
-
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
if (elm_widget_focus_get(obj))
{
diff --git a/src/lib/elm_map.c b/src/lib/elm_map.c
index 6358a32..53f6b1d 100644
--- a/src/lib/elm_map.c
+++ b/src/lib/elm_map.c
@@ -3804,6 +3804,10 @@ _elm_map_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED,
va_list *list)
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
if (elm_widget_focus_get(obj))
{
diff --git a/src/lib/elm_photocam.c b/src/lib/elm_photocam.c
index 2f8024d..019bacb 100644
--- a/src/lib/elm_photocam.c
+++ b/src/lib/elm_photocam.c
@@ -863,6 +863,10 @@ _elm_photocam_smart_on_focus(Eo *obj, void *_pd
EINA_UNUSED, va_list *list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
if (elm_widget_focus_get(obj))
{
diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c
index 5e18fcd..db23414 100644
--- a/src/lib/elm_toolbar.c
+++ b/src/lib/elm_toolbar.c
@@ -571,6 +571,10 @@ _elm_toolbar_smart_on_focus(Eo *obj, void *_pd
EINA_UNUSED, va_list *list)
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
ELM_TOOLBAR_DATA_GET(obj, sd);
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
if (elm_widget_focus_get(obj))
evas_object_focus_set(wd->resize_obj, EINA_TRUE);
diff --git a/src/lib/elm_web.c b/src/lib/elm_web.c
index 8c78ccd..ae08fa0 100644
--- a/src/lib/elm_web.c
+++ b/src/lib/elm_web.c
@@ -154,6 +154,10 @@ _elm_web_smart_on_focus(Eo *obj, void *_pd, va_list *list)
Elm_Web_Smart_Data *sd = _pd;
Elm_Widget_Smart_Data *wd = eo_data_scope_get(obj, ELM_OBJ_WIDGET_CLASS);
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
top = elm_widget_top_get(obj);
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index bb618b0..70c3d77 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5852,7 +5852,16 @@ static void
_elm_widget_on_focus(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
- if (ret) *ret = EINA_FALSE;
+
+ if (elm_widget_can_focus_get(obj))
+ {
+ if (elm_widget_focus_get(obj))
+ evas_object_smart_callback_call(obj, "focused", NULL);
+ else
+ evas_object_smart_callback_call(obj, "unfocused", NULL);
+ }
+
+ if (ret) *ret = EINA_TRUE;
}
static void
diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
index 3ec6ddd..f1d055e 100644
--- a/src/lib/elm_win.c
+++ b/src/lib/elm_win.c
@@ -1128,8 +1128,11 @@ _elm_win_smart_on_focus(Eo *obj, void *_pd, va_list
*list)
{
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_TRUE;
-
Elm_Win_Smart_Data *sd = _pd;
+ Eina_Bool int_ret = EINA_FALSE;
+
+ eo_do_super(obj, MY_CLASS, elm_wdg_on_focus(&int_ret));
+ if (!int_ret) return;
if (sd->img_obj)
evas_object_focus_set(sd->img_obj, elm_widget_focus_get(obj));
--
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j