fixed string cutting in draw.c
							parent
							
								
									95766d6241
								
							
						
					
					
						commit
						4d67199a4b
					
				
							
								
								
									
										12
									
								
								draw.c
								
								
								
								
							
							
						
						
									
										12
									
								
								draw.c
								
								
								
								
							|  | @ -26,7 +26,7 @@ drawtext(const char *text, Bool invert) | |||
| { | ||||
| 	int x, y, w, h; | ||||
| 	static char buf[256]; | ||||
| 	unsigned int len; | ||||
| 	unsigned int len, olen; | ||||
| 	XGCValues gcv; | ||||
| 	XPoint points[5]; | ||||
| 	XRectangle r = { dc.x, dc.y, dc.w, dc.h }; | ||||
|  | @ -51,7 +51,7 @@ drawtext(const char *text, Bool invert) | |||
| 		return; | ||||
| 
 | ||||
| 	w = 0; | ||||
| 	len = strlen(text); | ||||
| 	olen = len = strlen(text); | ||||
| 	if(len >= sizeof(buf)) | ||||
| 		len = sizeof(buf) - 1; | ||||
| 	memcpy(buf, text, len); | ||||
|  | @ -64,6 +64,14 @@ drawtext(const char *text, Bool invert) | |||
| 	/* shorten text if necessary */ | ||||
| 	while(len && (w = textnw(buf, len)) > dc.w - h) | ||||
| 		buf[--len] = 0; | ||||
| 	if(len < olen) { | ||||
| 		if(len > 3) | ||||
| 			memcpy(buf + len - 4, "...\0", 4); | ||||
| 		else if(len > 2) | ||||
| 			memcpy(buf + len - 3, "..\0", 3); | ||||
| 		else if(len > 1) | ||||
| 			memcpy(buf + len - 2, ".\0", 2); | ||||
| 	} | ||||
| 
 | ||||
| 	if(w > dc.w) | ||||
| 		return; /* too long */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue