move shelf visible detection code from e_desk to e_shelf

SVN revision: 77416
This commit is contained in:
Mike Blumenkrantz 2012-10-04 09:53:52 +00:00
parent ae68c2d7a9
commit b0df4fc70f
3 changed files with 28 additions and 24 deletions

View File

@ -303,30 +303,7 @@ e_desk_show(E_Desk *desk)
EINA_LIST_FOREACH(e_shelf_list(), l, es)
{
Eina_List *ll;
E_Config_Shelf *cf_es;
E_Zone *zone;
E_Config_Shelf_Desk *sd;
int show_shelf = 0;
if (!es) continue;
if (!es->cfg->desk_show_mode) continue;
cf_es = es->cfg;
if (!cf_es) continue;
zone = desk->zone;
if (cf_es->zone != (int)zone->num) continue;
EINA_LIST_FOREACH(es->cfg->desk_list, ll, sd)
{
if (!sd) continue;
if ((desk->x == sd->x) && (desk->y == sd->y))
{
show_shelf = 1;
break;
}
}
if (show_shelf)
if (e_shelf_desk_visible(es, desk))
e_shelf_show(es);
else
e_shelf_hide(es);

View File

@ -876,6 +876,32 @@ e_shelf_position_calc(E_Shelf *es)
} while (0);
}
EAPI Eina_Bool
e_shelf_desk_visible(E_Shelf *es, E_Desk *desk)
{
Eina_List *ll;
E_Config_Shelf *cf_es;
E_Zone *zone;
E_Config_Shelf_Desk *sd;
EINA_SAFETY_ON_NULL_RETURN_VAL(es, EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(desk, EINA_FALSE);
if (!es->cfg->desk_show_mode) return EINA_TRUE;
cf_es = es->cfg;
if (!cf_es) return EINA_FALSE;
zone = desk->zone;
if (cf_es->zone != (int)zone->num) return EINA_FALSE;
EINA_LIST_FOREACH(es->cfg->desk_list, ll, sd)
{
if (!sd) continue;
if ((desk->x == sd->x) && (desk->y == sd->y))
return EINA_TRUE;
}
return EINA_FALSE;
}
EAPI void
e_shelf_style_set(E_Shelf *es, const char *style)
{

View File

@ -92,5 +92,6 @@ EAPI E_Shelf *e_shelf_config_new(E_Zone *zone, E_Config_Shelf *cf_es);
EAPI void e_shelf_name_set(E_Shelf *es, const char *name);
EAPI void e_shelf_rename_dialog(E_Shelf *es);
EAPI void e_shelf_autohide_set(E_Shelf *es, Eina_Bool autohide);
EAPI Eina_Bool e_shelf_desk_visible(E_Shelf *es, E_Desk *desk);
#endif
#endif