Luncher: Share common code for dismissing the window preview.

This commit is contained in:
Stephen okra Houston 2016-11-21 13:02:19 -06:00
parent 5efc978513
commit 571f688e32
1 changed files with 26 additions and 56 deletions

View File

@ -369,6 +369,25 @@ _bar_icon_drag_done(E_Drag *drag, int dropped)
bar_recalculate(inst); bar_recalculate(inst);
} }
static Eina_Bool
_bar_icon_preview_hide(void *data)
{
Icon *ic = data;
ic->mouse_out_timer = NULL;
if (!ic->preview)
return EINA_FALSE;
E_FREE_FUNC(ic->preview_box, evas_object_del);
elm_ctxpopup_dismiss(ic->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ic->active = EINA_FALSE;
return EINA_FALSE;
}
static void static void
_bar_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data) _bar_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data)
{ {
@ -392,14 +411,7 @@ _bar_icon_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUS
unsigned int size; unsigned int size;
const char *drag_types[] = { "enlightenment/desktop" }; const char *drag_types[] = { "enlightenment/desktop" };
if (ic->preview) _bar_icon_preview_hide(ic);
{
E_FREE_FUNC(ic->preview_box, evas_object_del);
elm_ctxpopup_dismiss(ic->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ic->active = EINA_FALSE;
}
ic->drag.dnd = 1; ic->drag.dnd = 1;
ic->drag.start = 0; ic->drag.start = 0;
@ -572,34 +584,11 @@ _bar_icon_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED
} }
else if (ev->button == 1 && !ic->in_order) else if (ev->button == 1 && !ic->in_order)
{ {
E_FREE_FUNC(ic->preview_box, evas_object_del); _bar_icon_preview_hide(ic);
elm_ctxpopup_dismiss(ic->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ic->active = EINA_FALSE;
_bar_icon_preview_show(ic); _bar_icon_preview_show(ic);
} }
} }
static Eina_Bool
_bar_icon_preview_hide(void *data)
{
Icon *ic = data;
ic->mouse_out_timer = NULL;
if (!ic->preview)
return EINA_FALSE;
E_FREE_FUNC(ic->preview_box, evas_object_del);
elm_ctxpopup_dismiss(ic->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ic->active = EINA_FALSE;
return EINA_FALSE;
}
static void static void
_bar_icon_preview_item_mouse_out(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED) _bar_icon_preview_item_mouse_out(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EINA_UNUSED)
{ {
@ -675,14 +664,7 @@ _bar_icon_preview_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN
return; return;
} }
e_client_activate(ec, 1); e_client_activate(ec, 1);
if (current_preview) _bar_icon_preview_hide(ic);
{
E_FREE_FUNC(ic->preview_box, evas_object_del);
elm_ctxpopup_dismiss(ic->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ic->active = EINA_FALSE;
}
} }
static void static void
@ -759,11 +741,7 @@ _bar_icon_preview_show(void *data)
{ {
Icon *ico = evas_object_data_get(current_preview, "icon"); Icon *ico = evas_object_data_get(current_preview, "icon");
E_FREE_FUNC(ico->preview_box, evas_object_del); _bar_icon_preview_hide(ico);
elm_ctxpopup_dismiss(ico->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ico->active = EINA_FALSE;
} }
if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients)) if (!eina_list_count(ic->execs) && !eina_list_count(ic->clients))
return EINA_FALSE; return EINA_FALSE;
@ -813,11 +791,7 @@ _bar_icon_preview_show(void *data)
if (!count) if (!count)
{ {
E_FREE_FUNC(ic->preview_box, evas_object_del); _bar_icon_preview_hide(ic);
elm_ctxpopup_dismiss(ic->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
ic->active = EINA_FALSE;
return EINA_FALSE; return EINA_FALSE;
} }
elm_object_content_set(ic->preview, ic->preview_box); elm_object_content_set(ic->preview, ic->preview_box);
@ -854,12 +828,8 @@ _bar_icon_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *even
clients = EINA_TRUE; clients = EINA_TRUE;
if (current_preview && clients && !current_preview_menu) if (current_preview && clients && !current_preview_menu)
{ {
Icon *icon = evas_object_data_get(current_preview, "icon"); Icon *ico = evas_object_data_get(current_preview, "icon");
E_FREE_FUNC(icon->preview_box, evas_object_del); _bar_icon_preview_hide(ico);
elm_ctxpopup_dismiss(icon->preview);
current_preview = NULL;
current_preview_menu = EINA_FALSE;
icon->active = EINA_FALSE;
_bar_icon_preview_show(ic); _bar_icon_preview_show(ic);
} }
else else