add e_gadcon_client_visible_get()

SVN revision: 84055
This commit is contained in:
Mike Blumenkrantz 2013-02-18 13:43:29 +00:00
parent 04330ef7d9
commit 32bcde16af
2 changed files with 34 additions and 0 deletions

View File

@ -5721,3 +5721,35 @@ _e_gadcon_location_change(E_Gadcon_Client *gcc, E_Gadcon_Location *src, E_Gadcon
return 1;
}
EAPI Eina_Bool
e_gadcon_client_visible_get(const E_Gadcon_Client *gcc, const E_Desk *desk)
{
const Eina_List *l, *ll, *lll;
E_Manager *man;
E_Container *con;
E_Zone *zone;
if (!gcc->gadcon) return EINA_FALSE;
switch (gcc->gadcon->location->site)
{
case E_GADCON_SITE_DESKTOP:
return EINA_TRUE; // FIXME for when gadman allows per-desk gadgets
case E_GADCON_SITE_SHELF:
if (desk) return e_shelf_desk_visible(gcc->gadcon->shelf, desk);
EINA_LIST_FOREACH(e_manager_list(), l, man)
EINA_LIST_FOREACH(man->containers, ll, con)
EINA_LIST_FOREACH(con->zones, lll, zone)
if (e_shelf_desk_visible(gcc->gadcon->shelf, e_desk_current_get(zone)))
return EINA_TRUE;
case E_GADCON_SITE_TOOLBAR:
case E_GADCON_SITE_EFM_TOOLBAR:
if (desk) return (gcc->gadcon->toolbar->fwin->border->desk == desk);
EINA_LIST_FOREACH(e_manager_list(), l, man)
EINA_LIST_FOREACH(man->containers, ll, con)
EINA_LIST_FOREACH(con->zones, lll, zone)
if (gcc->gadcon->toolbar->fwin->border->desk == e_desk_current_get(zone)) return EINA_TRUE;
default:
break;
}
return EINA_FALSE;
}

View File

@ -365,6 +365,8 @@ EAPI void e_gadcon_client_add_location_menu(E_Gadcon_Client *
EAPI void e_gadcon_drag_finished_cb(E_Drag *drag, int dropped);
EAPI void e_gadcon_client_drag_set(E_Gadcon_Client *gcc);
EAPI Eina_Bool e_gadcon_client_visible_get(const E_Gadcon_Client *gcc, const E_Desk *desk);
#define GADCON_CLIENT_CONFIG_GET(_type, _items, _gc_class, _id) \
if (!_id) \
{ \