On Mon, Apr 9, 2012 at 10:56 AM, Gustavo Chaves <gl...@profusion.mobi>wrote:
> > > On Fri, Apr 6, 2012 at 3:19 AM, Enlightenment SVN < > no-re...@enlightenment.org> wrote: > >> Log: >> elementary/win - [E-devel] [Patch][Elementary] Patch for elm_win to fix >> the focus chain issue in case of a widget added as a normal sub-object, not >> a resizable object >> >> Current Issue: >> Currently when we add a widget to window as a sub-object, e.g. >> elm_notify_add(win) which internally calls elm_widget_sub_object_add >> then the focus chain using <TAB> includes only >> the first focusable subitem of the widget, not all. >> Whereas with elm_win_resize_object_add, it works fine and cycles to >> all focusable sub-items of the widget. >> >> Reason: >> The reason is that we are appending sub-object to the list in >> elm_win which is used for focus chain, only in case of >> elm_win_resize_object_add. >> >> Change Description: >> Added a new API: EAPI Eina_List >> *elm_widget_sub_object_list_get(const Evas_Object *obj); >> This API returns the list of sub-objects of an elementary widget >> (sd->subobjs) where sd is Smart_Data pointer obtainted using >> elm_widget_smart_data_get(obj). >> We have used this API in elm_win for focus_next_hook implementation. >> >> Signed-Off-By: RAJEEV RANJAN<rajeev.r>@samsumg.com> >> >> >> > This is a (wrong) work around for a bigger problem on sub object handling > at elm-widget.c. I have fixed much more than that on > http://git.profusion.mobi/cgit.cgi/glima/elementary/commit/?id=0211957db417d5ddb2a66530fa6cc2bc60a8360e, > please take a look. I'd push that upstream if you wanted, but I can't keep > testing it with a raw Elementary, i.e. without my changes. > > For now, my commit list will just pass over this change and use the right > way on sub objects. > > What is worth noticing on the commit is that now resize objects are also sub objects, so that many things are simplifyed. > >> Author: hermet >> Date: 2012-04-05 23:19:16 -0700 (Thu, 05 Apr 2012) >> New Revision: 69943 >> Trac: http://trac.enlightenment.org/e/changeset/69943 >> >> Modified: >> trunk/elementary/src/lib/elm_widget.c >> trunk/elementary/src/lib/elm_widget.h trunk/elementary/src/lib/elm_win.c >> >> Modified: trunk/elementary/src/lib/elm_widget.c >> =================================================================== >> --- trunk/elementary/src/lib/elm_widget.c 2012-04-06 05:58:50 UTC >> (rev 69942) >> +++ trunk/elementary/src/lib/elm_widget.c 2012-04-06 06:19:16 UTC >> (rev 69943) >> @@ -1036,6 +1036,13 @@ >> evas_object_smart_callback_call(obj, "sub-object-del", sobj); >> } >> >> +EAPI const Eina_List * >> +elm_widget_sub_object_list_get(const Evas_Object *obj) >> +{ >> + API_ENTRY return NULL; >> + return (const Eina_List *)sd->subobjs; >> +} >> + >> EAPI void >> elm_widget_resize_object_set(Evas_Object *obj, >> Evas_Object *sobj) >> >> Modified: trunk/elementary/src/lib/elm_widget.h >> =================================================================== >> --- trunk/elementary/src/lib/elm_widget.h 2012-04-06 05:58:50 UTC >> (rev 69942) >> +++ trunk/elementary/src/lib/elm_widget.h 2012-04-06 06:19:16 UTC >> (rev 69943) >> @@ -328,6 +328,7 @@ >> EAPI void *elm_widget_data_get(const Evas_Object *obj); >> EAPI void elm_widget_sub_object_add(Evas_Object *obj, >> Evas_Object *sobj); >> EAPI void elm_widget_sub_object_del(Evas_Object *obj, >> Evas_Object *sobj); >> +EAPI const Eina_List *elm_widget_sub_object_list_get(const Evas_Object >> *obj); >> EAPI void elm_widget_resize_object_set(Evas_Object *obj, >> Evas_Object *sobj); >> EAPI void elm_widget_hover_object_set(Evas_Object *obj, >> Evas_Object *sobj); >> EAPI void elm_widget_signal_emit(Evas_Object *obj, const >> char *emission, const char *source); >> >> Modified: trunk/elementary/src/lib/elm_win.c >> =================================================================== >> --- trunk/elementary/src/lib/elm_win.c 2012-04-06 05:58:50 UTC (rev >> 69942) >> +++ trunk/elementary/src/lib/elm_win.c 2012-04-06 06:19:16 UTC (rev >> 69943) >> @@ -498,19 +498,20 @@ >> { >> Elm_Win *wd = elm_widget_data_get(obj); >> const Eina_List *items; >> + const Eina_List *list; >> void *(*list_data_get) (const Eina_List *list); >> >> if (!wd) >> return EINA_FALSE; >> + list = elm_widget_sub_object_list_get(obj); >> >> /* Focus chain */ >> - if (wd->subobjs) >> + if (list) >> { >> if (!(items = elm_widget_focus_custom_chain_get(obj))) >> { >> - items = wd->subobjs; >> - if (!items) >> - return EINA_FALSE; >> + if (!list) return EINA_FALSE; >> + items = list; >> } >> list_data_get = eina_list_data_get; >> >> >> >> >> ------------------------------------------------------------------------------ >> For Developers, A Lot Can Happen In A Second. >> Boundary is the first to Know...and Tell You. >> Monitor Your Applications in Ultra-Fine Resolution. Try it FREE! >> http://p.sf.net/sfu/Boundary-d2dvs2 >> _______________________________________________ >> enlightenment-svn mailing list >> enlightenment-...@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn >> > > > > -- > Gustavo Lima Chaves > Senior Developer > > ProFUSION embedded systems > > http://profusion.mobi > > -- Gustavo Lima Chaves Senior Developer ProFUSION embedded systems http://profusion.mobi ------------------------------------------------------------------------------ For Developers, A Lot Can Happen In A Second. Boundary is the first to Know...and Tell You. Monitor Your Applications in Ultra-Fine Resolution. Try it FREE! http://p.sf.net/sfu/Boundary-d2dvs2 _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel