fixed string cutting in draw.c
This commit is contained in:
		
							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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R.Garbe
						Anselm R.Garbe