mini-freeze TODO items fixed :)

SVN revision: 13109
This commit is contained in:
Carsten Haitzler 2005-01-27 15:17:09 +00:00
parent 2af32159f0
commit 329671a11f
3 changed files with 127 additions and 3 deletions

2
TODO
View File

@ -35,8 +35,6 @@ ISSUES:
* pager needs 1 pager face per zone by default (optionally able to be turned off)
* pager needs to be able to split off each desk in a zone it a different gadget
* pager right click menu needs to do a lot more (as with clock)
* initial placement of pager and clock seems wrong (overlap deny code?)
* gadman overlay deny doesnt work for edge only gadgets
* gadman gadget menu needs icons :)
* add a menu item to each gadman client menu to edge editing mode
* pager needs an overhaul

View File

@ -650,8 +650,132 @@ _e_gadman_client_overlap_deny(E_Gadman_Client *gmc)
ox = gmc->x;
oy = gmc->y;
ok = 0;
if ((gmc->policy & 0xff) == E_GADMAN_POLICY_EDGES)
{
if ((gmc->edge == E_GADMAN_EDGE_LEFT) ||
(gmc->edge == E_GADMAN_EDGE_RIGHT))
{
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
gmc2 = l->data;
if (gmc != gmc2)
{
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
ok = 0;
gmc->y = gmc2->y + gmc2->h;
}
}
}
if (ok) return;
if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
ok = 1;
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
gmc2 = l->data;
if (gmc != gmc2)
{
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
ok = 0;
break;
}
}
}
if (ok)
{
_e_gadman_client_geometry_to_align(gmc);
return;
}
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
if (gmc != gmc2)
{
gmc2 = l->data;
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
gmc->y = gmc2->y - gmc->h;
}
}
}
if (gmc->y < gmc->zone->y)
gmc->y = gmc->zone->y;
}
else if ((gmc->edge == E_GADMAN_EDGE_TOP) ||
(gmc->edge == E_GADMAN_EDGE_BOTTOM))
{
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
gmc2 = l->data;
if (gmc != gmc2)
{
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
ok = 0;
gmc->x = gmc2->x + gmc2->w;
}
}
}
if (ok) return;
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
ok = 1;
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
gmc2 = l->data;
if (gmc != gmc2)
{
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
ok = 0;
break;
}
}
}
if (ok)
{
_e_gadman_client_geometry_to_align(gmc);
return;
}
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
if (gmc != gmc2)
{
gmc2 = l->data;
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
gmc->x = gmc2->x - gmc->w;
}
}
}
if (gmc->x < gmc->zone->x)
gmc->x = gmc->zone->x;
}
_e_gadman_client_geometry_to_align(gmc);
return;
}
while ((!ok) && (iterate < 1000))
{
ok = 1;
for (l = gmc->zone->container->gadman->clients; l; l = l->next)
{
E_Gadman_Client *gmc2;
@ -662,10 +786,12 @@ _e_gadman_client_overlap_deny(E_Gadman_Client *gmc)
if ((E_SPANS_COMMON(gmc->x, gmc->w, gmc2->x, gmc2->w)) &&
(E_SPANS_COMMON(gmc->y, gmc->h, gmc2->y, gmc2->h)))
{
ok = 0;
gmc->x = gmc2->x + gmc2->w;
}
}
}
if (ok) break;
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
gmc->x = gmc->zone->x + gmc->zone->w - gmc->w;
ok = 1;

View File

@ -211,7 +211,7 @@ _pager_init(E_Module *m)
e_gadman_client_min_size_set(e->gmc, 8, 8);
e_gadman_client_max_size_set(e->gmc, 256, 256);
e_gadman_client_auto_size_set(e->gmc, 64, 64);
e_gadman_client_align_set(e->gmc, 0.0, 0.5);
e_gadman_client_align_set(e->gmc, 0.0, 1.0);
e_gadman_client_resize(e->gmc, 80, 60);
e_gadman_client_change_func_set(e->gmc, _pager_cb_gmc_change, e);
e_gadman_client_load(e->gmc);