forked from enlightenment/enlightenment
redo zone geometry calc to take a desk, add e_zone_desk_useful_geometry_get()
ref T1302
This commit is contained in:
parent
87b9003092
commit
2b90d983a3
|
@ -1223,7 +1223,7 @@ e_zone_fade_handle(E_Zone *zone, int out, double tim)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_zone_useful_geometry_calc(E_Zone *zone)
|
_e_zone_useful_geometry_calc(const E_Zone *zone, int dx, int dy, int *x, int *y, int *w, int *h)
|
||||||
{
|
{
|
||||||
const E_Shelf *shelf;
|
const E_Shelf *shelf;
|
||||||
Eina_List *shelves;
|
Eina_List *shelves;
|
||||||
|
@ -1259,7 +1259,7 @@ _e_zone_useful_geometry_calc(E_Zone *zone)
|
||||||
EINA_LIST_FOREACH(shelf->cfg->desk_list, ll, sd)
|
EINA_LIST_FOREACH(shelf->cfg->desk_list, ll, sd)
|
||||||
{
|
{
|
||||||
if (!sd) continue;
|
if (!sd) continue;
|
||||||
if ((sd->x == zone->desk_x_current) && (sd->y == zone->desk_y_current))
|
if ((sd->x == dx) && (sd->y == dy))
|
||||||
{
|
{
|
||||||
skip_shelf = 0;
|
skip_shelf = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -1313,11 +1313,10 @@ _e_zone_useful_geometry_calc(E_Zone *zone)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zone->useful_geometry.x = zone->x + x0;
|
if (x) *x = zone->x + x0;
|
||||||
zone->useful_geometry.y = zone->y + yy0;
|
if (y) *y = zone->y + yy0;
|
||||||
zone->useful_geometry.w = x1 - x0;
|
if (w) *w = x1 - x0;
|
||||||
zone->useful_geometry.h = yy1 - yy0;
|
if (h) *h = yy1 - yy0;
|
||||||
zone->useful_geometry.dirty = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1330,26 +1329,39 @@ e_zone_useful_geometry_get(E_Zone *zone,
|
||||||
int *w,
|
int *w,
|
||||||
int *h)
|
int *h)
|
||||||
{
|
{
|
||||||
Eina_List *l;
|
|
||||||
E_Shelf *shelf;
|
E_Shelf *shelf;
|
||||||
|
int zx, zy, zw, zh;
|
||||||
|
Eina_Bool calc = EINA_TRUE;
|
||||||
|
|
||||||
E_OBJECT_CHECK(zone);
|
E_OBJECT_CHECK(zone);
|
||||||
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||||
|
|
||||||
if (!zone->useful_geometry.dirty)
|
if (!zone->useful_geometry.dirty)
|
||||||
{
|
{
|
||||||
EINA_LIST_FOREACH(e_shelf_list(), l, shelf)
|
Eina_List *l = e_shelf_list_all();
|
||||||
|
calc = EINA_FALSE;
|
||||||
|
EINA_LIST_FREE(l, shelf)
|
||||||
{
|
{
|
||||||
if (!shelf->cfg) continue;
|
if (!shelf->cfg) continue;
|
||||||
if (shelf->cfg->desk_show_mode)
|
if (shelf->cfg->desk_show_mode)
|
||||||
{
|
{
|
||||||
_e_zone_useful_geometry_calc(zone);
|
_e_zone_useful_geometry_calc(zone, zone->desk_x_current, zone->desk_y_current, &zx, &zy, &zw, &zh);
|
||||||
|
calc = EINA_TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
eina_list_free(l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_e_zone_useful_geometry_calc(zone);
|
_e_zone_useful_geometry_calc(zone, zone->desk_x_current, zone->desk_y_current, &zx, &zy, &zw, &zh);
|
||||||
|
zone->useful_geometry.dirty = 0;
|
||||||
|
if (calc)
|
||||||
|
{
|
||||||
|
zone->useful_geometry.x = zx;
|
||||||
|
zone->useful_geometry.y = zy;
|
||||||
|
zone->useful_geometry.w = zw;
|
||||||
|
zone->useful_geometry.h = zh;
|
||||||
|
}
|
||||||
|
|
||||||
if (x) *x = zone->useful_geometry.x;
|
if (x) *x = zone->useful_geometry.x;
|
||||||
if (y) *y = zone->useful_geometry.y;
|
if (y) *y = zone->useful_geometry.y;
|
||||||
|
@ -1357,6 +1369,17 @@ e_zone_useful_geometry_get(E_Zone *zone,
|
||||||
if (h) *h = zone->useful_geometry.h;
|
if (h) *h = zone->useful_geometry.h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_zone_desk_useful_geometry_get(const E_Zone *zone, const E_Desk *desk, int *x, int *y, int *w, int *h)
|
||||||
|
{
|
||||||
|
E_OBJECT_CHECK(zone);
|
||||||
|
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||||
|
E_OBJECT_CHECK(desk);
|
||||||
|
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
|
||||||
|
|
||||||
|
_e_zone_useful_geometry_calc(zone, desk->x, desk->y, x, y, w, h);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mark as dirty so e_zone_useful_geometry_get() will need to recalculate.
|
* Mark as dirty so e_zone_useful_geometry_get() will need to recalculate.
|
||||||
*
|
*
|
||||||
|
|
|
@ -158,6 +158,7 @@ EAPI void e_zone_edge_win_layer_set(E_Zone *zone, E_Layer layer);
|
||||||
|
|
||||||
EAPI void e_zone_useful_geometry_dirty(E_Zone *zone);
|
EAPI void e_zone_useful_geometry_dirty(E_Zone *zone);
|
||||||
EAPI void e_zone_useful_geometry_get(E_Zone *zone, int *x, int *y, int *w, int *h);
|
EAPI void e_zone_useful_geometry_get(E_Zone *zone, int *x, int *y, int *w, int *h);
|
||||||
|
EAPI void e_zone_desk_useful_geometry_get(const E_Zone *zone, const E_Desk *desk, int *x, int *y, int *w, int *h);
|
||||||
|
|
||||||
EAPI void e_zone_fade_handle(E_Zone *zone, int out, double tim);
|
EAPI void e_zone_fade_handle(E_Zone *zone, int out, double tim);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue