Add structure for position

This commit is contained in:
Alex Kotov 2021-11-21 02:44:01 +05:00
parent 2d9ff5cb85
commit 87872079a7
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
5 changed files with 158 additions and 114 deletions

190
src/dwm.c
View File

@ -51,12 +51,14 @@
0, \ 0, \
MIN( \ MIN( \
(x) + (w), \ (x) + (w), \
window_area_geometry.x + window_area_geometry.w \ window_area_geometry.position.x \
+ \
window_area_geometry.w \
) \ ) \
- \ - \
MAX( \ MAX( \
(x), \ (x), \
window_area_geometry.x \ window_area_geometry.position.x \
) \ ) \
) \ ) \
* \ * \
@ -64,12 +66,14 @@
0, \ 0, \
MIN( \ MIN( \
(y) + (h), \ (y) + (h), \
window_area_geometry.y + window_area_geometry.h \ window_area_geometry.position.y \
+ \
window_area_geometry.h \
) \ ) \
- \ - \
MAX( \ MAX( \
(y), \ (y), \
window_area_geometry.y \ window_area_geometry.position.y \
) \ ) \
) \ ) \
) )
@ -327,27 +331,35 @@ int applysizehints(
*y = 0; *y = 0;
} }
} else { } else {
if (*x >= m->window_area_geometry.x + m->window_area_geometry.w) { if (
*x
>=
m->window_area_geometry.position.x + m->window_area_geometry.w
) {
*x = *x =
m->window_area_geometry.x m->window_area_geometry.position.x
+ +
m->window_area_geometry.w m->window_area_geometry.w
- -
client_geometry_total_width(&c->state.geometry); client_geometry_total_width(&c->state.geometry);
} }
if (*y >= m->window_area_geometry.y + m->window_area_geometry.h) { if (
*y
>=
m->window_area_geometry.position.y + m->window_area_geometry.h
) {
*y = *y =
m->window_area_geometry.y m->window_area_geometry.position.y
+ +
m->window_area_geometry.h m->window_area_geometry.h
- -
client_geometry_total_height(&c->state.geometry); client_geometry_total_height(&c->state.geometry);
} }
if (*x + *w + 2 * bw <= m->window_area_geometry.x) { if (*x + *w + 2 * bw <= m->window_area_geometry.position.x) {
*x = m->window_area_geometry.x; *x = m->window_area_geometry.position.x;
} }
if (*y + *h + 2 * bw <= m->window_area_geometry.y) { if (*y + *h + 2 * bw <= m->window_area_geometry.position.y) {
*y = m->window_area_geometry.y; *y = m->window_area_geometry.position.y;
} }
} }
@ -408,9 +420,9 @@ int applysizehints(
} }
return ( return (
*x != c->state.geometry.basic.x *x != c->state.geometry.basic.position.x
|| ||
*y != c->state.geometry.basic.y *y != c->state.geometry.basic.position.y
|| ||
*w != c->state.geometry.basic.w *w != c->state.geometry.basic.w
|| ||
@ -555,8 +567,8 @@ void configure(Client *c)
.display = dpy, .display = dpy,
.event = c->win, .event = c->win,
.window = c->win, .window = c->win,
.x = c->state.geometry.basic.x, .x = c->state.geometry.basic.position.x,
.y = c->state.geometry.basic.y, .y = c->state.geometry.basic.position.y,
.width = c->state.geometry.basic.w, .width = c->state.geometry.basic.w,
.height = c->state.geometry.basic.h, .height = c->state.geometry.basic.h,
.border_width = c->state.geometry.border_width, .border_width = c->state.geometry.border_width,
@ -876,8 +888,8 @@ void manage(Window w, XWindowAttributes *wa)
client_state_init(&c->state); client_state_init(&c->state);
c->win = w; c->win = w;
c->state.geometry.basic.x = wa->x; c->state.geometry.basic.position.x = wa->x;
c->state.geometry.basic.y = wa->y; c->state.geometry.basic.position.y = wa->y;
c->state.geometry.basic.w = wa->width; c->state.geometry.basic.w = wa->width;
c->state.geometry.basic.h = wa->height; c->state.geometry.basic.h = wa->height;
c->state.is_floating = false; c->state.is_floating = false;
@ -900,12 +912,12 @@ void manage(Window w, XWindowAttributes *wa)
const int total_width = client_geometry_total_width(&c->state.geometry); const int total_width = client_geometry_total_width(&c->state.geometry);
if ( if (
c->state.geometry.basic.x + total_width c->state.geometry.basic.position.x + total_width
> >
c->mon->screen_geometry.x + c->mon->screen_geometry.w c->mon->screen_geometry.position.x + c->mon->screen_geometry.w
) { ) {
c->state.geometry.basic.x = c->state.geometry.basic.position.x =
c->mon->screen_geometry.x c->mon->screen_geometry.position.x
+ +
c->mon->screen_geometry.w c->mon->screen_geometry.w
- -
@ -916,12 +928,12 @@ void manage(Window w, XWindowAttributes *wa)
client_geometry_total_height(&c->state.geometry); client_geometry_total_height(&c->state.geometry);
if ( if (
c->state.geometry.basic.y + total_height c->state.geometry.basic.position.y + total_height
> >
c->mon->screen_geometry.y + c->mon->screen_geometry.h c->mon->screen_geometry.position.y + c->mon->screen_geometry.h
) { ) {
c->state.geometry.basic.y = c->state.geometry.basic.position.y =
c->mon->screen_geometry.y c->mon->screen_geometry.position.y
+ +
c->mon->screen_geometry.h c->mon->screen_geometry.h
- -
@ -929,10 +941,14 @@ void manage(Window w, XWindowAttributes *wa)
} }
} }
c->state.geometry.basic.x = c->state.geometry.basic.position.x = MAX(
MAX(c->state.geometry.basic.x, c->mon->screen_geometry.x); c->state.geometry.basic.position.x,
c->state.geometry.basic.y = c->mon->screen_geometry.position.x
MAX(c->state.geometry.basic.y, c->mon->screen_geometry.y); );
c->state.geometry.basic.position.y = MAX(
c->state.geometry.basic.position.y,
c->mon->screen_geometry.position.y
);
c->state.geometry.border_width = settings_get_border_width(); c->state.geometry.border_width = settings_get_border_width();
@ -954,12 +970,12 @@ void manage(Window w, XWindowAttributes *wa)
const int total_height = const int total_height =
client_geometry_total_height(&c->state.geometry); client_geometry_total_height(&c->state.geometry);
c->state.geometry.basic.x = c->state.geometry.basic.position.x =
c->mon->screen_geometry.x c->mon->screen_geometry.position.x
+ +
(c->mon->screen_geometry.w - total_width) / 2; (c->mon->screen_geometry.w - total_width) / 2;
c->state.geometry.basic.y = c->state.geometry.basic.position.y =
c->mon->screen_geometry.y c->mon->screen_geometry.position.y
+ +
(c->mon->screen_geometry.h - total_height) / 2; (c->mon->screen_geometry.h - total_height) / 2;
} }
@ -1001,8 +1017,8 @@ void manage(Window w, XWindowAttributes *wa)
XMoveResizeWindow( XMoveResizeWindow(
dpy, dpy,
c->win, c->win,
c->state.geometry.basic.x + 2 * sw, c->state.geometry.basic.position.x + 2 * sw,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
c->state.geometry.basic.w, c->state.geometry.basic.w,
c->state.geometry.basic.h c->state.geometry.basic.h
); );
@ -1038,8 +1054,8 @@ void movemouse(__attribute__((unused)) const Arg *arg)
if (!getrootptr(&x, &y)) return; if (!getrootptr(&x, &y)) return;
const unsigned int snap_distance = settings_get_snap_distance(); const unsigned int snap_distance = settings_get_snap_distance();
const int ocx = c->state.geometry.basic.x; const int ocx = c->state.geometry.basic.position.x;
const int ocy = c->state.geometry.basic.y; const int ocy = c->state.geometry.basic.position.y;
Time lasttime = 0; Time lasttime = 0;
@ -1066,12 +1082,16 @@ void movemouse(__attribute__((unused)) const Arg *arg)
int nx = ocx + (ev.xmotion.x - x); int nx = ocx + (ev.xmotion.x - x);
int ny = ocy + (ev.xmotion.y - y); int ny = ocy + (ev.xmotion.y - y);
if (abs(selmon->window_area_geometry.x - nx) < snap_distance) { if (
nx = selmon->window_area_geometry.x; abs(selmon->window_area_geometry.position.x - nx)
<
snap_distance
) {
nx = selmon->window_area_geometry.position.x;
} else if ( } else if (
abs( abs(
( (
selmon->window_area_geometry.x selmon->window_area_geometry.position.x
+ +
selmon->window_area_geometry.w selmon->window_area_geometry.w
) )
@ -1082,19 +1102,23 @@ void movemouse(__attribute__((unused)) const Arg *arg)
snap_distance snap_distance
) { ) {
nx = nx =
selmon->window_area_geometry.x selmon->window_area_geometry.position.x
+ +
selmon->window_area_geometry.w selmon->window_area_geometry.w
- -
client_geometry_total_width(&c->state.geometry); client_geometry_total_width(&c->state.geometry);
} }
if (abs(selmon->window_area_geometry.y - ny) < snap_distance) { if (
ny = selmon->window_area_geometry.y; abs(selmon->window_area_geometry.position.y - ny)
<
snap_distance
) {
ny = selmon->window_area_geometry.position.y;
} else if ( } else if (
abs( abs(
( (
selmon->window_area_geometry.y selmon->window_area_geometry.position.y
+ +
selmon->window_area_geometry.h selmon->window_area_geometry.h
) - (ny + client_geometry_total_height(&c->state.geometry)) ) - (ny + client_geometry_total_height(&c->state.geometry))
@ -1103,17 +1127,21 @@ void movemouse(__attribute__((unused)) const Arg *arg)
snap_distance snap_distance
) { ) {
ny = ny =
selmon->window_area_geometry.y selmon->window_area_geometry.position.y
+ +
selmon->window_area_geometry.h selmon->window_area_geometry.h
- -
client_geometry_total_height(&c->state.geometry); client_geometry_total_height(&c->state.geometry);
} }
if (!c->state.is_floating && if (
(abs(nx - c->state.geometry.basic.x) > snap_distance || !c->state.is_floating
abs(ny - c->state.geometry.basic.y) > snap_distance)) &&
{ (
abs(nx - c->state.geometry.basic.position.x) > snap_distance
||
abs(ny - c->state.geometry.basic.position.y) > snap_distance)
) {
togglefloating(NULL); togglefloating(NULL);
} }
@ -1136,8 +1164,8 @@ void movemouse(__attribute__((unused)) const Arg *arg)
XUngrabPointer(dpy, CurrentTime); XUngrabPointer(dpy, CurrentTime);
Monitor *const m = recttomon( Monitor *const m = recttomon(
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
c->state.geometry.basic.w, c->state.geometry.basic.w,
c->state.geometry.basic.h c->state.geometry.basic.h
); );
@ -1273,8 +1301,8 @@ void resizeclient(Client *c, int x, int y, int w, int h, int bw)
{ {
XWindowChanges wc; XWindowChanges wc;
c->state.geometry.basic.x = wc.x = x; c->state.geometry.basic.position.x = wc.x = x;
c->state.geometry.basic.y = wc.y = y; c->state.geometry.basic.position.y = wc.y = y;
c->state.geometry.basic.w = wc.width = w; c->state.geometry.basic.w = wc.width = w;
c->state.geometry.basic.h = wc.height = h; c->state.geometry.basic.h = wc.height = h;
c->state.geometry.border_width = wc.border_width = bw; c->state.geometry.border_width = wc.border_width = bw;
@ -1311,8 +1339,8 @@ void resizemouse(__attribute__((unused)) const Arg *arg)
); );
const unsigned int snap_distance = settings_get_snap_distance(); const unsigned int snap_distance = settings_get_snap_distance();
const int ocx = c->state.geometry.basic.x; const int ocx = c->state.geometry.basic.position.x;
const int ocy = c->state.geometry.basic.y; const int ocy = c->state.geometry.basic.position.y;
Time lasttime = 0; Time lasttime = 0;
@ -1347,32 +1375,32 @@ void resizemouse(__attribute__((unused)) const Arg *arg)
if ( if (
( (
c->mon->window_area_geometry.x + nw c->mon->window_area_geometry.position.x + nw
>= >=
selmon->window_area_geometry.x selmon->window_area_geometry.position.x
) )
&& &&
( (
c->mon->window_area_geometry.x + nw c->mon->window_area_geometry.position.x + nw
<= <=
( (
selmon->window_area_geometry.x selmon->window_area_geometry.position.x
+ +
selmon->window_area_geometry.w selmon->window_area_geometry.w
) )
) )
&& &&
( (
c->mon->window_area_geometry.y + nh c->mon->window_area_geometry.position.y + nh
>= >=
selmon->window_area_geometry.y selmon->window_area_geometry.position.y
) )
&& &&
( (
c->mon->window_area_geometry.y + nh c->mon->window_area_geometry.position.y + nh
<= <=
( (
selmon->window_area_geometry.y selmon->window_area_geometry.position.y
+ +
selmon->window_area_geometry.h selmon->window_area_geometry.h
) )
@ -1390,8 +1418,8 @@ void resizemouse(__attribute__((unused)) const Arg *arg)
if (!selmon->lt[selmon->sellt]->arrange || c->state.is_floating) { if (!selmon->lt[selmon->sellt]->arrange || c->state.is_floating) {
resize( resize(
c, c,
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
nw, nw,
nh, nh,
c->state.geometry.border_width, c->state.geometry.border_width,
@ -1420,8 +1448,8 @@ void resizemouse(__attribute__((unused)) const Arg *arg)
while (XCheckMaskEvent(dpy, EnterWindowMask, &ev)); while (XCheckMaskEvent(dpy, EnterWindowMask, &ev));
Monitor *const m = recttomon( Monitor *const m = recttomon(
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
c->state.geometry.basic.w, c->state.geometry.basic.w,
c->state.geometry.basic.h c->state.geometry.basic.h
); );
@ -1728,15 +1756,15 @@ void showhide(Client *c)
XMoveWindow( XMoveWindow(
dpy, dpy,
c->win, c->win,
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y c->state.geometry.basic.position.y
); );
if (!c->mon->lt[c->mon->sellt]->arrange || c->state.is_floating) { if (!c->mon->lt[c->mon->sellt]->arrange || c->state.is_floating) {
resize( resize(
c, c,
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
c->state.geometry.basic.w, c->state.geometry.basic.w,
c->state.geometry.basic.h, c->state.geometry.basic.h,
c->state.geometry.border_width, c->state.geometry.border_width,
@ -1751,7 +1779,7 @@ void showhide(Client *c)
dpy, dpy,
c->win, c->win,
client_geometry_total_width(&c->state.geometry) * -2, client_geometry_total_width(&c->state.geometry) * -2,
c->state.geometry.basic.y c->state.geometry.basic.position.y
); );
} }
} }
@ -1796,8 +1824,8 @@ void togglefloating(__attribute__((unused)) const Arg *arg)
if (selmon->sel->state.is_floating) { if (selmon->sel->state.is_floating) {
resize( resize(
selmon->sel, selmon->sel,
selmon->sel->state.geometry.basic.x, selmon->sel->state.geometry.basic.position.x,
selmon->sel->state.geometry.basic.y, selmon->sel->state.geometry.basic.position.y,
selmon->sel->state.geometry.basic.w - selmon->sel->state.geometry.basic.w -
2 * (border_width - selmon->sel->state.geometry.border_width), 2 * (border_width - selmon->sel->state.geometry.border_width),
selmon->sel->state.geometry.basic.h - selmon->sel->state.geometry.basic.h -
@ -1898,9 +1926,9 @@ int updategeom()
if ( if (
i >= n i >= n
|| ||
unique[i].x_org != m->screen_geometry.x unique[i].x_org != m->screen_geometry.position.x
|| ||
unique[i].y_org != m->screen_geometry.y unique[i].y_org != m->screen_geometry.position.y
|| ||
unique[i].width != m->screen_geometry.w unique[i].width != m->screen_geometry.w
|| ||
@ -1908,11 +1936,11 @@ int updategeom()
) { ) {
dirty = 1; dirty = 1;
m->num = i; m->num = i;
m->screen_geometry.x = m->screen_geometry.position.x =
m->window_area_geometry.x = m->window_area_geometry.position.x =
unique[i].x_org; unique[i].x_org;
m->screen_geometry.y = m->screen_geometry.position.y =
m->window_area_geometry.y = m->window_area_geometry.position.y =
unique[i].y_org; unique[i].y_org;
m->screen_geometry.w = m->screen_geometry.w =
m->window_area_geometry.w = m->window_area_geometry.w =

View File

@ -77,10 +77,12 @@ void on_configure_request(XEvent *e)
} else if (c->state.is_floating || !selmon->lt[selmon->sellt]->arrange) { } else if (c->state.is_floating || !selmon->lt[selmon->sellt]->arrange) {
m = c->mon; m = c->mon;
if (ev->value_mask & CWX) { if (ev->value_mask & CWX) {
c->state.geometry.basic.x = m->screen_geometry.x + ev->x; c->state.geometry.basic.position.x =
m->screen_geometry.position.x + ev->x;
} }
if (ev->value_mask & CWY) { if (ev->value_mask & CWY) {
c->state.geometry.basic.y = m->screen_geometry.y + ev->y; c->state.geometry.basic.position.y =
m->screen_geometry.position.y + ev->y;
} }
if (ev->value_mask & CWWidth) { if (ev->value_mask & CWWidth) {
c->state.geometry.basic.w = ev->width; c->state.geometry.basic.w = ev->width;
@ -89,15 +91,15 @@ void on_configure_request(XEvent *e)
c->state.geometry.basic.h = ev->height; c->state.geometry.basic.h = ev->height;
} }
if ( if (
(c->state.geometry.basic.x + c->state.geometry.basic.w) (c->state.geometry.basic.position.x + c->state.geometry.basic.w)
> >
m->screen_geometry.x + m->screen_geometry.w m->screen_geometry.position.x + m->screen_geometry.w
&& &&
c->state.is_floating c->state.is_floating
) { ) {
/* center in x direction */ /* center in x direction */
c->state.geometry.basic.x = c->state.geometry.basic.position.x =
m->screen_geometry.x m->screen_geometry.position.x
+ +
( (
m->screen_geometry.w / 2 m->screen_geometry.w / 2
@ -106,15 +108,15 @@ void on_configure_request(XEvent *e)
); );
} }
if ( if (
(c->state.geometry.basic.y + c->state.geometry.basic.h) (c->state.geometry.basic.position.y + c->state.geometry.basic.h)
> >
m->screen_geometry.y + m->screen_geometry.h m->screen_geometry.position.y + m->screen_geometry.h
&& &&
c->state.is_floating c->state.is_floating
) { ) {
/* center in y direction */ /* center in y direction */
c->state.geometry.basic.y = c->state.geometry.basic.position.y =
m->screen_geometry.y m->screen_geometry.position.y
+ +
( (
m->screen_geometry.h / 2 m->screen_geometry.h / 2
@ -129,8 +131,8 @@ void on_configure_request(XEvent *e)
XMoveResizeWindow( XMoveResizeWindow(
dpy, dpy,
c->win, c->win,
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
c->state.geometry.basic.w, c->state.geometry.basic.w,
c->state.geometry.basic.h c->state.geometry.basic.h
); );

View File

@ -49,8 +49,8 @@ void centeredmaster(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + mx + left_gap, m->window_area_geometry.position.x + mx + left_gap,
m->window_area_geometry.y + my + top_gap, m->window_area_geometry.position.y + my + top_gap,
mw - 2 * border_width - left_gap - right_gap, mw - 2 * border_width - left_gap - right_gap,
h - 2 * border_width - top_gap - bottom_gap, h - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,
@ -74,8 +74,8 @@ void centeredmaster(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + left_gap, m->window_area_geometry.position.x + left_gap,
m->window_area_geometry.y + ety + top_gap, m->window_area_geometry.position.y + ety + top_gap,
tw - 2 * border_width - left_gap - right_gap, tw - 2 * border_width - left_gap - right_gap,
h - 2 * border_width - top_gap - bottom_gap, h - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,
@ -97,8 +97,8 @@ void centeredmaster(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + mx + mw + left_gap, m->window_area_geometry.position.x + mx + mw + left_gap,
m->window_area_geometry.y + oty + top_gap, m->window_area_geometry.position.y + oty + top_gap,
tw - 2 * border_width - left_gap - right_gap, tw - 2 * border_width - left_gap - right_gap,
h - 2 * border_width - top_gap - bottom_gap, h - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,
@ -122,8 +122,8 @@ void floating(Monitor *m)
if (ISVISIBLE(c) && c->state.geometry.border_width == 0) { if (ISVISIBLE(c) && c->state.geometry.border_width == 0) {
resize( resize(
c, c,
c->state.geometry.basic.x, c->state.geometry.basic.position.x,
c->state.geometry.basic.y, c->state.geometry.basic.position.y,
c->state.geometry.basic.w - 2 * border_width, c->state.geometry.basic.w - 2 * border_width,
c->state.geometry.basic.h - 2 * border_width, c->state.geometry.basic.h - 2 * border_width,
border_width, border_width,
@ -170,8 +170,8 @@ void horizontile(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + mx + left_gap, m->window_area_geometry.position.x + mx + left_gap,
m->window_area_geometry.y + top_gap, m->window_area_geometry.position.y + top_gap,
w - 2 * border_width - left_gap - right_gap, w - 2 * border_width - left_gap - right_gap,
mh - 2 * border_width - top_gap - bottom_gap, mh - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,
@ -195,8 +195,8 @@ void horizontile(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + tx + left_gap, m->window_area_geometry.position.x + tx + left_gap,
m->window_area_geometry.y + mh + top_gap, m->window_area_geometry.position.y + mh + top_gap,
w - 2 * border_width - left_gap - right_gap, w - 2 * border_width - left_gap - right_gap,
m->window_area_geometry.h - mh - 2 * border_width - top_gap - bottom_gap, m->window_area_geometry.h - mh - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,
@ -229,8 +229,8 @@ void monocle(Monitor *m)
for (Client *c = nexttiled(m->clients); c; c = nexttiled(c->next)) { for (Client *c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
resize( resize(
c, c,
m->window_area_geometry.x + gap_size, m->window_area_geometry.position.x + gap_size,
m->window_area_geometry.y + gap_size, m->window_area_geometry.position.y + gap_size,
m->window_area_geometry.w - 2 * border_width - 2 * gap_size, m->window_area_geometry.w - 2 * border_width - 2 * gap_size,
m->window_area_geometry.h - 2 * border_width - 2 * gap_size, m->window_area_geometry.h - 2 * border_width - 2 * gap_size,
border_width, border_width,
@ -276,8 +276,8 @@ void tile(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + left_gap, m->window_area_geometry.position.x + left_gap,
m->window_area_geometry.y + my + top_gap, m->window_area_geometry.position.y + my + top_gap,
mw - 2 * border_width - left_gap - right_gap, mw - 2 * border_width - left_gap - right_gap,
h - 2 * border_width - top_gap - bottom_gap, h - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,
@ -301,8 +301,8 @@ void tile(Monitor *m)
resize( resize(
c, c,
m->window_area_geometry.x + mw + left_gap, m->window_area_geometry.position.x + mw + left_gap,
m->window_area_geometry.y + ty + top_gap, m->window_area_geometry.position.y + ty + top_gap,
m->window_area_geometry.w - mw - 2 * border_width - left_gap - right_gap, m->window_area_geometry.w - mw - 2 * border_width - left_gap - right_gap,
h - 2 * border_width - top_gap - bottom_gap, h - 2 * border_width - top_gap - bottom_gap,
border_width, border_width,

View File

@ -2,10 +2,15 @@
#include <string.h> #include <string.h>
void position_init(const Position position)
{
position->x = 0;
position->y = 0;
}
void basic_geometry_init(const BasicGeometry basic_geometry) void basic_geometry_init(const BasicGeometry basic_geometry)
{ {
basic_geometry->x = 0; position_init(&basic_geometry->position);
basic_geometry->y = 0;
basic_geometry->w = 0; basic_geometry->w = 0;
basic_geometry->h = 0; basic_geometry->h = 0;
} }

View File

@ -8,6 +8,7 @@
* Pointer types * * Pointer types *
*****************/ *****************/
typedef struct Position *Position;
typedef struct BasicGeometry *BasicGeometry; typedef struct BasicGeometry *BasicGeometry;
typedef struct ClientGeometry *ClientGeometry; typedef struct ClientGeometry *ClientGeometry;
typedef struct ClientSizeHints *ClientSizeHints; typedef struct ClientSizeHints *ClientSizeHints;
@ -17,7 +18,14 @@ typedef struct ClientState *ClientState;
* Structures * * Structures *
**************/ **************/
struct BasicGeometry { int x, y, w, h; }; struct Position {
int x, y;
};
struct BasicGeometry {
struct Position position;
int w, h;
};
struct ClientGeometry { struct ClientGeometry {
struct BasicGeometry basic; struct BasicGeometry basic;
@ -39,6 +47,7 @@ struct ClientState {
* Functions * * Functions *
*************/ *************/
void position_init(Position position);
void basic_geometry_init(BasicGeometry basic_geometry); void basic_geometry_init(BasicGeometry basic_geometry);
void client_geometry_init(ClientGeometry client_geometry); void client_geometry_init(ClientGeometry client_geometry);
void client_size_hints_init(ClientSizeHints client_size_hints); void client_size_hints_init(ClientSizeHints client_size_hints);