+drawmenuh(void) {
+ Item *i;
+
+ dc.x += cmdw;
+ dc.w = spaceitem;
+ drawtext(curr->left ? "<" : NULL, dc.norm);
+ dc.x += dc.w;
+ for(i = curr; i != next; i=i->right) {
+ dc.w = MIN(textw(i->text), mw / 3);
+ drawtext(i->text, (sel == i) ? dc.sel : dc.norm);
+ dc.x += dc.w;
+ }
+ dc.w = spaceitem;
+ dc.x = mw - dc.w;
+ drawtext(next ? ">" : NULL, dc.norm);
+}
+
+void
+drawmenuv(void) {
+ Item *i;
+
+ dc.w = mw - dc.x;
+ dc.y += dc.font.height + 2;
+ for(i = curr; i != next; i=i->right) {
+ drawtext(i->text, (sel == i) ? dc.sel : dc.norm);
+ dc.y += dc.font.height + 2;
+ }
+ drawtext(NULL, dc.norm);
+}
+
+void
+drawtext(const char *text, unsigned long col[ColLast]) {
+ char buf[256];
+ int i, x, y, h, len, olen;