diff options
author | Quentin Rameau <quinq@fifth.space> | 2016-07-26 12:48:23 +0200 |
---|---|---|
committer | Hiltjo Posthuma <hiltjo@codemadness.org> | 2016-07-26 18:29:42 +0200 |
commit | a4053bc4e403ae57343f43b7e363a0911bba5a3a (patch) | |
tree | a059b7f413201432bb3e663a6946be80326fce60 /dmenu.c | |
parent | Partially revert 44c7de3: fix items text width offset calculation (diff) | |
download | dmenu-a4053bc4e403ae57343f43b7e363a0911bba5a3a.tar.gz dmenu-a4053bc4e403ae57343f43b7e363a0911bba5a3a.tar.bz2 dmenu-a4053bc4e403ae57343f43b7e363a0911bba5a3a.zip |
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.
Diffstat (limited to '')
-rw-r--r-- | dmenu.c | 16 |
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) { unsigned int curpos; struct item *item; - int x = 0, y = 0, w; + int x = 0, y = 0, w, inputscheme; drw_setscheme(drw, scheme[SchemeNorm]); drw_rect(drw, 0, 0, mw, mh, 1, 1); @@ -138,18 +138,27 @@ drawmenu(void) if (prompt && *prompt) { drw_setscheme(drw, scheme[SchemeSel]); x = drw_text(drw, x, 0, promptw, bh, lrpad / 2, prompt, 0); + x += 2; } /* draw input field */ 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_font_getexts(drw->fonts, text, cursor, &curpos, NULL); 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); } + if (inputscheme == SchemeSel) + goto drawmap; + if (lines > 0) { /* draw vertical list */ 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); } } +drawmap: drw_map(drw, win, 0, 0, mw, mh); } |