// setupMoveDrag does the boiler plate for registering this client's // "move" drag. func setupMoveDrag(c Client, dragWin xproto.Window, buttonStr string, grab bool) { dStart := xgbutil.MouseDragBeginFun( func(X *xgbutil.XUtil, rx, ry, ex, ey int) (bool, xproto.Cursor) { return c.DragMoveBegin(rx, ry, ex, ey), cursors.Fleur }) dStep := xgbutil.MouseDragFun( func(X *xgbutil.XUtil, rx, ry, ex, ey int) { c.DragMoveStep(rx, ry, ex, ey) }) dEnd := xgbutil.MouseDragFun( func(X *xgbutil.XUtil, rx, ry, ex, ey int) { c.DragMoveEnd(rx, ry, ex, ey) }) mousebind.Drag(X, X.Dummy(), dragWin, buttonStr, grab, dStart, dStep, dEnd) }
// setupResizeDrag does the boiler plate for registering this client's // "resize" drag. func setupResizeDrag(c Client, dragWin xproto.Window, buttonStr string, grab bool, direction uint32) { dStart := xgbutil.MouseDragBeginFun( func(X *xgbutil.XUtil, rx, ry, ex, ey int) (bool, xproto.Cursor) { return c.DragResizeBegin(direction, rx, ry, ex, ey) }) dStep := xgbutil.MouseDragFun( func(X *xgbutil.XUtil, rx, ry, ex, ey int) { c.DragResizeStep(rx, ry, ex, ey) }) dEnd := xgbutil.MouseDragFun( func(X *xgbutil.XUtil, rx, ry, ex, ey int) { c.DragResizeEnd(rx, ry, ex, ey) }) mousebind.Drag(X, X.Dummy(), dragWin, buttonStr, grab, dStart, dStep, dEnd) }