forked from enlightenment/efl
parent
0bc1fb60b3
commit
25153f7298
|
@ -61,6 +61,7 @@ struct _e_xid
|
||||||
int mouse_in;
|
int mouse_in;
|
||||||
int depth;
|
int depth;
|
||||||
int gravity;
|
int gravity;
|
||||||
|
int coords_invalid;
|
||||||
};
|
};
|
||||||
|
|
||||||
void e_del_child(Window win, Window child);
|
void e_del_child(Window win, Window child);
|
||||||
|
|
|
@ -501,8 +501,11 @@ e_window_move(Window win, int x, int y)
|
||||||
xid = e_validate_xid(win);
|
xid = e_validate_xid(win);
|
||||||
if (xid)
|
if (xid)
|
||||||
{
|
{
|
||||||
if ((xid->x == x) && (xid->y == y))
|
if (!xid->coords_invalid)
|
||||||
return;
|
{
|
||||||
|
if ((xid->x == x) && (xid->y == y))
|
||||||
|
return;
|
||||||
|
}
|
||||||
xid->x = x;
|
xid->x = x;
|
||||||
xid->y = y;
|
xid->y = y;
|
||||||
XMoveWindow(disp, win, x, y);
|
XMoveWindow(disp, win, x, y);
|
||||||
|
@ -523,30 +526,31 @@ if (xid->children) \
|
||||||
{ \
|
{ \
|
||||||
switch (xid2->gravity) \
|
switch (xid2->gravity) \
|
||||||
{ \
|
{ \
|
||||||
case ForgetGravity: /* dunno - check up */ \
|
case UnmapGravity: \
|
||||||
|
xid2->mapped = 0; \
|
||||||
break; \
|
break; \
|
||||||
case NorthWestGravity: \
|
case NorthWestGravity: \
|
||||||
break; \
|
break; \
|
||||||
case NorthGravity: /* not 100% sure */ \
|
case NorthGravity: \
|
||||||
xid2->x += (w - xid->w) / 2; \
|
xid2->x += (w - xid->w) / 2; \
|
||||||
break; \
|
break; \
|
||||||
case NorthEastGravity: \
|
case NorthEastGravity: \
|
||||||
xid2->x += (w - xid->w); \
|
xid2->x += (w - xid->w); \
|
||||||
break; \
|
break; \
|
||||||
case WestGravity: /* not 100% sure */ \
|
case WestGravity: \
|
||||||
xid2->h += (h - xid->h) / 2; \
|
xid2->h += (h - xid->h) / 2; \
|
||||||
break; \
|
break; \
|
||||||
case CenterGravity: /* not 100% sure */ \
|
case CenterGravity: \
|
||||||
xid2->x += (w - xid->w) / 2; \
|
xid2->x += (w - xid->w) / 2; \
|
||||||
xid2->h += (h - xid->h) / 2; \
|
xid2->h += (h - xid->h) / 2; \
|
||||||
break; \
|
break; \
|
||||||
case EastGravity: /* not 100% sure */ \
|
case EastGravity: \
|
||||||
xid2->x += (w - xid->w); \
|
xid2->x += (w - xid->w); \
|
||||||
break; \
|
break; \
|
||||||
case SouthWestGravity: \
|
case SouthWestGravity: \
|
||||||
xid2->y += (h - xid->h); \
|
xid2->y += (h - xid->h); \
|
||||||
break; \
|
break; \
|
||||||
case SouthGravity: /* not 100% sure */ \
|
case SouthGravity: \
|
||||||
xid2->x += (w - xid->w) / 2; \
|
xid2->x += (w - xid->w) / 2; \
|
||||||
xid2->y += (h - xid->h); \
|
xid2->y += (h - xid->h); \
|
||||||
break; \
|
break; \
|
||||||
|
@ -554,7 +558,8 @@ if (xid->children) \
|
||||||
xid2->x += (w - xid->w); \
|
xid2->x += (w - xid->w); \
|
||||||
xid2->y += (h - xid->h); \
|
xid2->y += (h - xid->h); \
|
||||||
break; \
|
break; \
|
||||||
case StaticGravity: /* dunno - check up */ \
|
case StaticGravity: \
|
||||||
|
xid2->coords_invalid = 1; \
|
||||||
break; \
|
break; \
|
||||||
default: \
|
default: \
|
||||||
break; \
|
break; \
|
||||||
|
@ -571,11 +576,15 @@ e_window_resize(Window win, int w, int h)
|
||||||
xid = e_validate_xid(win);
|
xid = e_validate_xid(win);
|
||||||
if (xid)
|
if (xid)
|
||||||
{
|
{
|
||||||
if ((xid->w == w) && (xid->h == h))
|
if (!xid->coords_invalid)
|
||||||
return;
|
{
|
||||||
|
if ((xid->w == w) && (xid->h == h))
|
||||||
|
return;
|
||||||
|
}
|
||||||
REGRAVITATE;
|
REGRAVITATE;
|
||||||
xid->w = w;
|
xid->w = w;
|
||||||
xid->h = h;
|
xid->h = h;
|
||||||
|
xid->coords_invalid = 0;
|
||||||
XResizeWindow(disp, win, w, h);
|
XResizeWindow(disp, win, w, h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -588,13 +597,17 @@ e_window_move_resize(Window win, int x, int y, int w, int h)
|
||||||
xid = e_validate_xid(win);
|
xid = e_validate_xid(win);
|
||||||
if (xid)
|
if (xid)
|
||||||
{
|
{
|
||||||
if ((xid->x == x) && (xid->y == y) && (xid->w == w) && (xid->h == h))
|
if (!xid->coords_invalid)
|
||||||
return;
|
{
|
||||||
|
if ((xid->x == x) && (xid->y == y) && (xid->w == w) && (xid->h == h))
|
||||||
|
return;
|
||||||
|
}
|
||||||
REGRAVITATE;
|
REGRAVITATE;
|
||||||
xid->x = x;
|
xid->x = x;
|
||||||
xid->y = y;
|
xid->y = y;
|
||||||
xid->w = w;
|
xid->w = w;
|
||||||
xid->h = h;
|
xid->h = h;
|
||||||
|
xid->coords_invalid = 0;
|
||||||
XMoveResizeWindow(disp, win, x, y, w, h);
|
XMoveResizeWindow(disp, win, x, y, w, h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1160,6 +1173,19 @@ e_window_get_geometry(Window win, int *x, int *y, int *w, int *h)
|
||||||
|
|
||||||
if (win == 0)
|
if (win == 0)
|
||||||
win = default_root;
|
win = default_root;
|
||||||
|
if (xid->coords_invalid)
|
||||||
|
{
|
||||||
|
Window dw;
|
||||||
|
int rx, ry;
|
||||||
|
unsigned int rw, rh, di;
|
||||||
|
|
||||||
|
XGetGeometry(disp, win, &dw, &rx, &ry, &rw, &rh, &di, &di);
|
||||||
|
xid->x = rx;
|
||||||
|
xid->y = ry;
|
||||||
|
xid->w = (int)rw;
|
||||||
|
xid->h = (int)rh;
|
||||||
|
xid->coords_invalid = 0;
|
||||||
|
}
|
||||||
xid = e_validate_xid(win);
|
xid = e_validate_xid(win);
|
||||||
if (xid)
|
if (xid)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue