Print highlighted input text only on single match
When the input text fully matches a single item, do not draw the item and highlight the input text to show that it matches an item in opposition to regular input text not matching anything.
This commit is contained in:
parent
657122f781
commit
a4053bc4e4
1 changed files with 13 additions and 3 deletions
16
dmenu.c
16
dmenu.c
|
@ -130,7 +130,7 @@ drawmenu(void)
|
||||||
{
|
{
|
||||||
unsigned int curpos;
|
unsigned int curpos;
|
||||||
struct item *item;
|
struct item *item;
|
||||||
int x = 0, y = 0, w;
|
int x = 0, y = 0, w, inputscheme;
|
||||||
|
|
||||||
drw_setscheme(drw, scheme[SchemeNorm]);
|
drw_setscheme(drw, scheme[SchemeNorm]);
|
||||||
drw_rect(drw, 0, 0, mw, mh, 1, 1);
|
drw_rect(drw, 0, 0, mw, mh, 1, 1);
|
||||||
|
@ -138,18 +138,27 @@ drawmenu(void)
|
||||||
if (prompt && *prompt) {
|
if (prompt && *prompt) {
|
||||||
drw_setscheme(drw, scheme[SchemeSel]);
|
drw_setscheme(drw, scheme[SchemeSel]);
|
||||||
x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0);
|
x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0);
|
||||||
|
x += 2;
|
||||||
}
|
}
|
||||||
/* draw input field */
|
/* draw input field */
|
||||||
w = (lines > 0 || !matches) ? mw - x : inputw;
|
w = (lines > 0 || !matches) ? mw - x : inputw;
|
||||||
drw_setscheme(drw, scheme[SchemeNorm]);
|
if (matches && !strcmp(text, curr->text))
|
||||||
|
inputscheme = SchemeSel;
|
||||||
|
else
|
||||||
|
inputscheme = SchemeNorm;
|
||||||
|
drw_setscheme(drw, scheme[inputscheme]);
|
||||||
|
|
||||||
drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
|
drw_text(drw, x, 0, w, bh, lrpad / 2, text, 0);
|
||||||
|
|
||||||
drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL);
|
drw_font_getexts(drw->fonts, text, cursor, &curpos, NULL);
|
||||||
if ((curpos += lrpad / 2 - 1) < w) {
|
if ((curpos += lrpad / 2 - 1) < w) {
|
||||||
drw_setscheme(drw, scheme[SchemeNorm]);
|
drw_setscheme(drw, scheme[inputscheme]);
|
||||||
drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
|
drw_rect(drw, x + curpos, 2, 2, bh - 4, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (inputscheme == SchemeSel)
|
||||||
|
goto drawmap;
|
||||||
|
|
||||||
if (lines > 0) {
|
if (lines > 0) {
|
||||||
/* draw vertical list */
|
/* draw vertical list */
|
||||||
for (item = curr; item != next; item = item->right)
|
for (item = curr; item != next; item = item->right)
|
||||||
|
@ -171,6 +180,7 @@ drawmenu(void)
|
||||||
drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0);
|
drw_text(drw, mw - w, 0, w, bh, lrpad / 2, ">", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
drawmap:
|
||||||
drw_map(drw, win, 0, 0, mw, mh);
|
drw_map(drw, win, 0, 0, mw, mh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue