Xinqi Bao's Git
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
3 * (C)opyright MMVI Kris Maglione <fbsdaemon@gmail.com>
4 * See LICENSE file for license details.
13 #define ButtonMask (ButtonPressMask | ButtonReleaseMask)
14 #define MouseMask (ButtonMask | PointerMotionMask)
17 mmatch(Client
*c
, int x1
, int y1
, int x2
, int y2
)
19 c
->r
[RFloat
].width
= abs(x1
- x2
);
20 c
->r
[RFloat
].height
= abs(y1
- y2
);
22 (c
->r
[RFloat
].width
- c
->size
.base_width
) % c
->size
.width_inc
;
23 c
->r
[RFloat
].height
-=
24 (c
->r
[RFloat
].height
- c
->size
.base_height
) % c
->size
.height_inc
;
25 if(c
->size
.min_width
&& c
->r
[RFloat
].width
< c
->size
.min_width
)
26 c
->r
[RFloat
].width
= c
->size
.min_width
;
27 if(c
->size
.min_height
&& c
->r
[RFloat
].height
< c
->size
.min_height
)
28 c
->r
[RFloat
].height
= c
->size
.min_height
;
29 if(c
->size
.max_width
&& c
->r
[RFloat
].width
> c
->size
.max_width
)
30 c
->r
[RFloat
].width
= c
->size
.max_width
;
31 if(c
->size
.max_height
&& c
->r
[RFloat
].height
> c
->size
.max_height
)
32 c
->r
[RFloat
].height
= c
->size
.max_height
;
33 c
->r
[RFloat
].x
= (x1
<= x2
) ? x1
: x1
- c
->r
[RFloat
].width
;
34 c
->r
[RFloat
].y
= (y1
<= y2
) ? y1
: y1
- c
->r
[RFloat
].height
;
43 old_cx
= c
->r
[RFloat
].x
;
44 old_cy
= c
->r
[RFloat
].y
;
45 if(XGrabPointer(dpy
, root
, False
, MouseMask
, GrabModeAsync
, GrabModeAsync
,
46 None
, cursor
[CurResize
], CurrentTime
) != GrabSuccess
)
49 XWarpPointer(dpy
, None
, c
->win
, 0, 0, 0, 0,
50 c
->r
[RFloat
].width
, c
->r
[RFloat
].height
);
52 XMaskEvent(dpy
, MouseMask
, &ev
);
57 mmatch(c
, old_cx
, old_cy
, ev
.xmotion
.x
, ev
.xmotion
.y
);
58 XResizeWindow(dpy
, c
->win
, c
->r
[RFloat
].width
, c
->r
[RFloat
].height
);
64 XUngrabPointer(dpy
, CurrentTime
);
74 int x1
, y1
, old_cx
, old_cy
, di
;
78 old_cx
= c
->r
[RFloat
].x
;
79 old_cy
= c
->r
[RFloat
].y
;
80 if(XGrabPointer(dpy
, root
, False
, MouseMask
, GrabModeAsync
, GrabModeAsync
,
81 None
, cursor
[CurMove
], CurrentTime
) != GrabSuccess
)
83 XQueryPointer(dpy
, root
, &dummy
, &dummy
, &x1
, &y1
, &di
, &di
, &dui
);
86 XMaskEvent(dpy
, MouseMask
, &ev
);
91 c
->r
[RFloat
].x
= old_cx
+ (ev
.xmotion
.x
- x1
);
92 c
->r
[RFloat
].y
= old_cy
+ (ev
.xmotion
.y
- y1
);
93 XMoveResizeWindow(dpy
, c
->win
, c
->r
[RFloat
].x
, c
->r
[RFloat
].y
,
94 c
->r
[RFloat
].width
, c
->r
[RFloat
].height
);
100 XUngrabPointer(dpy
, CurrentTime
);