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

Reply via email to