static void run(void) { XEvent ev; while (!XNextEvent(dpy, &ev)) { if (XFilterEvent(&ev, win)) continue; switch(ev.type) { case Expose: if (ev.xexpose.count == 0) drw_map(drw, win, 0, 0, mw, mh); break; case KeyPress: keypress(&ev.xkey); break; case SelectionNotify: if (ev.xselection.property == utf8) paste(); break; case VisibilityNotify: if (ev.xvisibility.state != VisibilityUnobscured) XRaiseWindow(dpy, win); break; } } }
static void drawmenu(void) { unsigned int curpos; struct item *item; int x = 0, y = 0, w; drw_setscheme(drw, scheme[SchemeNorm]); drw_rect(drw, 0, 0, mw, mh, 1, 1); if (prompt && *prompt) { drw_setscheme(drw, scheme[SchemeSel]); x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0); } /* draw input field */ w = (lines > 0 || !matches) ? mw - x : inputw; drw_setscheme(drw, scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0); drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL); if ((curpos += lrpad / 2 - 1) < w) { drw_setscheme(drw, scheme[SchemeNorm]); drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0); } if (lines > 0) { /* draw vertical list */ for (item = curr; item != next; item = item->right) drawitem(item, x, y += bh, mw - x); } else if (matches) { /* draw horizontal list */ x += inputw; w = TEXTW("<"); if (curr->left) { drw_setscheme(drw, scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, lrpad / 2, "<", 0); } x += w; for (item = curr; item != next; item = item->right) x = drawitem(item, x, 0, MIN(TEXTW(item->text), mw - x - TEXTW(">"))); if (next) { w = TEXTW(">"); drw_setscheme(drw, scheme[SchemeNorm]); drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0); } } drw_map(drw, win, 0, 0, mw, mh); }
//컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴 //Procedure drw_obj //LastModified: PD 26Feb96 - //------------------------------------------------------------------------------ //Author Paul. //Date Thu 24 Aug 1995 //Modified // //Description // //Inputs // //Returns // //Externals //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void btree::drw_obj(BaseObj3DPtr this_obj3d) //PD 12Mar96 { switch (this_obj3d->objtype) //PD 12Mar96 { case COCKPIT_OBJECT: drw_cockpit(this_obj3d); break; case SHADOW_OBJECT: //RJS 07May97 drw_shadow(this_obj3d); //RJS 07May97 break; //RJS 07May97 case SMOKE_OBJECT: //RJS 08Sep97 case STATIC_OBJECT: //RJS 08Sep97 drw_static(this_obj3d); break; case SHADEOVERRIDE_OBJECT: drw_shadeoverride(this_obj3d); break; case MOBILE_OBJECT: drw_mobile(this_obj3d); break; case GROUND_TILE_OBJECT: drw_land(this_obj3d); break; case SPECIAL_TILE_OBJECT: drw_special_land(this_obj3d); break; case MAP_OBJECT: //RJS 08Sep98 drw_map(this_obj3d); //RJS 08Sep98 break; //RJS 08Sep98 } }
static void drawmenu(void) { int curpos; struct item *item; int x = 0, y = 0, h = bh, w; drw_setscheme(drw, &scheme[SchemeNorm]); drw_rect(drw, 0, 0, mw, mh, 1, 1, 1); if (prompt && *prompt) { drw_setscheme(drw, &scheme[SchemeSel]); drw_text(drw, x, 0, promptw, bh, prompt, 0); x += promptw; } /* draw input field */ w = (lines > 0 || !matches) ? mw - x : inputw; drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, text, 0); if ((curpos = TEXTNW(text, cursor) + bh / 2 - 2) < w) { drw_setscheme(drw, &scheme[SchemeNorm]); drw_rect(drw, x + curpos + 2, 2, 1, bh - 4, 1, 1, 0); } if (lines > 0) { /* draw vertical list */ w = mw - x; for (item = curr; item != next; item = item->right) { y += h; if (item == sel) drw_setscheme(drw, &scheme[SchemeSel]); else if (item->out) drw_setscheme(drw, &scheme[SchemeOut]); else drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, y, w, bh, item->text, 0); } } else if (matches) { /* draw horizontal list */ x += inputw; w = TEXTW("<"); if (curr->left) { drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, "<", 0); } for (item = curr; item != next; item = item->right) { x += w; w = MIN(TEXTW(item->text), mw - x - TEXTW(">")); if (item == sel) drw_setscheme(drw, &scheme[SchemeSel]); else if (item->out) drw_setscheme(drw, &scheme[SchemeOut]); else drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, item->text, 0); } w = TEXTW(">"); x = mw - w; if (next) { drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, ">", 0); } } drw_map(drw, win, 0, 0, mw, mh); }