8 typedef struct Consreadmesg Consreadmesg;
9 typedef struct Conswritemesg Conswritemesg;
10 typedef struct Stringpair Stringpair;
11 typedef struct Dirtab Dirtab;
12 typedef struct Mouseinfo Mouseinfo;
13 typedef struct Mousereadmesg Mousereadmesg;
14 typedef struct Mousestate Mousestate;
15 typedef struct Timer Timer;
16 typedef struct Wctlmesg Wctlmesg;
17 typedef struct Window Window;
21 Selborder = 0, /* border of selected window */
22 Unselborder = 0, /* border of unselected window */
23 Scrollwid = 12, /* width of scroll bar */
24 Scrollgap = 4, /* gap right of scroll bar */
25 BIG = 3, /* factor by which window dimension can exceed screen */
32 Kscrolloneup = KF|0x20,
33 Kscrollonedown = KF|0x21
36 enum /* control messages */
60 Channel *cw; /* chan(Stringpair) */
65 Channel *c1; /* chan(tuple(char*, int) == Stringpair) */
66 Channel *c2; /* chan(tuple(char*, int) == Stringpair) */
71 Channel *cm; /* chan(Mouse) */
74 struct Stringpair /* rune and nrune or byte and nbyte */
83 ulong counter; /* serial no. of mouse event */
89 int ri; /* read index into queue */
90 int wi; /* write index */
91 ulong counter; /* serial no. of last mouse event we received */
92 ulong lastcounter; /* serial no. of last mouse event sent to client */
93 int lastb; /* last button state we received */
94 uchar qfull; /* filled the queue; no more recording until client comes back */
105 Channel *ck; /* chan(Rune[10]) */
106 Channel *cctl; /* chan(Wctlmesg)[20] */
107 Channel *conswrite; /* chan(Conswritemesg) */
108 Channel *consread; /* chan(Consreadmesg) */
109 Channel *mouseread; /* chan(Mousereadmesg) */
110 Channel *wctlread; /* chan(Consreadmesg) */
111 uint nr; /* number of runes in window */
112 uint maxr; /* number of runes allocated in r */
125 * Rio once used originwindow, so screenr could be different from i->r.
126 * Now they're always the same but the code doesn't assume so.
128 Rectangle screenr; /* screen coordinates of window */
147 int winborder(Window*, Point);
149 void winshell(void*);
150 Window* wlookid(int);
151 Window* wmk(Image*, Mousectl*, Channel*, Channel*);
152 Window* wpointto(Point);
154 void wtopme(Window*);
155 void wbottomme(Window*);
156 char* wcontents(Window*, int*);
157 int wbswidth(Window*, Rune);
158 int wclickmatch(Window*, int, int, int, uint*);
160 int wctlmesg(Window*, int, Rectangle, Image*);
161 int wctlmesg(Window*, int, Rectangle, Image*);
162 uint wbacknl(Window*, uint, uint);
163 uint winsert(Window*, Rune*, int, uint);
164 void waddraw(Window*, Rune*, int);
165 void wborder(Window*, int);
166 void wclosewin(Window*);
167 void wcurrent(Window*);
169 void wdelete(Window*, uint, uint);
170 void wdoubleclick(Window*, uint*, uint*);
172 void wframescroll(Window*, int);
173 void wkeyctl(Window*, Rune);
174 void wmousectl(Window*);
175 void wmovemouse(Window*, Point);
176 void wpaste(Window*);
177 void wplumb(Window*);
178 void wrefresh(Window*, Rectangle);
179 void wrepaint(Window*);
180 void wresize(Window*, Image*, int);
181 void wscrdraw(Window*);
182 void wscroll(Window*, int);
183 void wselect(Window*);
184 void wsendctlmesg(Window*, int, Rectangle, Image*);
185 void wsetcursor(Window*, int);
186 void wsetname(Window*);
187 void wsetorigin(Window*, uint, int);
188 void wsetpid(Window*, int, int);
189 void wsetselect(Window*, uint, uint);
190 void wshow(Window*, uint);
191 void wsnarf(Window*);
192 void wscrsleep(Window*, uint);
193 void wsetcols(Window*);
195 void deletetimeoutproc(void*);
201 Channel *c; /* chan(int) */
206 #define Extern extern
210 Extern Mousectl *mousectl;
212 Extern Keyboardctl *keyboardctl;
213 Extern Display *display;
215 Extern Screen *wscreen;
216 Extern Cursor boxcursor;
217 Extern Cursor crosscursor;
218 Extern Cursor sightcursor;
219 Extern Cursor whitearrow;
221 Extern Cursor *corners[9];
222 Extern Image *background;
223 Extern Image *lightgrey;
225 Extern Window **window;
226 Extern Window *wkeyboard; /* window of simulated keyboard */
229 Extern Window *input;
230 Extern QLock all; /* BUG */
231 Extern Window *hidden[100];
235 Extern int scrolling;
237 Extern Channel* winclosechan;
238 Extern Channel* deletechan;
239 Extern char *startdir;
242 Extern int errorshouldabort;
243 Extern int menuing; /* menu action is pending; waiting for window to be indicated */
244 Extern int snarfversion; /* updated each time it is written */
245 Extern int messagesize; /* negotiated in 9P version setup */