32 for(f = flist.next; f != &flist; f = f->next)
51 case ZEROX: return "zerox";
52 case CLOSE: return "close";
53 case RESIZE: return "resize";
54 case WRITE: return "write";
55 case QUIT: return "quit";
58 sysfatal("menugen: no string for n=%d", n);
62 for(f = flist.next; f != &flist; f = f->next){
69 for(f = flist.next; f != &flist; f = f->next)
71 p = filtitle(f, buf, buf + sizeof(buf));
72 rc = mw - utflen(buf);
73 if(p + rc >= buf + sizeof(buf))
74 rc = buf + sizeof(buf) - p - 1;
86 static Menu menu = {nil, menugen};
91 if(actw != nil && actw->tab->rmb != nil && actw->tab->rmb(actw, mc) >= 0)
93 n = menuhit(3, mc, &menu, nil);
108 winresize(winsel(mc, 3), mc);
119 sysfatal("rmb: no action for n=%d", n);
125 for(f = flist.next; f != &flist; f = f->next)
127 if(f->wins.wnext == &f->wins){
128 newwinsel(f->type, mc, f);
131 for(w = f->wins.wnext; w != &f->wins && w != actw; w = w->wnext)
133 if(w->wnext == &f->wins)
148 {mc->c, &mc->Mouse, CHANRCV},
149 {kc->c, &r, CHANRCV},
150 {mc->resizec, &n, CHANRCV},
155 flushimage(display, 1);
158 if((mc->buttons & 1) != 0)
160 if((mc->buttons & 2) != 0)
161 if(actw != nil && actw->tab->menu != nil)
162 actw->tab->menu(actw, mc);
163 if((mc->buttons & 4) != 0)
168 if(actw != nil && actw->tab->key != nil)
169 actw->tab->key(actw, r);
179 threadmain(int argc, char **argv)
187 if(initdraw(nil, nil, nil) < 0)
188 sysfatal("initdraw: %r");
190 mc = initmouse(nil, screen);
192 sysfatal("initmouse: %r");
193 kc = initkeyboard(nil);
195 sysfatal("initkeyboard: %r");
200 Cursor crosscursor = {
202 {0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
203 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF,
204 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0,
205 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, },
206 {0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
207 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x7F, 0xFE,
208 0x7F, 0xFE, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80,
209 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, }