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.main
							parent
							
								
									657122f781
								
							
						
					
					
						commit
						a4053bc4e4
					
				
							
								
								
									
										16
									
								
								dmenu.c
								
								
								
								
							
							
						
						
									
										16
									
								
								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); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue