On Mon, May 22, 2017 at 1:05 PM Mike Blumenkrantz <
michael.blumenkra...@gmail.com> wrote:

> On Mon, May 22, 2017 at 2:02 PM Stephen 'Okra' Houston <
> smhousto...@gmail.com> wrote:
>
> > okra pushed a commit to branch master.
> >
> >
> >
> http://git.enlightenment.org/core/enlightenment.git/commit/?id=171686f0a91339443353288b3e005fbc0503fc1b
> >
> > commit 171686f0a91339443353288b3e005fbc0503fc1b
> > Author: Stephen 'Okra' Houston <smhousto...@gmail.com>
> > Date:   Mon May 22 13:01:12 2017 -0500
> >
> >     Luncher Improvements: Don't add multiple global handlers for the same
> > events and don't show preview immediately for iconic.
> >
> >     This fixes T5377
> > ---
> >  src/modules/luncher/bar.c | 92
> > +++++++++++++----------------------------------
> >  1 file changed, 24 insertions(+), 68 deletions(-)
> >
> > diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
> > index 20c082d..5f50663 100644
> > --- a/src/modules/luncher/bar.c
> > +++ b/src/modules/luncher/bar.c
> > @@ -33,29 +33,6 @@ _bar_aspect(Instance *inst)
> >  }
> >
> >  static Eina_Bool
> > -_bar_check_for_iconic(Icon *ic)
> > -{
> > -   Eina_List *l, *ll, *clients = NULL;
> > -   E_Client *ec;
> > -   E_Exec_Instance *ex;
> > -
> > -   EINA_LIST_FOREACH(ic->execs, l, ex)
> > -     {
> > -        EINA_LIST_FOREACH(ex->clients, ll, ec)
> > -          clients = eina_list_append(clients, ec);
> > -     }
> > -   EINA_LIST_FOREACH(ic->clients, l, ec)
> > -     clients = eina_list_append(clients, ec);
> > -
> > -   EINA_LIST_FREE(clients, ec)
> > -     {
> > -          if (ec->iconic)
> > -            return EINA_TRUE;
> > -     }
> > -   return EINA_FALSE;
> > -}
> > -
> > -static Eina_Bool
> >  _bar_check_for_duplicates(Icon *ic, E_Client *dupe)
> >  {
> >     Eina_List *l, *ll, *clients = NULL;
> > @@ -990,8 +967,6 @@ _bar_icon_mouse_in(void *data, Evas *e EINA_UNUSED,
> > Evas_Object *obj, void *even
> >       clients = EINA_TRUE;
> >     if (clients && ic->inst->current_preview &&
> > !ic->inst->current_preview_menu)
> >       _bar_icon_preview_show(ic);
> > -   else if (_bar_check_for_iconic(ic))
> > -     _bar_icon_preview_show(ic);
> >     else if (clients && !ic->inst->current_preview)
> >       ic->mouse_in_timer = ecore_timer_loop_add(0.3,
> > _bar_icon_preview_show, ic);
> >  }
> > @@ -1014,8 +989,6 @@ _bar_exec_new_show(void *data, Evas *e EINA_UNUSED,
> > Evas_Object *obj, void *even
> >               E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
> >               if (ic->inst->current_preview &&
> > !ic->inst->current_preview_menu)
> >                 _bar_icon_preview_show(ic);
> > -             else if (_bar_check_for_iconic(ic))
> > -               _bar_icon_preview_show(ic);
> >               else if (!ic->inst->current_preview)
> >                 ic->mouse_in_timer = ecore_timer_loop_add(0.3,
> > _bar_icon_preview_show, ic);
> >            }
> > @@ -1783,6 +1756,7 @@ static void
> >  _bar_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
> > void *event_data EINA_UNUSED)
> >  {
> >     Instance *inst = data;
> > +   Ecore_Event_Handler *handler;
> >
> >     inst->main_del = EINA_TRUE;
> >     _bar_empty(inst);
> > @@ -1792,6 +1766,11 @@ _bar_del(void *data, Evas *e EINA_UNUSED,
> > Evas_Object *obj EINA_UNUSED, void *ev
> >     eina_hash_free(inst->icons_clients_hash);
> >     luncher_instances = eina_list_remove(luncher_instances, inst);
> >     free(inst);
> > +   if (!eina_list_count(luncher_instances))
> > +     {
> > +        EINA_LIST_FREE(handlers, handler)
> > +          E_FREE_FUNC(handler, ecore_event_handler_del);
> > +     }
> >  }
> >
> >  static void
> > @@ -1894,15 +1873,11 @@ _bar_removed_cb(void *data, Evas_Object *obj
> > EINA_UNUSED, void *event_data)
> >  {
> >     Instance *inst = data;
> >     char buf[4096];
> > -   Ecore_Event_Handler *handler;
> >
> >     if (inst->o_main != event_data) return;
> >     if (e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s",
> > inst->cfg->dir) >= sizeof(buf))
> >       return;
> >
> > -   EINA_LIST_FREE(handlers, handler)
> > -     E_FREE_FUNC(handler, ecore_event_handler_del);
> > -
> >     E_FREE_FUNC(inst->iconify_provider, e_comp_object_effect_mover_del);
> >
> >     luncher_config->items = eina_list_remove(luncher_config->items,
> > inst->cfg);
> > @@ -2108,30 +2083,8 @@ bar_reorder(Instance *inst)
> >  EINTERN void
> >  bar_config_updated(Instance *inst)
> >  {
> > -   Ecore_Event_Handler *handler;
> >     const char *drop[] = { "enlightenment/desktop",
> > "enlightenment/border", "text/uri-list" };
> >
> > -   EINA_LIST_FREE(handlers, handler)
> > -     E_FREE_FUNC(handler, ecore_event_handler_del);
> > -
> > -   E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME,
> > -                         _bar_cb_update_icons, NULL);
> > -   E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE,
> > -                         _bar_cb_update_icons, NULL);
> > -   if (inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
> > -     {
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW,
> > -                              _bar_cb_exec_new, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW_CLIENT,
> > -                              _bar_cb_exec_new, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_PROPERTY,
> > -                              _bar_cb_exec_client_prop, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_DEL,
> > -                              _bar_cb_exec_del, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_REMOVE,
> > -                              _bar_cb_client_remove, NULL);
> > -     }
> > -
> >     if (!inst->iconify_provider && inst->cfg->type !=
> > E_LUNCHER_MODULE_LAUNCH_ONLY)
> >       {
> >          inst->iconify_provider = e_comp_object_effect_mover_add(80,
> > "e,action,*iconify",
> > @@ -2186,22 +2139,25 @@ bar_create(Evas_Object *parent, int *id,
> > E_Gadget_Site_Orient orient EINA_UNUSED
> >     evas_object_smart_callback_add(parent, "gadget_removed",
> > _bar_removed_cb, inst);
> >     evas_object_show(inst->o_main);
> >
> > -   E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME,
> > -                         _bar_cb_update_icons, NULL);
> > -   E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE,
> > -                         _bar_cb_update_icons, NULL);
> > -   if (inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
> > +   if (!eina_list_count(handlers))
> >       {
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW,
> > -                              _bar_cb_exec_new, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW_CLIENT,
> > -                              _bar_cb_exec_new, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_PROPERTY,
> > -                              _bar_cb_exec_client_prop, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_DEL,
> > -                              _bar_cb_exec_del, NULL);
> > -        E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_REMOVE,
> > -                              _bar_cb_client_remove, NULL);
> > +        E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME,
> > +                              _bar_cb_update_icons, NULL);
> > +        E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE,
> > +                              _bar_cb_update_icons, NULL);
> > +        if (inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY)
> > +          {
> >
>
> If multiple gadgets exist and the first one fails this test then the
> handlers can never be created.
>

    If multiple gadgets exist, every one of them will call bar_create thus
every one will run this check -- if the first one "fails" the test, then it
creates the handlers.  if it passes the test and skips the creation of the
handlers, but the second gadget fails the test, then it will create the
handlers.  I'm not sure I'm seeing your point?


>
> > +             E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW,
> > +                                   _bar_cb_exec_new, NULL);
> > +             E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_NEW_CLIENT,
> > +                                   _bar_cb_exec_new, NULL);
> > +             E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_PROPERTY,
> > +                                   _bar_cb_exec_client_prop, NULL);
> > +             E_LIST_HANDLER_APPEND(handlers, E_EVENT_EXEC_DEL,
> > +                                   _bar_cb_exec_del, NULL);
> > +             E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_REMOVE,
> > +                                   _bar_cb_client_remove, NULL);
> > +          }
> >       }
> >     if (inst->cfg->id < 0) return inst->o_main;
> >     luncher_instances = eina_list_append(luncher_instances, inst);
> >
> > --
> >
> >
> >
>
> ------------------------------------------------------------------------------
> 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
>
------------------------------------------------------------------------------
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