-drawtext(const char *text, unsigned long col[ColLast]) {
- char buf[256];
- int i, x, y, h, len, olen;
- XRectangle r = { dc.x, dc.y, dc.w, dc.h };
-
- XSetForeground(dpy, dc.gc, col[ColBG]);
- XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
- if(!text)
- return;
- olen = strlen(text);
- h = dc.font.ascent + dc.font.descent;
- y = dc.y + (dc.h / 2) - (h / 2) + dc.font.ascent;
- x = dc.x + (h / 2);
- /* shorten text if necessary */
- for(len = MIN(olen, sizeof buf); len && textnw(text, len) > dc.w - h; len--);
- if(!len)
- return;
- memcpy(buf, text, len);
- if(len < olen)
- for(i = len; i && i > len - 3; buf[--i] = '.');
- XSetForeground(dpy, dc.gc, col[ColFG]);
- if(dc.font.set)
- XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf, len);
- else
- XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
+drawmenuh(void) {
+ Item *item;
+
+ dc.x += inputw;
+ dc.w = textw(&dc, "<");
+ if(curr->left)
+ drawtext(&dc, "<", normcol);
+ dc.x += dc.w;
+ for(item = curr; item != next; item = item->right) {
+ dc.w = MIN(textw(&dc, item->text), mw / 3);
+ if(item == sel)
+ drawbox(&dc, selcol);
+ drawtext(&dc, item->text, (item == sel) ? selcol : normcol);
+ dc.x += dc.w;
+ }
+ dc.w = textw(&dc, ">");
+ dc.x = mw - dc.w;
+ if(next)
+ drawtext(&dc, ">", normcol);