forked from enlightenment/efl
elementary: add smart callback "focus-in" and "focus-out".
NOTE: Glima could you review this, I am really not sure I should have implemented it this way. SVN revision: 74818
This commit is contained in:
parent
624f69ea2f
commit
3148dd42af
|
@ -366,3 +366,7 @@
|
|||
2012-08-02 Cedric Bail
|
||||
|
||||
* Fix elm_image_orient_set/get.
|
||||
|
||||
2012-08-03 Cedric Bail
|
||||
|
||||
* Add smart callback "focus-in" and "focus-out".
|
||||
|
|
|
@ -19,6 +19,7 @@ Additions:
|
|||
* Initialize Emotion when necessary.
|
||||
* Elm_Win_Trap and elm_win_trap_set() to allow e17 integration.
|
||||
* elm_flip_go_to()
|
||||
* Add smart callback "focus-in" and "focus-out" when an Elementary object gain or loose focus.
|
||||
|
||||
Fixes:
|
||||
|
||||
|
|
|
@ -367,6 +367,25 @@ _elm_widget_focus_direction_func_unimplemented(const Evas_Object *obj __UNUSED__
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_elm_widget_focus_call(Elm_Widget_Smart_Data *sd, Evas_Object *obj)
|
||||
{
|
||||
Eina_Bool r = EINA_FALSE;
|
||||
|
||||
sd->api->on_focus(obj);
|
||||
if (_elm_legacy_is(obj) && COMPAT_SMART_DATA(sd)->focus)
|
||||
{
|
||||
COMPAT_SMART_DATA(sd)->focus(obj);
|
||||
r = EINA_TRUE;
|
||||
}
|
||||
if (sd->focused)
|
||||
evas_object_smart_callback_call(obj, "focus-in", NULL);
|
||||
else
|
||||
evas_object_smart_callback_call(obj, "focus-out", NULL);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_elm_widget_sub_object_add_func(Evas_Object *obj,
|
||||
Evas_Object *sobj)
|
||||
|
@ -831,9 +850,7 @@ _parent_focus(Evas_Object *obj)
|
|||
if (sd->top_win_focused)
|
||||
{
|
||||
sd->focused = EINA_TRUE;
|
||||
sd->api->on_focus(obj);
|
||||
if (_elm_legacy_is(obj) && COMPAT_SMART_DATA(sd)->focus)
|
||||
COMPAT_SMART_DATA(sd)->focus(obj);
|
||||
_elm_widget_focus_call(sd, obj);
|
||||
_elm_widget_focus_region_show(obj);
|
||||
}
|
||||
sd->focus_order_on_calc = EINA_FALSE;
|
||||
|
@ -2726,12 +2743,10 @@ elm_widget_focus_set(Evas_Object *obj,
|
|||
focus_order++;
|
||||
sd->focus_order = focus_order;
|
||||
sd->focused = EINA_TRUE;
|
||||
sd->api->on_focus(obj);
|
||||
}
|
||||
|
||||
if (_elm_legacy_is(obj) && COMPAT_SMART_DATA(sd)->focus)
|
||||
if (_elm_widget_focus_call(sd, obj))
|
||||
{
|
||||
COMPAT_SMART_DATA(sd)->focus(obj);
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -2814,9 +2829,7 @@ elm_widget_focused_object_clear(Evas_Object *obj)
|
|||
}
|
||||
}
|
||||
sd->focused = EINA_FALSE;
|
||||
sd->api->on_focus(obj);
|
||||
if (_elm_legacy_is(obj) && COMPAT_SMART_DATA(sd)->focus)
|
||||
COMPAT_SMART_DATA(sd)->focus(obj);
|
||||
_elm_widget_focus_call(sd, obj);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
Loading…
Reference in New Issue