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…
	
		Reference in New Issue
	
	Block a user