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 e830a908 2005-11-06 devnull uchar qfull; /* filled the queue; no more recording until client comes back */
95 e830a908 2005-11-06 devnull };
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 e830a908 2005-11-06 devnull int id;
121 e830a908 2005-11-06 devnull char name[32];
122 e830a908 2005-11-06 devnull uint namecount;
123 e830a908 2005-11-06 devnull Rectangle scrollr;
124 e830a908 2005-11-06 devnull /*
125 e830a908 2005-11-06 devnull * Rio once used originwindow, so screenr could be different from i->r.
126 e830a908 2005-11-06 devnull * Now they're always the same but the code doesn't assume so.
127 e830a908 2005-11-06 devnull */
128 e830a908 2005-11-06 devnull Rectangle screenr; /* screen coordinates of window */
129 e830a908 2005-11-06 devnull int resized;
130 e830a908 2005-11-06 devnull int wctlready;
131 e830a908 2005-11-06 devnull Rectangle lastsr;
132 e830a908 2005-11-06 devnull int topped;
133 e830a908 2005-11-06 devnull int notefd;
134 e830a908 2005-11-06 devnull Cursor cursor;
135 e830a908 2005-11-06 devnull Cursor *cursorp;
136 e830a908 2005-11-06 devnull uchar holding;
137 e830a908 2005-11-06 devnull uchar rawing;
138 e830a908 2005-11-06 devnull uchar ctlopen;
139 e830a908 2005-11-06 devnull uchar wctlopen;
140 e830a908 2005-11-06 devnull uchar deleted;
141 e830a908 2005-11-06 devnull uchar mouseopen;
142 e830a908 2005-11-06 devnull char *label;
143 e830a908 2005-11-06 devnull int pid;
144 e830a908 2005-11-06 devnull char *dir;
145 e830a908 2005-11-06 devnull };
146 e830a908 2005-11-06 devnull
147 e830a908 2005-11-06 devnull int winborder(Window*, Point);
148 e830a908 2005-11-06 devnull void winctl(void*);
149 e830a908 2005-11-06 devnull void winshell(void*);
150 e830a908 2005-11-06 devnull Window* wlookid(int);
151 ba31ab30 2011-04-27 rsc Window* wmk(Image*, Mousectl*, Channel*, Channel*);
152 e830a908 2005-11-06 devnull Window* wpointto(Point);
153 e830a908 2005-11-06 devnull Window* wtop(Point);
154 e830a908 2005-11-06 devnull void wtopme(Window*);
155 e830a908 2005-11-06 devnull void wbottomme(Window*);
156 e830a908 2005-11-06 devnull char* wcontents(Window*, int*);
157 e830a908 2005-11-06 devnull int wbswidth(Window*, Rune);
158 e830a908 2005-11-06 devnull int wclickmatch(Window*, int, int, int, uint*);
159 e830a908 2005-11-06 devnull int wclose(Window*);
160 e830a908 2005-11-06 devnull int wctlmesg(Window*, int, Rectangle, Image*);
161 e830a908 2005-11-06 devnull int wctlmesg(Window*, int, Rectangle, Image*);
162 e830a908 2005-11-06 devnull uint wbacknl(Window*, uint, uint);
163 e830a908 2005-11-06 devnull uint winsert(Window*, Rune*, int, uint);
164 e830a908 2005-11-06 devnull void waddraw(Window*, Rune*, int);
165 e830a908 2005-11-06 devnull void wborder(Window*, int);
166 e830a908 2005-11-06 devnull void wclosewin(Window*);
167 e830a908 2005-11-06 devnull void wcurrent(Window*);
168 e830a908 2005-11-06 devnull void wcut(Window*);
169 e830a908 2005-11-06 devnull void wdelete(Window*, uint, uint);
170 e830a908 2005-11-06 devnull void wdoubleclick(Window*, uint*, uint*);
171 e830a908 2005-11-06 devnull void wfill(Window*);
172 e830a908 2005-11-06 devnull void wframescroll(Window*, int);
173 e830a908 2005-11-06 devnull void wkeyctl(Window*, Rune);
174 e830a908 2005-11-06 devnull void wmousectl(Window*);
175 e830a908 2005-11-06 devnull void wmovemouse(Window*, Point);
176 e830a908 2005-11-06 devnull void wpaste(Window*);
177 e830a908 2005-11-06 devnull void wplumb(Window*);
178 e830a908 2005-11-06 devnull void wrefresh(Window*, Rectangle);
179 e830a908 2005-11-06 devnull void wrepaint(Window*);
180 e830a908 2005-11-06 devnull void wresize(Window*, Image*, int);
181 e830a908 2005-11-06 devnull void wscrdraw(Window*);
182 e830a908 2005-11-06 devnull void wscroll(Window*, int);
183 e830a908 2005-11-06 devnull void wselect(Window*);
184 e830a908 2005-11-06 devnull void wsendctlmesg(Window*, int, Rectangle, Image*);
185 e830a908 2005-11-06 devnull void wsetcursor(Window*, int);
186 e830a908 2005-11-06 devnull void wsetname(Window*);
187 e830a908 2005-11-06 devnull void wsetorigin(Window*, uint, int);
188 e830a908 2005-11-06 devnull void wsetpid(Window*, int, int);
189 e830a908 2005-11-06 devnull void wsetselect(Window*, uint, uint);
190 e830a908 2005-11-06 devnull void wshow(Window*, uint);
191 e830a908 2005-11-06 devnull void wsnarf(Window*);
192 e830a908 2005-11-06 devnull void wscrsleep(Window*, uint);
193 e830a908 2005-11-06 devnull void wsetcols(Window*);
194 e830a908 2005-11-06 devnull
195 e830a908 2005-11-06 devnull void deletetimeoutproc(void*);
196 e830a908 2005-11-06 devnull
197 e830a908 2005-11-06 devnull struct Timer
198 e830a908 2005-11-06 devnull {
199 e830a908 2005-11-06 devnull int dt;
200 e830a908 2005-11-06 devnull int cancel;
201 e830a908 2005-11-06 devnull Channel *c; /* chan(int) */
202 e830a908 2005-11-06 devnull Timer *next;
203 e830a908 2005-11-06 devnull };
204 e830a908 2005-11-06 devnull
205 e830a908 2005-11-06 devnull #ifndef Extern
206 e830a908 2005-11-06 devnull #define Extern extern
207 e830a908 2005-11-06 devnull #endif
208 e830a908 2005-11-06 devnull
209 e830a908 2005-11-06 devnull Extern Font *font;
210 e830a908 2005-11-06 devnull Extern Mousectl *mousectl;
211 e830a908 2005-11-06 devnull Extern Mouse *mouse;
212 e830a908 2005-11-06 devnull Extern Keyboardctl *keyboardctl;
213 e830a908 2005-11-06 devnull Extern Display *display;
214 e830a908 2005-11-06 devnull Extern Image *view;
215 e830a908 2005-11-06 devnull Extern Screen *wscreen;
216 e830a908 2005-11-06 devnull Extern Cursor boxcursor;
217 e830a908 2005-11-06 devnull Extern Cursor crosscursor;
218 e830a908 2005-11-06 devnull Extern Cursor sightcursor;
219 e830a908 2005-11-06 devnull Extern Cursor whitearrow;
220 e830a908 2005-11-06 devnull Extern Cursor query;
221 e830a908 2005-11-06 devnull Extern Cursor *corners[9];
222 e830a908 2005-11-06 devnull Extern Image *background;
223 e830a908 2005-11-06 devnull Extern Image *lightgrey;
224 e830a908 2005-11-06 devnull Extern Image *red;
225 e830a908 2005-11-06 devnull Extern Window **window;
226 e830a908 2005-11-06 devnull Extern Window *wkeyboard; /* window of simulated keyboard */
227 e830a908 2005-11-06 devnull Extern int nwindow;
228 e830a908 2005-11-06 devnull Extern int snarffd;
229 e830a908 2005-11-06 devnull Extern Window *input;
230 e830a908 2005-11-06 devnull Extern QLock all; /* BUG */
231 e830a908 2005-11-06 devnull Extern Window *hidden[100];
232 e830a908 2005-11-06 devnull Extern int nhidden;
233 e830a908 2005-11-06 devnull Extern int nsnarf;
234 e830a908 2005-11-06 devnull Extern Rune* snarf;
235 e830a908 2005-11-06 devnull Extern int scrolling;
236 e830a908 2005-11-06 devnull Extern int maxtab;
237 e830a908 2005-11-06 devnull Extern Channel* winclosechan;
238 e830a908 2005-11-06 devnull Extern Channel* deletechan;
239 e830a908 2005-11-06 devnull Extern char *startdir;
240 e830a908 2005-11-06 devnull Extern int sweeping;
241 e830a908 2005-11-06 devnull Extern int wctlfd;
242 e830a908 2005-11-06 devnull Extern int errorshouldabort;
243 e830a908 2005-11-06 devnull Extern int menuing; /* menu action is pending; waiting for window to be indicated */
244 e830a908 2005-11-06 devnull Extern int snarfversion; /* updated each time it is written */
245 e830a908 2005-11-06 devnull Extern int messagesize; /* negotiated in 9P version setup */