fix shape change handling to... skip same shape changes
SVN revision: 22389
This commit is contained in:
parent
c95c6eb12e
commit
3295ab33b7
|
@ -3,6 +3,9 @@
|
||||||
*/
|
*/
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
|
/* FIXME: this code is quite bad.. formatting, correctness, list management -
|
||||||
|
* overly long and complex... */
|
||||||
|
|
||||||
typedef struct _E_Maximize_Rect E_Maximize_Rect;
|
typedef struct _E_Maximize_Rect E_Maximize_Rect;
|
||||||
|
|
||||||
struct _E_Maximize_Rect
|
struct _E_Maximize_Rect
|
||||||
|
@ -27,21 +30,18 @@ struct _m_zone
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _e_maximize_border_rects_fill(E_Border *bd, Evas_List *list, int *x1, int *y1, int *x2, int *y2);
|
static void _e_maximize_border_rects_fill(E_Border *bd, Evas_List *list, int *x1, int *y1, int *x2, int *y2);
|
||||||
|
static int _e_mzone_gadman_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Client *gmc);
|
||||||
static int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Client *gmc);
|
static int _e_mzone_shelf_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Shelf *es);
|
||||||
|
static int _e_mzone_cb_square_reverse_sort(void *e1, void *e2);
|
||||||
int _e_mzone_cb_square_reverse_sort(void *e1, void *e2);
|
static int _e_mzone_cb_width_reverse_sort(void *e1, void *e2);
|
||||||
int _e_mzone_cb_width_reverse_sort(void *e1, void *e2);
|
static int _e_mzone_cb_height_reverse_sort(void *e1, void *e2); // not used yet
|
||||||
int _e_mzone_cb_height_reverse_sort(void *e1, void *e2); // not used yet
|
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_maximize_border_gadman_fit(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
e_maximize_border_gadman_fit(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||||
{
|
{
|
||||||
Evas_List *l, *ll;
|
Evas_List *l, *ll;
|
||||||
|
|
||||||
Evas_List *mzones = NULL;
|
Evas_List *mzones = NULL;
|
||||||
Evas_List *tmp_mzones = NULL;
|
Evas_List *tmp_mzones = NULL;
|
||||||
|
|
||||||
struct _m_zone *mzone = NULL;
|
struct _m_zone *mzone = NULL;
|
||||||
|
|
||||||
mzone = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
mzone = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
@ -62,12 +62,13 @@ e_maximize_border_gadman_fit(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||||
|
|
||||||
mzones = evas_list_append(mzones, mzone);
|
mzones = evas_list_append(mzones, mzone);
|
||||||
|
|
||||||
for(l = bd->zone->container->gadman->clients; l; l = l->next)
|
for (l = bd->zone->container->gadman->clients; l; l = l->next)
|
||||||
{
|
{
|
||||||
E_Gadman_Client *gmc;
|
E_Gadman_Client *gmc;
|
||||||
|
|
||||||
gmc = l->data;
|
gmc = l->data;
|
||||||
if (gmc->zone != bd->zone || gmc->policy & E_GADMAN_POLICY_ALLOW_OVERLAP) continue;
|
if ((gmc->zone != bd->zone) ||
|
||||||
|
(gmc->policy & E_GADMAN_POLICY_ALLOW_OVERLAP)) continue;
|
||||||
|
|
||||||
tmp_mzones = mzones;
|
tmp_mzones = mzones;
|
||||||
mzones = NULL;
|
mzones = NULL;
|
||||||
|
@ -77,13 +78,43 @@ e_maximize_border_gadman_fit(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||||
int res;
|
int res;
|
||||||
mzone = ll->data;
|
mzone = ll->data;
|
||||||
|
|
||||||
res = _e_mzone_split(&mzones, mzone, gmc);
|
res = _e_mzone_gadman_split(&mzones, mzone, gmc);
|
||||||
|
if (res == 0)
|
||||||
|
{
|
||||||
|
mzones = evas_list_append(mzones, mzone);
|
||||||
|
ll->data = NULL;
|
||||||
|
}
|
||||||
|
else if (res == 2)
|
||||||
|
;
|
||||||
|
else if (res == -1)
|
||||||
|
; /* mem problems. Let ignor them yet */
|
||||||
|
|
||||||
|
if (ll->data != NULL)
|
||||||
|
{
|
||||||
|
free(ll->data);
|
||||||
|
ll->data = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
evas_list_free(tmp_mzones);
|
||||||
|
tmp_mzones = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (l = e_shelf_list(); l; l = l->next)
|
||||||
|
{
|
||||||
|
E_Shelf *es;
|
||||||
|
|
||||||
|
es = l->data;
|
||||||
|
if (es->zone != bd->zone) continue;
|
||||||
|
printf("ES\n");
|
||||||
|
for (ll = tmp_mzones; ll; ll = ll->next)
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
mzone = ll->data;
|
||||||
|
|
||||||
|
res = _e_mzone_shelf_split(&mzones, mzone, es);
|
||||||
if (res == 0)
|
if (res == 0)
|
||||||
{
|
{
|
||||||
if(mzones == NULL)
|
|
||||||
mzones = evas_list_append(mzones, mzone);
|
mzones = evas_list_append(mzones, mzone);
|
||||||
else
|
|
||||||
evas_list_append(mzones , mzone);
|
|
||||||
ll->data = NULL;
|
ll->data = NULL;
|
||||||
}
|
}
|
||||||
else if (res == 2)
|
else if (res == 2)
|
||||||
|
@ -116,7 +147,7 @@ e_maximize_border_gadman_fit(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||||
{
|
{
|
||||||
if ( ((struct _m_zone *)l->data)->area ==
|
if ( ((struct _m_zone *)l->data)->area ==
|
||||||
((struct _m_zone *)mzones->data)->area)
|
((struct _m_zone *)mzones->data)->area)
|
||||||
evas_list_append(mzones, l->data);
|
mzones = evas_list_append(mzones, l->data);
|
||||||
else
|
else
|
||||||
free(l->data);
|
free(l->data);
|
||||||
}
|
}
|
||||||
|
@ -267,6 +298,15 @@ e_maximize_border_gadman_fill(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||||
if ((gmc->zone != bd->zone)) continue;
|
if ((gmc->zone != bd->zone)) continue;
|
||||||
OBSTACLE(gmc->x, gmc->y, gmc->x + gmc->w, gmc->y + gmc->h);
|
OBSTACLE(gmc->x, gmc->y, gmc->x + gmc->w, gmc->y + gmc->h);
|
||||||
}
|
}
|
||||||
|
for (l = e_shelf_list(); l; l = l->next)
|
||||||
|
{
|
||||||
|
E_Shelf *es;
|
||||||
|
|
||||||
|
es = l->data;
|
||||||
|
if (es->zone != bd->zone) continue;
|
||||||
|
printf("OBS: %i %i %ix%i\n", es->x, es->y, es->w, es->h);
|
||||||
|
OBSTACLE(es->x, es->y, es->x + es->w, es->y + es->h);
|
||||||
|
}
|
||||||
if (rects)
|
if (rects)
|
||||||
{
|
{
|
||||||
_e_maximize_border_rects_fill(bd, rects, x1, y1, x2, y2);
|
_e_maximize_border_rects_fill(bd, rects, x1, y1, x2, y2);
|
||||||
|
@ -302,7 +342,7 @@ e_maximize_border_border_fill(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
_e_maximize_border_rects_fill(E_Border *bd, Evas_List *rects, int *x1, int *y1, int *x2, int *y2)
|
_e_maximize_border_rects_fill(E_Border *bd, Evas_List *rects, int *x1, int *y1, int *x2, int *y2)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
@ -388,7 +428,8 @@ _e_maximize_border_rects_fill(E_Border *bd, Evas_List *rects, int *x1, int *y1,
|
||||||
if (y2) *y2 = cy2;
|
if (y2) *y2 = cy2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Client *gmc)
|
static int
|
||||||
|
_e_mzone_gadman_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Client *gmc)
|
||||||
{
|
{
|
||||||
int ii;
|
int ii;
|
||||||
int mzone_splitted = 0;
|
int mzone_splitted = 0;
|
||||||
|
@ -407,7 +448,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
for (ii = 0; ii < 8; ii ++)
|
for (ii = 0; ii < 8; ii ++)
|
||||||
{
|
{
|
||||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
if(mzone_split == NULL)
|
if (mzone_split == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
switch(ii)
|
switch(ii)
|
||||||
|
@ -461,10 +502,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
} // if
|
} // if
|
||||||
else if (gmc->x + gmc->w > mzone->x1 && gmc->x + gmc->w < mzone->x2 &&
|
else if (gmc->x + gmc->w > mzone->x1 && gmc->x + gmc->w < mzone->x2 &&
|
||||||
|
@ -505,10 +543,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 && gmc->y <= mzone->y1 &&
|
else if (gmc->x > mzone->x1 && gmc->y <= mzone->y1 &&
|
||||||
|
@ -561,10 +596,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||||
|
@ -606,10 +638,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||||
|
@ -663,10 +692,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||||
|
@ -708,10 +734,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = gmc->y;
|
mzone_split->y2 = gmc->y;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 &&
|
else if (gmc->x > mzone->x1 &&
|
||||||
|
@ -765,10 +788,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x <= mzone->x1 &&
|
else if (gmc->x <= mzone->x1 &&
|
||||||
|
@ -810,10 +830,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x <= mzone->x1 &&
|
else if (gmc->x <= mzone->x1 &&
|
||||||
|
@ -867,10 +884,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x <= mzone->x1 && gmc->y <= mzone->y1 &&
|
else if (gmc->x <= mzone->x1 && gmc->y <= mzone->y1 &&
|
||||||
|
@ -888,10 +902,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->x2 = mzone->x2;
|
mzone_split->x2 = mzone->x2;
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
|
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
else if (gmc->x <= mzone->x1 &&
|
else if (gmc->x <= mzone->x1 &&
|
||||||
gmc->x + gmc->w >= mzone->x2 &&
|
gmc->x + gmc->w >= mzone->x2 &&
|
||||||
|
@ -940,10 +951,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->x2 = mzone->x2;
|
mzone_split->x2 = mzone->x2;
|
||||||
mzone_split->y2 = gmc->y;
|
mzone_split->y2 = gmc->y;
|
||||||
|
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
else if (gmc->x <= mzone->x1 &&
|
else if (gmc->x <= mzone->x1 &&
|
||||||
gmc->y <= mzone->y1 &&
|
gmc->y <= mzone->y1 &&
|
||||||
|
@ -960,10 +968,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->x2 = mzone->x2;
|
mzone_split->x2 = mzone->x2;
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
|
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 &&
|
else if (gmc->x > mzone->x1 &&
|
||||||
gmc->x + gmc->w < mzone->x2 &&
|
gmc->x + gmc->w < mzone->x2 &&
|
||||||
|
@ -992,10 +997,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||||
|
@ -1013,10 +1015,7 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
mzone_split->x2 = gmc->x;
|
mzone_split->x2 = gmc->x;
|
||||||
mzone_split->y2 = mzone->y2;
|
mzone_split->y2 = mzone->y2;
|
||||||
|
|
||||||
if (*add_splits_to == NULL)
|
|
||||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
else
|
|
||||||
evas_list_append(*add_splits_to, mzone_split);
|
|
||||||
}
|
}
|
||||||
else if (gmc->x <= mzone->x1 && gmc->y <= mzone->y1 &&
|
else if (gmc->x <= mzone->x1 && gmc->y <= mzone->y1 &&
|
||||||
gmc->x + gmc->w >= mzone->x2 && gmc->y + gmc->h >= mzone->y2)
|
gmc->x + gmc->w >= mzone->x2 && gmc->y + gmc->h >= mzone->y2)
|
||||||
|
@ -1026,7 +1025,607 @@ int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Cl
|
||||||
|
|
||||||
return mzone_splitted;
|
return mzone_splitted;
|
||||||
}
|
}
|
||||||
int _e_mzone_cb_square_reverse_sort(void *e1, void *e2)
|
|
||||||
|
static int
|
||||||
|
_e_mzone_shelf_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Shelf *es)
|
||||||
|
{
|
||||||
|
int ii;
|
||||||
|
int mzone_splitted = 0;
|
||||||
|
struct _m_zone *mzone_split = NULL;
|
||||||
|
|
||||||
|
if (mzone == NULL || es == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if ((mzone->x2 - mzone->x1) <= 0 || (mzone->y2 - mzone->y1) <= 0)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (es->x > mzone->x1 && es->y > mzone->y1 &&
|
||||||
|
es->x + es->w < mzone->x2 && es->y + es->h < mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 8; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
} // if
|
||||||
|
else if (es->x + es->w > mzone->x1 && es->x + es->w < mzone->x2 &&
|
||||||
|
es->y + es->h > mzone->y1 && es->y + es->h < mzone->y2 &&
|
||||||
|
es->x <= mzone->x1 && es->y <= mzone->y1)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 4; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 && es->y <= mzone->y1 &&
|
||||||
|
es->x + es->w < mzone->x2 &&
|
||||||
|
es->y + es->h > mzone->y1 && es->y + es->h < mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 6; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 && es->x < mzone->x2 &&
|
||||||
|
es->y + es->h > mzone->y1 && es->y + es->h < mzone->y2 &&
|
||||||
|
es->y <= mzone->y1 &&
|
||||||
|
es->x + es->w >= mzone->x2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 4; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 && es->x < mzone->x2 &&
|
||||||
|
es->y > mzone->y1 &&
|
||||||
|
es->y + es->h < mzone->y2 &&
|
||||||
|
es->x + es->w >= mzone->x2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 6; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 && es->x < mzone->x2 &&
|
||||||
|
es->y > mzone->y1 && es->y < mzone->y2 &&
|
||||||
|
es->x + es->w >= mzone->x2 &&
|
||||||
|
es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 4; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 &&
|
||||||
|
es->y > mzone->y1 && es->y < mzone->y2 &&
|
||||||
|
es->x + es->w < mzone->x2 &&
|
||||||
|
es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 6; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
mzone_split->x1 = es->x;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 &&
|
||||||
|
es->y > mzone->y1 && es->y < mzone->y2 &&
|
||||||
|
es->x + es->w > mzone->x1 && es->x + es->w < mzone->x2 &&
|
||||||
|
es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 4; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 &&
|
||||||
|
es->y > mzone->y1 &&
|
||||||
|
es->y + es->h < mzone->y2 &&
|
||||||
|
es->x + es->w > mzone->x1 && es->x + es->w < mzone->x2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 6; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = es->y;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y + es->h;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = es->x + es->w;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 && es->y <= mzone->y1 &&
|
||||||
|
es->x + es->w >= mzone->x2 &&
|
||||||
|
es->y + es->h > mzone->y1 &&
|
||||||
|
es->y + es->h < mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 &&
|
||||||
|
es->x + es->w >= mzone->x2 &&
|
||||||
|
es->y > mzone->y1 && es->y < mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 2; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = es->y + es->h;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (*add_splits_to == NULL)
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
else
|
||||||
|
evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 &&
|
||||||
|
es->x + es->w >= mzone->x2 &&
|
||||||
|
es->y > mzone->y1 && es->y < mzone->y2 &&
|
||||||
|
es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = es->y;
|
||||||
|
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 &&
|
||||||
|
es->y <= mzone->y1 &&
|
||||||
|
es->y + es->h >= mzone->y2 &&
|
||||||
|
es->x + es->w > mzone->x1 && es->x + es->w < mzone->x2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 &&
|
||||||
|
es->x + es->w < mzone->x2 &&
|
||||||
|
es->y <= mzone->y1 &&
|
||||||
|
es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
for (ii = 0; ii < 2; ii ++)
|
||||||
|
{
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
switch(ii)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
mzone_split->x1 = es->x + es->w;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = mzone->x2;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (es->x > mzone->x1 && es->x < mzone->x2 &&
|
||||||
|
es->y <= mzone->y1 &&
|
||||||
|
es->x + es->w >= mzone->x2 &&
|
||||||
|
es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 1;
|
||||||
|
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||||
|
if (mzone_split == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
mzone_split->x1 = mzone->x1;
|
||||||
|
mzone_split->y1 = mzone->y1;
|
||||||
|
mzone_split->x2 = es->x;
|
||||||
|
mzone_split->y2 = mzone->y2;
|
||||||
|
|
||||||
|
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||||
|
}
|
||||||
|
else if (es->x <= mzone->x1 && es->y <= mzone->y1 &&
|
||||||
|
es->x + es->w >= mzone->x2 && es->y + es->h >= mzone->y2)
|
||||||
|
{
|
||||||
|
mzone_splitted = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mzone_splitted;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_mzone_cb_square_reverse_sort(void *e1, void *e2)
|
||||||
{
|
{
|
||||||
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
||||||
struct _m_zone *mz2 = (struct _m_zone *)e2;
|
struct _m_zone *mz2 = (struct _m_zone *)e2;
|
||||||
|
@ -1042,7 +1641,8 @@ int _e_mzone_cb_square_reverse_sort(void *e1, void *e2)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _e_mzone_cb_width_reverse_sort(void *e1, void *e2)
|
static int
|
||||||
|
_e_mzone_cb_width_reverse_sort(void *e1, void *e2)
|
||||||
{
|
{
|
||||||
int w1, w2;
|
int w1, w2;
|
||||||
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
||||||
|
@ -1062,7 +1662,8 @@ int _e_mzone_cb_width_reverse_sort(void *e1, void *e2)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _e_mzone_cb_height_reverse_sort(void *e1, void *e2)
|
static int
|
||||||
|
_e_mzone_cb_height_reverse_sort(void *e1, void *e2)
|
||||||
{
|
{
|
||||||
int h1, h2;
|
int h1, h2;
|
||||||
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
||||||
|
|
|
@ -205,6 +205,7 @@ e_popup_idler_before(void)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
orects = pop->shape_rects;
|
orects = pop->shape_rects;
|
||||||
|
changed = 0;
|
||||||
for (i = 0; i < num; i++)
|
for (i = 0; i < num; i++)
|
||||||
{
|
{
|
||||||
if (rects[i].x < 0)
|
if (rects[i].x < 0)
|
||||||
|
@ -231,7 +232,6 @@ e_popup_idler_before(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// changed = 0;
|
|
||||||
}
|
}
|
||||||
if (changed)
|
if (changed)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue