Apply ATTR_REVERSE after ATTR_FAINT
An example where the new behaviour makes more sense: Suppose some text is formatted with ATTR_FAINT for red for the foreground, so it is rendered in a dark red. In that case, when selected with the mouse, the intended behaviour is that foreground and background color are swapped: so the selection should be rendered in dark red and the text in the default background color. Before this patch, what happened was that the selection would be in normal red and the text in the darkened background color, making it almost unreadable. For an example application that uses the FAINT attribute, try dmesg from util-linux with color support, it uses FAINT for segfault messages.
This commit is contained in:
		
				
					committed by
					
						 Hiltjo Posthuma
						Hiltjo Posthuma
					
				
			
			
				
	
			
			
			
						parent
						
							c1d23afa9c
						
					
				
				
					commit
					e829e13bb1
				
			
							
								
								
									
										13
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								x.c
									
									
									
									
									
								
							| @@ -1189,12 +1189,6 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (base.mode & ATTR_REVERSE) { | ||||
| 		temp = fg; | ||||
| 		fg = bg; | ||||
| 		bg = temp; | ||||
| 	} | ||||
|  | ||||
| 	if ((base.mode & ATTR_BOLD_FAINT) == ATTR_FAINT) { | ||||
| 		colfg.red = fg->color.red / 2; | ||||
| 		colfg.green = fg->color.green / 2; | ||||
| @@ -1203,6 +1197,13 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i | ||||
| 		fg = &revfg; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	if (base.mode & ATTR_REVERSE) { | ||||
| 		temp = fg; | ||||
| 		fg = bg; | ||||
| 		bg = temp; | ||||
| 	} | ||||
|  | ||||
| 	if (base.mode & ATTR_BLINK && term.mode & MODE_BLINK) | ||||
| 		fg = bg; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user