From b0df4fc70f893f9cbb8713788ae1bd904355d67b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 4 Oct 2012 09:53:52 +0000 Subject: [PATCH] move shelf visible detection code from e_desk to e_shelf SVN revision: 77416 --- src/bin/e_desk.c | 25 +------------------------ src/bin/e_shelf.c | 26 ++++++++++++++++++++++++++ src/bin/e_shelf.h | 1 + 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index a5ee25c34..a5948457b 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -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); diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index 4d7ae8c8e..4072d8c9d 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -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) { diff --git a/src/bin/e_shelf.h b/src/bin/e_shelf.h index 2d7b9b041..72d908eaf 100644 --- a/src/bin/e_shelf.h +++ b/src/bin/e_shelf.h @@ -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