aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dmenu.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/dmenu.c b/dmenu.c
index 8e84fbd..b191486 100644
--- a/dmenu.c
+++ b/dmenu.c
@@ -130,7 +130,7 @@ drawmenu(void)
130{ 130{
131 unsigned int curpos; 131 unsigned int curpos;
132 struct item *item; 132 struct item *item;
133 int x = 0, y = 0, w; 133 int x = 0, y = 0, w, inputscheme;
134 134
135 drw_setscheme(drw, scheme[SchemeNorm]); 135 drw_setscheme(drw, scheme[SchemeNorm]);
136 drw_rect(drw, 0, 0, mw, mh, 1, 1); 136 drw_rect(drw, 0, 0, mw, mh, 1, 1);
@@ -138,18 +138,27 @@ drawmenu(void)
138 if (prompt && *prompt) { 138 if (prompt && *prompt) {
139 drw_setscheme(drw, scheme[SchemeSel]); 139 drw_setscheme(drw, scheme[SchemeSel]);
140 x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0); 140 x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0);
141 x += 2;
141 } 142 }
142 /* draw input field */ 143 /* draw input field */
143 w = (lines > 0 || !matches) ? mw - x : inputw; 144 w = (lines > 0 || !matches) ? mw - x : inputw;
144 drw_setscheme(drw, scheme[SchemeNorm]); 145 if (matches && !strcmp(text, curr->text))
146 inputscheme = SchemeSel;
147 else
148 inputscheme = SchemeNorm;
149 drw_setscheme(drw, scheme[inputscheme]);
150
145 drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0); 151 drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
146 152
147 drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL); 153 drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL);
148 if ((curpos += lrpad / 2 - 1) < w) { 154 if ((curpos += lrpad / 2 - 1) < w) {
149 drw_setscheme(drw, scheme[SchemeNorm]); 155 drw_setscheme(drw, scheme[inputscheme]);
150 drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0); 156 drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
151 } 157 }
152 158
159 if (inputscheme == SchemeSel)
160 goto drawmap;
161
153 if (lines > 0) { 162 if (lines > 0) {
154 /* draw vertical list */ 163 /* draw vertical list */
155 for (item = curr; item != next; item = item->right) 164 for (item = curr; item != next; item = item->right)
@@ -171,6 +180,7 @@ drawmenu(void)
171 drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0); 180 drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0);
172 } 181 }
173 } 182 }
183drawmap:
174 drw_map(drw, win, 0, 0, mw, mh); 184 drw_map(drw, win, 0, 0, mw, mh);
175} 185}
176 186