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; | 	int x, y, w, h; | ||||||
| 	static char buf[256]; | 	static char buf[256]; | ||||||
| 	unsigned int len; | 	unsigned int len, olen; | ||||||
| 	XGCValues gcv; | 	XGCValues gcv; | ||||||
| 	XPoint points[5]; | 	XPoint points[5]; | ||||||
| 	XRectangle r = { dc.x, dc.y, dc.w, dc.h }; | 	XRectangle r = { dc.x, dc.y, dc.w, dc.h }; | ||||||
| @ -51,7 +51,7 @@ drawtext(const char *text, Bool invert) | |||||||
| 		return; | 		return; | ||||||
| 
 | 
 | ||||||
| 	w = 0; | 	w = 0; | ||||||
| 	len = strlen(text); | 	olen = len = strlen(text); | ||||||
| 	if(len >= sizeof(buf)) | 	if(len >= sizeof(buf)) | ||||||
| 		len = sizeof(buf) - 1; | 		len = sizeof(buf) - 1; | ||||||
| 	memcpy(buf, text, len); | 	memcpy(buf, text, len); | ||||||
| @ -64,6 +64,14 @@ drawtext(const char *text, Bool invert) | |||||||
| 	/* shorten text if necessary */ | 	/* shorten text if necessary */ | ||||||
| 	while(len && (w = textnw(buf, len)) > dc.w - h) | 	while(len && (w = textnw(buf, len)) > dc.w - h) | ||||||
| 		buf[--len] = 0; | 		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) | 	if(w > dc.w) | ||||||
| 		return; /* too long */ | 		return; /* too long */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user