| #ifndef _MOUSE_H_ |
| #define _MOUSE_H_ 1 |
| #if defined(__cplusplus) |
| extern "C" { |
| #endif |
| typedef struct Menu Menu; |
| typedef struct Mousectl Mousectl; |
| |
| struct Mouse |
| { |
| int buttons; /* bit array: LMR=124 */ |
| Point xy; |
| ulong msec; |
| }; |
| |
| struct Mousectl |
| { |
| Mouse m; |
| struct Channel *c; /* chan(Mouse) */ |
| struct Channel *resizec; /* chan(int)[2] */ |
| /* buffered in case client is waiting for a mouse action before handling resize */ |
| |
| Display *display; /* associated display */ |
| }; |
| |
| struct Menu |
| { |
| char **item; |
| char *(*gen)(int); |
| int lasthit; |
| }; |
| |
| /* |
| * Mouse |
| */ |
| extern Mousectl* initmouse(char*, Image*); |
| extern void moveto(Mousectl*, Point); |
| extern int readmouse(Mousectl*); |
| extern void closemouse(Mousectl*); |
| struct Cursor; |
| extern void setcursor(Mousectl*, struct Cursor*); |
| extern void drawgetrect(Rectangle, int); |
| extern Rectangle getrect(int, Mousectl*); |
| extern int menuhit(int, Mousectl*, Menu*, Screen*); |
| |
| extern void bouncemouse(Mouse*); |
| extern int _windowhasfocus; /* XXX do better */ |
| extern int _wantfocuschanges; |
| |
| #if defined(__cplusplus) |
| } |
| #endif |
| #endif |