On Thu, Jan 18, 2018 at 11:07 PM, Andrew Williams <a...@andywilliams.me>
wrote:

> Pretty sure that efl.ui.selection, efl.ui.cnp and efl.ui.dnd would be good
> namespaces.
>
> Efl.Ui.Selectable should probably go into the selection namespace too.
>

No because it's a different kind of selection :)
Selectable -> item select in a list (work in progress...)
Selection -> text selection for cnp & dnd. This one belongs more to cnp I
think, and selection may be an abusive name.
So I think cnp, dnd and selection (NOT selectable!) belong to the same
category.


>
> Andy
>
> On Thu, 18 Jan 2018 at 07:54 Jean-Philippe André <j...@videolan.org>
> wrote:
>
> > Hi,
> >
> > On Fri, Jan 12, 2018 at 4:23 AM, Gustavo Sverzut Barbieri <
> > barbi...@gmail.com> wrote:
> >
> > > i guess davemds will get mad, since he was complaining about
> > > namespaces and this one, Efl.Selection clearly misses a proper
> > > namespace.
> > >
> >
> > Well, I kinda agree. All selection stuff could go in Efl.Ui. Or
> > Efl.Ui.Util.
> > All CnP and Dnd stuff should be in the same namespace.
> >
> > But I can't find any better name for Efl.Selection itself (assuming it's
> in
> > Ui or Util or whatnot).
> >
> > Any proposition? Dave? Andy? Thiep?
> >
> >
> > >
> > > On Thu, Jan 11, 2018 at 7:02 AM, Thiep Ha <thie...@gmail.com> wrote:
> > > > thiep pushed a commit to branch master.
> > > >
> > > > http://git.enlightenment.org/core/efl.git/commit/?id=f191d68
> > > 21f0fd94389dc92c8353b769eaacad28a
> > > >
> > > > commit f191d6821f0fd94389dc92c8353b769eaacad28a
> > > > Author: Thiep Ha <thie...@gmail.com>
> > > > Date:   Tue Jan 9 15:34:12 2018 +0900
> > > >
> > > >     selection: add efl_selection interface
> > > >
> > > >     Efl_Selection is the object interface for selection api of
> elm_cnp.
> > > >     It allows get, set, clear, check selection.
> > > > ---
> > > >  src/Makefile_Elementary.am                 |  2 +
> > > >  src/lib/elementary/Elementary.h            |  1 +
> > > >  src/lib/elementary/efl_selection.c         | 62
> > > ++++++++++++++++++++++++++++++
> > > >  src/lib/elementary/efl_selection.eo        | 45
> ++++++++++++++++++++++
> > > >  src/lib/elementary/efl_selection_manager.c |  4 +-
> > > >  src/lib/elementary/efl_ui_widget.eo        |  2 +-
> > > >  6 files changed, 113 insertions(+), 3 deletions(-)
> > > >
> > > > diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am
> > > > index b1ac2657ae..a1712eca5e 100644
> > > > --- a/src/Makefile_Elementary.am
> > > > +++ b/src/Makefile_Elementary.am
> > > > @@ -97,6 +97,7 @@ elm_public_eolian_files = \
> > > >         lib/elementary/efl_access_window.eo \
> > > >         lib/elementary/efl_config_global.eo \
> > > >         lib/elementary/elm_code_widget.eo \
> > > > +       lib/elementary/efl_selection.eo \
> > > >         $(NULL)
> > > >
> > > >  # More public files -- FIXME
> > > > @@ -761,6 +762,7 @@ lib_elementary_libelementary_la_SOURCES = \
> > > >         lib/elementary/efl_ui_scroll_manager.c \
> > > >         lib/elementary/efl_ui_pan.c \
> > > >         lib/elementary/efl_selection_manager.c \
> > > > +       lib/elementary/efl_selection.c \
> > > >         $(NULL)
> > > >
> > > >
> > > > diff --git a/src/lib/elementary/Elementary.h
> > > b/src/lib/elementary/Elementary.h
> > > > index b5c58c77f7..2e5e4cb5b7 100644
> > > > --- a/src/lib/elementary/Elementary.h
> > > > +++ b/src/lib/elementary/Elementary.h
> > > > @@ -324,6 +324,7 @@ EAPI extern Elm_Version *elm_version;
> > > >  # include "efl_selection_types.eot.h"
> > > >  # include "efl_ui_dnd_types.eot.h"
> > > >  # include <efl_ui_pan.eo.h>
> > > > +# include "efl_selection.eo.h"
> > > >  #endif
> > > >
> > > >  /* include deprecated calls last of all */
> > > > diff --git a/src/lib/elementary/efl_selection.c
> > > b/src/lib/elementary/efl_selection.c
> > > > new file mode 100644
> > > > index 0000000000..9f086e340e
> > > > --- /dev/null
> > > > +++ b/src/lib/elementary/efl_selection.c
> > > > @@ -0,0 +1,62 @@
> > > > +#ifdef HAVE_CONFIG_H
> > > > +# include "elementary_config.h"
> > > > +#endif
> > > > +
> > > > +#define EFL_SELECTION_MANAGER_BETA
> > > > +
> > > > +#include <Elementary.h>
> > > > +#include "elm_priv.h"
> > > > +
> > > > +#define MY_CLASS EFL_SELECTION_MIXIN
> > > > +#define MY_CLASS_NAME "Efl.Selection"
> > > > +
> > > > +static inline Eo*
> > > > +_selection_manager_get(Eo *obj)
> > > > +{
> > > > +   Eo *top = elm_widget_top_get(obj);
> > > > +   if (!top)
> > > > +     {
> > > > +        top = obj;
> > > > +     }
> > > > +   Eo *sel_man = efl_key_data_get(top, "__selection_manager");
> > > > +   if (!sel_man)
> > > > +     {
> > > > +        sel_man = efl_add(EFL_SELECTION_MANAGER_CLASS, top);
> > > > +        efl_key_data_set(top, "__selection_manager", sel_man);
> > > > +     }
> > > > +   return sel_man;
> > > > +}
> > > > +
> > > > +EOLIAN static void
> > > > +_efl_selection_selection_get(Eo *obj, void *pd EINA_UNUSED,
> > > Efl_Selection_Type type, Efl_Selection_Format format,
> > > > +                                     void *data_func_data,
> > > Efl_Selection_Data_Ready data_func, Eina_Free_Cb data_func_free_cb,
> > > unsigned int seat)
> > > > +{
> > > > +   Eo *sel_man = _selection_manager_get(obj);
> > > > +   efl_selection_manager_selection_get(sel_man, obj, type, format,
> > > > +                                       data_func_data, data_func,
> > > > +                                       data_func_free_cb, seat);
> > > > +}
> > > > +
> > > > +EOLIAN static Eina_Future *
> > > > +_efl_selection_selection_set(Eo *obj, void *pd EINA_UNUSED,
> > > Efl_Selection_Type type, Efl_Selection_Format format, Eina_Slice data,
> > > unsigned int seat)
> > > > +{
> > > > +   Eo *sel_man = _selection_manager_get(obj);
> > > > +   return efl_selection_manager_selection_set(sel_man, obj, type,
> > > format, data, seat);
> > > > +}
> > > > +
> > > > +EOLIAN static void
> > > > +_efl_selection_selection_clear(Eo *obj, void *pd EINA_UNUSED,
> > > Efl_Selection_Type type, unsigned int seat)
> > > > +{
> > > > +   Eo *sel_man = _selection_manager_get(obj);
> > > > +   efl_selection_manager_selection_clear(sel_man, obj, type, seat);
> > > > +}
> > > > +
> > > > +EOLIAN static Eina_Bool
> > > > +_efl_selection_has_owner(Eo *obj, void *pd EINA_UNUSED,
> > > Efl_Selection_Type type, unsigned int seat)
> > > > +{
> > > > +    Eo *sel_man = _selection_manager_get(obj);
> > > > +    return efl_selection_manager_selection_has_owner(sel_man, obj,
> > > type, seat);
> > > > +}
> > > > +
> > > > +
> > > > +#include "efl_selection.eo.c"
> > > > diff --git a/src/lib/elementary/efl_selection.eo
> > > b/src/lib/elementary/efl_selection.eo
> > > > new file mode 100644
> > > > index 0000000000..2f836567a1
> > > > --- /dev/null
> > > > +++ b/src/lib/elementary/efl_selection.eo
> > > > @@ -0,0 +1,45 @@
> > > > +import efl_selection_types;
> > > > +
> > > > +mixin Efl.Selection {
> > > > +   [[Efl Selection class]]
> > > > +   data: null;
> > > > +   methods {
> > > > +      selection_set {
> > > > +         [[Set the selection data to the object]]
> > > > +         params {
> > > > +            @in type: Efl.Selection.Type; [[Selection Type]]
> > > > +            @in format: Efl.Selection.Format; [[Selection Format]]
> > > > +            @in data: Eina.Slice;
> > > > +            @in seat: uint;[[Specified seat for multiple seats
> case.]]
> > > > +         }
> > > > +         return: ptr(Eina.Future); [[Future for tracking when the
> > > selection is lost]]
> > > > +      }
> > > > +      selection_get {
> > > > +         [[Get the data from the object that has selection]]
> > > > +         params {
> > > > +            @in type: Efl.Selection.Type; [[Selection Type]]
> > > > +            @in format: Efl.Selection.Format; [[Selection Format]]
> > > > +            @in data_func: Efl.Selection.Data_Ready; [[Data ready
> > > function pointer]]
> > > > +            @in seat: uint;[[Specified seat for multiple seats
> case.]]
> > > > +         }
> > > > +      }
> > > > +      selection_clear {
> > > > +         [[Clear the selection data from the object]]
> > > > +         params {
> > > > +            @in type: Efl.Selection.Type; [[Selection Type]]
> > > > +            @in seat: uint; [[Specified seat for multiple seats
> > case.]]
> > > > +         }
> > > > +      }
> > > > +      has_owner {
> > > > +         [[Determine whether the selection data has owner]]
> > > > +         params {
> > > > +            @in type: Efl.Selection.Type; [[Selection type]]
> > > > +            @in seat: uint; [[Specified seat for multiple seats
> > case.]]
> > > > +         }
> > > > +         return: bool; [[EINA_TRUE if there is object owns
> selection,
> > > otherwise EINA_FALSE]]
> > > > +      }
> > > > +   }
> > > > +   events {
> > > > +      selection,changed; [[Called when display server's selection
> has
> > > changed]]
> > > > +   }
> > > > +}
> > > > diff --git a/src/lib/elementary/efl_selection_manager.c
> > > b/src/lib/elementary/efl_selection_manager.c
> > > > index 23bde3bded..6aaf9d8eed 100644
> > > > --- a/src/lib/elementary/efl_selection_manager.c
> > > > +++ b/src/lib/elementary/efl_selection_manager.c
> > > > @@ -753,7 +753,7 @@ _x11_fixes_selection_notify(void *data, int t
> > > EINA_UNUSED, void *event)
> > > >     e.type = type;
> > > >     e.seat = 1; /* under x11 this is always the default seat */
> > > >     e.exist = !!ev->owner;
> > > > -   //efl_event_callback_call(sel->owner,
> > EFL_SELECTION_EVENT_SELECTION_CHANGED,
> > > &e);
> > > > +   efl_event_callback_call(sel->owner,
> > EFL_SELECTION_EVENT_SELECTION_CHANGED,
> > > &e);
> > > >     //ecore_event_add(ELM_CNP_EVENT_SELECTION_CHANGED, e, NULL,
> NULL);
> > > >
> > > >     return ECORE_CALLBACK_RENEW;
> > > > @@ -2512,7 +2512,7 @@ _wl_selection_changed(void *data, int type
> > > EINA_UNUSED, void *event)
> > > >     e.display = ecore_wl2_display_connect(ecor
> > > e_wl2_display_name_get(ev->display));
> > > >     e.exist = !!ecore_wl2_dnd_selection_get(seat);
> > > >     //ecore_event_add(ELM_CNP_EVENT_SELECTION_CHANGED, e,
> > > _wl_selection_changed_free, ev->display);
> > > > -   //efl_event_callback_call(sel->request_obj,
> > > EFL_SELECTION_EVENT_SELECTION_CHANGED, &e);
> > > > +   efl_event_callback_call(sel->request_obj,
> > > EFL_SELECTION_EVENT_SELECTION_CHANGED, &e);
> > > >
> > > >     return ECORE_CALLBACK_RENEW;
> > > >  }
> > > > diff --git a/src/lib/elementary/efl_ui_widget.eo
> > > b/src/lib/elementary/efl_ui_widget.eo
> > > > index f4933d4438..d0c1797c80 100644
> > > > --- a/src/lib/elementary/efl_ui_widget.eo
> > > > +++ b/src/lib/elementary/efl_ui_widget.eo
> > > > @@ -17,7 +17,7 @@ struct Efl.Ui.Widget.Focus_State {
> > > >  abstract Efl.Ui.Widget (Efl.Canvas.Group, Efl.Access,
> > > >                          Efl.Access.Component, Efl.Ui.Focus.User,
> > > Efl.Part,
> > > >                          Efl.Ui.Focus.Object, Efl.Ui.Base,
> > Efl.Ui.Cursor,
> > > > -                        Efl.Ui.Translatable)
> > > > +                        Efl.Ui.Translatable, Efl.Selection)
> > > >  {
> > > >     [[Elementary widget abstract class]]
> > > >     legacy_prefix: elm_widget;
> > > >
> > > > --
> > > >
> > > >
> > >
> > >
> > >
> > > --
> > > Gustavo Sverzut Barbieri
> > > --------------------------------------
> > > Mobile: +55 (16) 99354-9890 <+55%2016%2099354-9890>
> > >
> > > ------------------------------------------------------------
> > > ------------------
> > > Check out the vibrant tech community on one of the world's most
> > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> > >
> >
> >
> > --
> > Jean-Philippe André
> >
> > ------------------------------------------------------------
> ------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >
>
>
> --
> http://andywilliams.me
> http://ajwillia.ms
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>



-- 
Jean-Philippe André
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to