- else if(curr && (dc->w == inputw || curr->next)) {
- dc->x += inputw;
- dc->w = textw(dc, "<");
- if(prev)
- drawtext(dc, "<", normcol);
- for(item = curr; item != next; item = item->right) {
- dc->x += dc->w;
- dc->w = MIN(textw(dc, item->text), mw/3);
- drawtext(dc, item->text, (item == sel) ? selcol : normcol);
+
+ 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);