Blame


1 e830a908 2005-11-06 devnull #define STACK 32768
2 e830a908 2005-11-06 devnull #undef Borderwidth
3 e830a908 2005-11-06 devnull #define Borderwidth 0
4 e830a908 2005-11-06 devnull
5 43097659 2005-11-27 devnull #undef TRUE /* OS X */
6 43097659 2005-11-27 devnull #undef FALSE
7 43097659 2005-11-27 devnull
8 e830a908 2005-11-06 devnull typedef struct Consreadmesg Consreadmesg;
9 e830a908 2005-11-06 devnull typedef struct Conswritemesg Conswritemesg;
10 e830a908 2005-11-06 devnull typedef struct Stringpair Stringpair;
11 e830a908 2005-11-06 devnull typedef struct Dirtab Dirtab;
12 e830a908 2005-11-06 devnull typedef struct Mouseinfo Mouseinfo;
13 e830a908 2005-11-06 devnull typedef struct Mousereadmesg Mousereadmesg;
14 e830a908 2005-11-06 devnull typedef struct Mousestate Mousestate;
15 e830a908 2005-11-06 devnull typedef struct Timer Timer;
16 e830a908 2005-11-06 devnull typedef struct Wctlmesg Wctlmesg;
17 e830a908 2005-11-06 devnull typedef struct Window Window;
18 e830a908 2005-11-06 devnull
19 e830a908 2005-11-06 devnull enum
20 e830a908 2005-11-06 devnull {
21 e830a908 2005-11-06 devnull Selborder = 0, /* border of selected window */
22 e830a908 2005-11-06 devnull Unselborder = 0, /* border of unselected window */
23 e830a908 2005-11-06 devnull Scrollwid = 12, /* width of scroll bar */
24 e830a908 2005-11-06 devnull Scrollgap = 4, /* gap right of scroll bar */
25 e830a908 2005-11-06 devnull BIG = 3, /* factor by which window dimension can exceed screen */
26 e830a908 2005-11-06 devnull TRUE = 1,
27 cbeb0b26 2006-04-01 devnull FALSE = 0
28 e830a908 2005-11-06 devnull };
29 e830a908 2005-11-06 devnull
30 e830a908 2005-11-06 devnull enum
31 e830a908 2005-11-06 devnull {
32 e830a908 2005-11-06 devnull Kscrolloneup = KF|0x20,
33 cbeb0b26 2006-04-01 devnull Kscrollonedown = KF|0x21
34 e830a908 2005-11-06 devnull };
35 e830a908 2005-11-06 devnull
36 e830a908 2005-11-06 devnull enum /* control messages */
37 e830a908 2005-11-06 devnull {
38 e830a908 2005-11-06 devnull Wakeup,
39 e830a908 2005-11-06 devnull Reshaped,
40 e830a908 2005-11-06 devnull Moved,
41 e830a908 2005-11-06 devnull Refresh,
42 e830a908 2005-11-06 devnull Movemouse,
43 e830a908 2005-11-06 devnull Rawon,
44 e830a908 2005-11-06 devnull Rawoff,
45 e830a908 2005-11-06 devnull Holdon,
46 e830a908 2005-11-06 devnull Holdoff,
47 e830a908 2005-11-06 devnull Deleted,
48 cbeb0b26 2006-04-01 devnull Exited
49 e830a908 2005-11-06 devnull };
50 e830a908 2005-11-06 devnull
51 e830a908 2005-11-06 devnull struct Wctlmesg
52 e830a908 2005-11-06 devnull {
53 e830a908 2005-11-06 devnull int type;
54 e830a908 2005-11-06 devnull Rectangle r;
55 e830a908 2005-11-06 devnull Image *image;
56 e830a908 2005-11-06 devnull };
57 e830a908 2005-11-06 devnull
58 e830a908 2005-11-06 devnull struct Conswritemesg
59 e830a908 2005-11-06 devnull {
60 e830a908 2005-11-06 devnull Channel *cw; /* chan(Stringpair) */
61 e830a908 2005-11-06 devnull };
62 e830a908 2005-11-06 devnull
63 e830a908 2005-11-06 devnull struct Consreadmesg
64 e830a908 2005-11-06 devnull {
65 e830a908 2005-11-06 devnull Channel *c1; /* chan(tuple(char*, int) == Stringpair) */
66 e830a908 2005-11-06 devnull Channel *c2; /* chan(tuple(char*, int) == Stringpair) */
67 e830a908 2005-11-06 devnull };
68 e830a908 2005-11-06 devnull
69 e830a908 2005-11-06 devnull struct Mousereadmesg
70 e830a908 2005-11-06 devnull {
71 e830a908 2005-11-06 devnull Channel *cm; /* chan(Mouse) */
72 e830a908 2005-11-06 devnull };
73 e830a908 2005-11-06 devnull
74 e830a908 2005-11-06 devnull struct Stringpair /* rune and nrune or byte and nbyte */
75 e830a908 2005-11-06 devnull {
76 e830a908 2005-11-06 devnull void *s;
77 e830a908 2005-11-06 devnull int ns;
78 e830a908 2005-11-06 devnull };
79 e830a908 2005-11-06 devnull
80 e830a908 2005-11-06 devnull struct Mousestate
81 e830a908 2005-11-06 devnull {
82 e830a908 2005-11-06 devnull Mouse m;
83 e830a908 2005-11-06 devnull ulong counter; /* serial no. of mouse event */
84 e830a908 2005-11-06 devnull };
85 e830a908 2005-11-06 devnull
86 e830a908 2005-11-06 devnull struct Mouseinfo
87 e830a908 2005-11-06 devnull {
88 e830a908 2005-11-06 devnull Mousestate queue[16];
89 e830a908 2005-11-06 devnull int ri; /* read index into queue */
90 e830a908 2005-11-06 devnull int wi; /* write index */
91 e830a908 2005-11-06 devnull ulong counter; /* serial no. of last mouse event we received */
92 e830a908 2005-11-06 devnull ulong lastcounter; /* serial no. of last mouse event sent to client */
93 e830a908 2005-11-06 devnull int lastb; /* last button state we received */
94 fa325e9b 2020-01-10 cross uchar qfull; /* filled the queue; no more recording until client comes back */
95 fa325e9b 2020-01-10 cross };
96 e830a908 2005-11-06 devnull
97 e830a908 2005-11-06 devnull struct Window
98 e830a908 2005-11-06 devnull {
99 e830a908 2005-11-06 devnull Ref ref;
100 e830a908 2005-11-06 devnull QLock lk;
101 e830a908 2005-11-06 devnull Frame f;
102 e830a908 2005-11-06 devnull Image *i;
103 e830a908 2005-11-06 devnull Mousectl mc;
104 e830a908 2005-11-06 devnull Mouseinfo mouse;
105 e830a908 2005-11-06 devnull Channel *ck; /* chan(Rune[10]) */
106 e830a908 2005-11-06 devnull Channel *cctl; /* chan(Wctlmesg)[20] */
107 e830a908 2005-11-06 devnull Channel *conswrite; /* chan(Conswritemesg) */
108 e830a908 2005-11-06 devnull Channel *consread; /* chan(Consreadmesg) */
109 e830a908 2005-11-06 devnull Channel *mouseread; /* chan(Mousereadmesg) */
110 e830a908 2005-11-06 devnull Channel *wctlread; /* chan(Consreadmesg) */
111 e830a908 2005-11-06 devnull uint nr; /* number of runes in window */
112 e830a908 2005-11-06 devnull uint maxr; /* number of runes allocated in r */
113 e830a908 2005-11-06 devnull Rune *r;
114 e830a908 2005-11-06 devnull uint nraw;
115 e830a908 2005-11-06 devnull Rune *raw;
116 e830a908 2005-11-06 devnull uint org;
117 e830a908 2005-11-06 devnull uint q0;
118 e830a908 2005-11-06 devnull uint q1;
119 e830a908 2005-11-06 devnull uint qh;
120 65a5e5fe 2011-08-02 rsc uint iq1; /* last input position */
121 e830a908 2005-11-06 devnull int id;
122 e830a908 2005-11-06 devnull char name[32];
123 e830a908 2005-11-06 devnull uint namecount;
124 e830a908 2005-11-06 devnull Rectangle scrollr;
125 e830a908 2005-11-06 devnull /*
126 e830a908 2005-11-06 devnull * Rio once used originwindow, so screenr could be different from i->r.
127 e830a908 2005-11-06 devnull * Now they're always the same but the code doesn't assume so.
128 e830a908 2005-11-06 devnull */
129 e830a908 2005-11-06 devnull Rectangle screenr; /* screen coordinates of window */
130 e830a908 2005-11-06 devnull int resized;
131 e830a908 2005-11-06 devnull int wctlready;
132 e830a908 2005-11-06 devnull Rectangle lastsr;
133 e830a908 2005-11-06 devnull int topped;
134 e830a908 2005-11-06 devnull int notefd;
135 210d461c 2011-10-12 rsc uchar scrolling;
136 e830a908 2005-11-06 devnull Cursor cursor;
137 e830a908 2005-11-06 devnull Cursor *cursorp;
138 e830a908 2005-11-06 devnull uchar holding;
139 e830a908 2005-11-06 devnull uchar rawing;
140 e830a908 2005-11-06 devnull uchar ctlopen;
141 e830a908 2005-11-06 devnull uchar wctlopen;
142 e830a908 2005-11-06 devnull uchar deleted;
143 e830a908 2005-11-06 devnull uchar mouseopen;
144 e830a908 2005-11-06 devnull char *label;
145 e830a908 2005-11-06 devnull int pid;
146 e830a908 2005-11-06 devnull char *dir;
147 e830a908 2005-11-06 devnull };
148 e830a908 2005-11-06 devnull
149 e830a908 2005-11-06 devnull int winborder(Window*, Point);
150 e830a908 2005-11-06 devnull void winctl(void*);
151 e830a908 2005-11-06 devnull void winshell(void*);
152 e830a908 2005-11-06 devnull Window* wlookid(int);
153 210d461c 2011-10-12 rsc Window* wmk(Image*, Mousectl*, Channel*, Channel*, int);
154 e830a908 2005-11-06 devnull Window* wpointto(Point);
155 e830a908 2005-11-06 devnull Window* wtop(Point);
156 e830a908 2005-11-06 devnull void wtopme(Window*);
157 e830a908 2005-11-06 devnull void wbottomme(Window*);
158 e830a908 2005-11-06 devnull char* wcontents(Window*, int*);
159 e830a908 2005-11-06 devnull int wbswidth(Window*, Rune);
160 e830a908 2005-11-06 devnull int wclickmatch(Window*, int, int, int, uint*);
161 e830a908 2005-11-06 devnull int wclose(Window*);
162 e830a908 2005-11-06 devnull int wctlmesg(Window*, int, Rectangle, Image*);
163 e830a908 2005-11-06 devnull int wctlmesg(Window*, int, Rectangle, Image*);
164 e830a908 2005-11-06 devnull uint wbacknl(Window*, uint, uint);
165 e830a908 2005-11-06 devnull uint winsert(Window*, Rune*, int, uint);
166 e830a908 2005-11-06 devnull void waddraw(Window*, Rune*, int);
167 e830a908 2005-11-06 devnull void wborder(Window*, int);
168 e830a908 2005-11-06 devnull void wclosewin(Window*);
169 e830a908 2005-11-06 devnull void wcurrent(Window*);
170 e830a908 2005-11-06 devnull void wcut(Window*);
171 e830a908 2005-11-06 devnull void wdelete(Window*, uint, uint);
172 e830a908 2005-11-06 devnull void wdoubleclick(Window*, uint*, uint*);
173 e830a908 2005-11-06 devnull void wfill(Window*);
174 e830a908 2005-11-06 devnull void wframescroll(Window*, int);
175 e830a908 2005-11-06 devnull void wkeyctl(Window*, Rune);
176 e830a908 2005-11-06 devnull void wmousectl(Window*);
177 e830a908 2005-11-06 devnull void wmovemouse(Window*, Point);
178 e830a908 2005-11-06 devnull void wpaste(Window*);
179 e830a908 2005-11-06 devnull void wplumb(Window*);
180 a4e59b37 2020-01-07 crossd void wlook(Window*);
181 e830a908 2005-11-06 devnull void wrefresh(Window*, Rectangle);
182 e830a908 2005-11-06 devnull void wrepaint(Window*);
183 e830a908 2005-11-06 devnull void wresize(Window*, Image*, int);
184 e830a908 2005-11-06 devnull void wscrdraw(Window*);
185 e830a908 2005-11-06 devnull void wscroll(Window*, int);
186 e830a908 2005-11-06 devnull void wselect(Window*);
187 e830a908 2005-11-06 devnull void wsendctlmesg(Window*, int, Rectangle, Image*);
188 e830a908 2005-11-06 devnull void wsetcursor(Window*, int);
189 e830a908 2005-11-06 devnull void wsetname(Window*);
190 e830a908 2005-11-06 devnull void wsetorigin(Window*, uint, int);
191 e830a908 2005-11-06 devnull void wsetpid(Window*, int, int);
192 e830a908 2005-11-06 devnull void wsetselect(Window*, uint, uint);
193 e830a908 2005-11-06 devnull void wshow(Window*, uint);
194 e830a908 2005-11-06 devnull void wsnarf(Window*);
195 e830a908 2005-11-06 devnull void wscrsleep(Window*, uint);
196 e830a908 2005-11-06 devnull void wsetcols(Window*);
197 e830a908 2005-11-06 devnull
198 e830a908 2005-11-06 devnull void deletetimeoutproc(void*);
199 e830a908 2005-11-06 devnull
200 e830a908 2005-11-06 devnull struct Timer
201 e830a908 2005-11-06 devnull {
202 e830a908 2005-11-06 devnull int dt;
203 e830a908 2005-11-06 devnull int cancel;
204 e830a908 2005-11-06 devnull Channel *c; /* chan(int) */
205 e830a908 2005-11-06 devnull Timer *next;
206 e830a908 2005-11-06 devnull };
207 e830a908 2005-11-06 devnull
208 e830a908 2005-11-06 devnull #ifndef Extern
209 e830a908 2005-11-06 devnull #define Extern extern
210 e830a908 2005-11-06 devnull #endif
211 e830a908 2005-11-06 devnull
212 e830a908 2005-11-06 devnull Extern Font *font;
213 e830a908 2005-11-06 devnull Extern Mousectl *mousectl;
214 e830a908 2005-11-06 devnull Extern Mouse *mouse;
215 e830a908 2005-11-06 devnull Extern Keyboardctl *keyboardctl;
216 e830a908 2005-11-06 devnull Extern Display *display;
217 e830a908 2005-11-06 devnull Extern Image *view;
218 e830a908 2005-11-06 devnull Extern Screen *wscreen;
219 e830a908 2005-11-06 devnull Extern Cursor boxcursor;
220 e830a908 2005-11-06 devnull Extern Cursor crosscursor;
221 e830a908 2005-11-06 devnull Extern Cursor sightcursor;
222 e830a908 2005-11-06 devnull Extern Cursor whitearrow;
223 e830a908 2005-11-06 devnull Extern Cursor query;
224 e830a908 2005-11-06 devnull Extern Cursor *corners[9];
225 e830a908 2005-11-06 devnull Extern Image *background;
226 e830a908 2005-11-06 devnull Extern Image *lightgrey;
227 e830a908 2005-11-06 devnull Extern Image *red;
228 e830a908 2005-11-06 devnull Extern Window **window;
229 e830a908 2005-11-06 devnull Extern Window *wkeyboard; /* window of simulated keyboard */
230 e830a908 2005-11-06 devnull Extern int nwindow;
231 e830a908 2005-11-06 devnull Extern int snarffd;
232 e830a908 2005-11-06 devnull Extern Window *input;
233 e830a908 2005-11-06 devnull Extern QLock all; /* BUG */
234 e830a908 2005-11-06 devnull Extern Window *hidden[100];
235 e830a908 2005-11-06 devnull Extern int nhidden;
236 e830a908 2005-11-06 devnull Extern int nsnarf;
237 e830a908 2005-11-06 devnull Extern Rune* snarf;
238 e830a908 2005-11-06 devnull Extern int scrolling;
239 e830a908 2005-11-06 devnull Extern int maxtab;
240 e830a908 2005-11-06 devnull Extern Channel* winclosechan;
241 e830a908 2005-11-06 devnull Extern Channel* deletechan;
242 e830a908 2005-11-06 devnull Extern char *startdir;
243 e830a908 2005-11-06 devnull Extern int sweeping;
244 e830a908 2005-11-06 devnull Extern int wctlfd;
245 e830a908 2005-11-06 devnull Extern int errorshouldabort;
246 e830a908 2005-11-06 devnull Extern int menuing; /* menu action is pending; waiting for window to be indicated */
247 e830a908 2005-11-06 devnull Extern int snarfversion; /* updated each time it is written */
248 e830a908 2005-11-06 devnull Extern int messagesize; /* negotiated in 9P version setup */