static void xbtnpress(XEvent* e)
{
XButtonEvent* ev = &(e->xbutton);
+ XGrabPointer(X.disp, ev->window, False,
+ ButtonPressMask | ButtonReleaseMask | ButtonMotionMask,
+ GrabModeAsync, GrabModeAsync, None, X.csr_move, CurrentTime);
printf("BTN_DN(w: 0x%lx x: %d y: %d rx: %d ry: %d)\n", ev->window, ev->x, ev->y, ev->x_root, ev->y_root);
X.start_x = ev->x_root, X.start_y = ev->y_root;
X.last_x = ev->x_root, X.last_y = ev->y_root;
mouse_up(ev, &loc);
}
X.mode = M_IDLE;
+ XUngrabPointer(X.disp, CurrentTime);
}
static void xbtnmotion(XEvent* e)
static void xexpose(XEvent* e)
{
XExposeEvent* ev = &(e->xexpose);
-// printf("EXPOSE(w: 0x%lx)\n", ev->window);
if (ev->count == 0)
{
+ printf("EXPOSE(w: 0x%lx)\n", ev->window);
Client* c = client_get(ev->window, NULL);
if (c)
{
XAllocNamedColor(X.disp, cmap, "white", &white, &exact);
X.csr_point = XCreateFontCursor(X.disp, XC_left_ptr);
XRecolorCursor(X.disp, X.csr_point, &red, &white);
+ X.csr_move = XCreateFontCursor(X.disp, XC_fleur);
+ XRecolorCursor(X.disp, X.csr_move, &red, &white);
XDefineCursor(X.disp, X.root, X.csr_root);
}
#define max(a,b) (a > b ? a : b)
/* TODO: warp mouse pointer to title bars on new windows */
-/* TODO: implement mouse handling for tiling methods */
-/* TODO: add logic to add/del columns and retile */
enum {
M_INIT,
int screen, mode, edge, start_x, start_y, last_x, last_y;
Window root;
unsigned long black, white, gray;
- Cursor csr_root, csr_point;
+ Cursor csr_root, csr_point, csr_move;
XFontSet font;
XFontSetExtents *font_ext;
GC graphics;
void client_warpmouse(Client* c)
{
(void)c;
-// XWarpPointer(X.disp, None, X.root, 0, 0, 0, 0, (c->x + c->w/2), c->y + (MIN_HEIGHT/2));
+ //XWarpPointer(X.disp, None, X.root, 0, 0, 0, 0, (c->x + c->w/2), c->y + (MIN_HEIGHT/2));
}