|  |  |  | @ -1224,9 +1224,23 @@ function Label:init(args) | 
		
	
		
			
				|  |  |  |  |     -- use existing saved text if no explicit text was specified. this avoids | 
		
	
		
			
				|  |  |  |  |     -- overwriting pre-formatted text that subclasses may have already set | 
		
	
		
			
				|  |  |  |  |     self:setText(args.text or self.text) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     -- Inverts the brightness of the color | 
		
	
		
			
				|  |  |  |  |     invert = function(color) | 
		
	
		
			
				|  |  |  |  |         return (color + 8) % 16 | 
		
	
		
			
				|  |  |  |  |     end | 
		
	
		
			
				|  |  |  |  |     -- default pen is an inverted foreground/background | 
		
	
		
			
				|  |  |  |  |     if not self.text_hpen then | 
		
	
		
			
				|  |  |  |  |         self.text_hpen = ((tonumber(self.text_pen) or tonumber(self.text_pen.fg) or 0) + 8) % 16 | 
		
	
		
			
				|  |  |  |  |         local text_pen = dfhack.pen.parse(self.text_pen) | 
		
	
		
			
				|  |  |  |  |         self.text_hpen = dfhack.pen.make(invert(text_pen.fg), nil, invert(text_pen.bg)) | 
		
	
		
			
				|  |  |  |  |     end | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     -- text_hpen needs a character in order to paint the background using | 
		
	
		
			
				|  |  |  |  |     -- Painter:fill(), so let's make it paint a space to show the background | 
		
	
		
			
				|  |  |  |  |     -- color | 
		
	
		
			
				|  |  |  |  |     local hpen_parsed = dfhack.pen.parse(self.text_hpen) | 
		
	
		
			
				|  |  |  |  |     hpen_parsed.ch = string.byte(' ') | 
		
	
		
			
				|  |  |  |  |     self.text_hpen = hpen_parsed | 
		
	
		
			
				|  |  |  |  | end | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | local function update_label_scrollbar(label) | 
		
	
	
		
			
				
					|  |  |  | @ -1280,6 +1294,14 @@ function Label:shouldHover() | 
		
	
		
			
				|  |  |  |  |     return self.on_click or self.on_rclick | 
		
	
		
			
				|  |  |  |  | end | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | function Label:onRenderFrame(dc, rect) | 
		
	
		
			
				|  |  |  |  |     Label.super.onRenderFrame(self, dc, rect) | 
		
	
		
			
				|  |  |  |  |     -- Fill the background with text_hpen on hover | 
		
	
		
			
				|  |  |  |  |     if self:getMousePos() and self:shouldHover() then | 
		
	
		
			
				|  |  |  |  |         dc:fill(rect, self.text_hpen) | 
		
	
		
			
				|  |  |  |  |     end | 
		
	
		
			
				|  |  |  |  | end | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | function Label:onRenderBody(dc) | 
		
	
		
			
				|  |  |  |  |     local text_pen = self.text_pen | 
		
	
		
			
				|  |  |  |  |     if self:getMousePos() and self:shouldHover() then | 
		
	
	
		
			
				
					|  |  |  | 
 |