okra pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=b302f1047cd73690c08dbf34570c229c90f472bb

commit b302f1047cd73690c08dbf34570c229c90f472bb
Author: Stephen 'Okra' Houston <smhousto...@gmail.com>
Date:   Thu Apr 27 15:14:30 2017 -0500

    Luncher: Make current preview tracking per instance.
---
 src/modules/luncher/bar.c     | 43 +++++++++++++++++++++----------------------
 src/modules/luncher/luncher.h |  2 ++
 2 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c
index 3bc1ddc..d0c8f41 100644
--- a/src/modules/luncher/bar.c
+++ b/src/modules/luncher/bar.c
@@ -1,7 +1,5 @@
 #include "luncher.h"
 static Eina_List *handlers;
-static Evas_Object *current_preview;
-static Eina_Bool current_preview_menu;
 static Eina_Bool _bar_icon_preview_show(void *data);
 static Eina_Bool _bar_icon_preview_hide(void *data);
 static void      _bar_icon_del(Instance *inst, Icon *ic);
@@ -489,8 +487,8 @@ _bar_icon_preview_hide(void *data)
    E_FREE_FUNC(ic->preview_scroller, evas_object_del);
    elm_ctxpopup_dismiss(ic->preview);
    ic->preview_dismissed = EINA_TRUE;
-   current_preview = NULL;
-   current_preview_menu = EINA_FALSE;
+   ic->inst->current_preview = NULL;
+   ic->inst->current_preview_menu = EINA_FALSE;
    ic->active = EINA_FALSE;
 
    return EINA_FALSE;
@@ -768,7 +766,7 @@ _bar_icon_preview_mouse_out(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj EI
 {
    Icon *ic = data;
 
-   if (current_preview_menu)
+   if (ic->inst->current_preview_menu)
      return;
    E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
    ic->mouse_out_timer = ecore_timer_loop_add(0.25, _bar_icon_preview_hide, 
ic);
@@ -796,18 +794,18 @@ _bar_icon_preview_menu_hide(void *data, Evas *e 
EINA_UNUSED, Evas_Object *obj, v
      {
         if (ic->preview)
           {
-             current_preview_menu = EINA_FALSE;
+             ic->inst->current_preview_menu = EINA_FALSE;
              _bar_icon_preview_mouse_out(ic, NULL, NULL, NULL);
           }
      }
 }
 
 static void
-_bar_icon_preview_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event_data)
+_bar_icon_preview_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, 
void *event_data)
 {
    E_Client *ec = data;
    Evas_Event_Mouse_Up *ev = event_data;
-   Icon *ic = evas_object_data_get(current_preview, "icon");
+   Icon *ic = evas_object_data_get(obj, "icon");
 
    if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
    if (_bar_check_modifiers(ev->modifiers)) return;
@@ -817,7 +815,7 @@ _bar_icon_preview_mouse_up(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj EIN
         e_int_client_menu_show(ec, ev->canvas.x, ev->canvas.y, 0, 
ev->timestamp);
         evas_object_event_callback_add(ec->border_menu->comp_object, 
EVAS_CALLBACK_HIDE,
             _bar_icon_preview_menu_hide, ic);
-        current_preview_menu = EINA_TRUE;
+        ic->inst->current_preview_menu = EINA_TRUE;
         return;
      }
    e_client_activate(ec, 1);
@@ -838,6 +836,7 @@ _bar_icon_preview_client_add(Icon *ic, E_Client *ec)
    Evas_Object *layout, *label, *img;
 
    layout = elm_layout_add(ic->preview_box);
+   evas_object_data_set(layout, "icon", ic);
    e_theme_edje_object_set(layout, "e/gadget/luncher/preview",
        "e/gadget/luncher/preview");
    evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 
EVAS_HINT_EXPAND);
@@ -895,8 +894,8 @@ _bar_icon_preview_show(void *data)
 
    orient = e_gadget_site_orient_get(e_gadget_site_get(ic->inst->o_main));
 
-   if (current_preview && (current_preview != ic->preview))
-     _bar_icon_preview_hide(evas_object_data_get(current_preview, "icon"));
+   if (ic->inst->current_preview && (ic->inst->current_preview != ic->preview))
+     _bar_icon_preview_hide(evas_object_data_get(ic->inst->current_preview, 
"icon"));
    if (ic->preview && !ic->preview_dismissed)
      _bar_icon_preview_hide(ic);
    ic->preview_dismissed = EINA_FALSE;
@@ -967,7 +966,7 @@ _bar_icon_preview_show(void *data)
    evas_object_data_del(ic->preview, "icon");
    evas_object_data_set(ic->preview, "icon", ic);
    evas_object_show(ic->preview);
-   current_preview = ic->preview;
+   ic->inst->current_preview = ic->preview;
 
    return EINA_FALSE;
 }
@@ -989,11 +988,11 @@ _bar_icon_mouse_in(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *even
    E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
    if (eina_list_count(ic->execs) || eina_list_count(ic->clients))
      clients = EINA_TRUE;
-   if (clients && current_preview && !current_preview_menu)
+   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 && !current_preview)
+   else if (clients && !ic->inst->current_preview)
      ic->mouse_in_timer = ecore_timer_loop_add(0.3, _bar_icon_preview_show, 
ic);
 }
   
@@ -1003,7 +1002,7 @@ _bar_exec_new_show(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *even
    Icon *ic = data;
    E_Client *ec = e_comp_object_client_get(obj);
 
-   if (ic->preview && (current_preview == ic->preview))
+   if (ic->preview && (ic->inst->current_preview == ic->preview))
      {
         _bar_icon_preview_client_add(ic, ec);
      }
@@ -1013,11 +1012,11 @@ _bar_exec_new_show(void *data, Evas *e EINA_UNUSED, 
Evas_Object *obj, void *even
           {
              E_FREE_FUNC(ic->mouse_out_timer, ecore_timer_del);
              E_FREE_FUNC(ic->mouse_in_timer, ecore_timer_del);
-             if (current_preview && !current_preview_menu)
+             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 (!current_preview)
+             else if (!ic->inst->current_preview)
                ic->mouse_in_timer = ecore_timer_loop_add(0.3, 
_bar_icon_preview_show, ic);
           }
      }
@@ -1337,7 +1336,7 @@ _bar_cb_client_remove(void *data EINA_UNUSED, int type 
EINA_UNUSED, E_Event_Clie
                   if (!ic->in_order)
                     _bar_icon_del(inst, ic);
                }
-             else if (ic->preview && (current_preview == ic->preview))
+             else if (ic->preview && (inst->current_preview == ic->preview))
                { 
                   _bar_icon_preview_show(ic);
                }
@@ -1386,7 +1385,7 @@ _bar_cb_exec_del(void *data EINA_UNUSED, int type 
EINA_UNUSED, E_Exec_Instance *
                   if (!ic->in_order)
                     _bar_icon_del(inst, ic);
                }
-             else if (ic->preview && (current_preview == ic->preview))
+             else if (ic->preview && (inst->current_preview == ic->preview))
                {
                   _bar_icon_preview_show(ic);
                }
@@ -1502,7 +1501,7 @@ _bar_cb_exec_client_prop(void *data EINA_UNUSED, int type 
EINA_UNUSED, E_Event_C
                        elm_layout_signal_emit(ic->o_layout, ori, "e");
                     }
                }
-             else if (ic->preview && (current_preview == ic->preview))
+             else if (ic->preview && (inst->current_preview == ic->preview))
                {
                   _bar_icon_preview_show(ic);
                }
@@ -2200,8 +2199,8 @@ bar_create(Evas_Object *parent, int *id, 
E_Gadget_Site_Orient orient EINA_UNUSED
    if (inst->cfg->id < 0) return inst->o_main;
    luncher_instances = eina_list_append(luncher_instances, inst);
 
-   current_preview = NULL;
-   current_preview_menu = EINA_FALSE;
+   inst->current_preview = NULL;
+   inst->current_preview_menu = EINA_FALSE;
 
    return inst->o_main;
 }
diff --git a/src/modules/luncher/luncher.h b/src/modules/luncher/luncher.h
index 773f3c8..996e987 100644
--- a/src/modules/luncher/luncher.h
+++ b/src/modules/luncher/luncher.h
@@ -51,6 +51,7 @@ struct _Instance
    Evas_Object         *o_icon_con;
    Evas_Object         *drop_handler;
    Evas_Object         *place_holder;
+   Evas_Object *current_preview;
    E_Order             *order;
    Eina_List           *icons;
    Eina_Hash           *icons_desktop_hash;
@@ -62,6 +63,7 @@ struct _Instance
    Eina_Bool            main_del;
    Eina_Bool            bar;
    Eina_Bool            inside;
+   Eina_Bool current_preview_menu;
    Config_Item         *cfg;
    Icon                *drop_before;
 };

-- 


Reply via email to