From 32bcde16af62de1d4808012df88b2b043b4ce5f3 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 18 Feb 2013 13:43:29 +0000 Subject: [PATCH] add e_gadcon_client_visible_get() SVN revision: 84055 --- src/bin/e_gadcon.c | 32 ++++++++++++++++++++++++++++++++ src/bin/e_gadcon.h | 2 ++ 2 files changed, 34 insertions(+) diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index 723d29d1b..3f7f1d8b9 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -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; +} diff --git a/src/bin/e_gadcon.h b/src/bin/e_gadcon.h index 31a3842bd..960274aa9 100644 --- a/src/bin/e_gadcon.h +++ b/src/bin/e_gadcon.h @@ -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) \ { \