fix position of tooltip when tooltip is too high for the screen. Fixes #7490
This commit is contained in:
		
							parent
							
								
									c8c466a466
								
							
						
					
					
						commit
						f0bdd075c6
					
				
					 1 changed files with 16 additions and 5 deletions
				
			
		| 
						 | 
					@ -115,6 +115,22 @@ class BaseTooltip:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def on_size_allocate(self, widget, rect):
 | 
					    def on_size_allocate(self, widget, rect):
 | 
				
			||||||
        half_width = rect.width / 2 + 1
 | 
					        half_width = rect.width / 2 + 1
 | 
				
			||||||
 | 
					        if self.preferred_position[1] + rect.height > self.screen.get_height():
 | 
				
			||||||
 | 
					             # flip tooltip up
 | 
				
			||||||
 | 
					            self.preferred_position[1] -= rect.height + self.widget_height + 8
 | 
				
			||||||
 | 
					            if self.preferred_position[1] < 0:
 | 
				
			||||||
 | 
					                self.preferred_position[1] = self.screen.get_height() - \
 | 
				
			||||||
 | 
					                    rect.height - 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if self.preferred_position[0] + rect.width + 7 < \
 | 
				
			||||||
 | 
					                self.screen.get_width():
 | 
				
			||||||
 | 
					                    self.preferred_position[0] = self.preferred_position[0] + 7
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    self.preferred_position[0] = self.preferred_position[0] - \
 | 
				
			||||||
 | 
					                        rect.width - 7
 | 
				
			||||||
 | 
					                self.win.move(self.preferred_position[0],
 | 
				
			||||||
 | 
					                    self.preferred_position[1])
 | 
				
			||||||
 | 
					                return
 | 
				
			||||||
        if self.preferred_position[0] < half_width:
 | 
					        if self.preferred_position[0] < half_width:
 | 
				
			||||||
            self.preferred_position[0] = 0
 | 
					            self.preferred_position[0] = 0
 | 
				
			||||||
        elif self.preferred_position[0] + rect.width > \
 | 
					        elif self.preferred_position[0] + rect.width > \
 | 
				
			||||||
| 
						 | 
					@ -122,11 +138,6 @@ class BaseTooltip:
 | 
				
			||||||
            self.preferred_position[0] = self.screen.get_width() - rect.width
 | 
					            self.preferred_position[0] = self.screen.get_width() - rect.width
 | 
				
			||||||
        elif not self.check_last_time:
 | 
					        elif not self.check_last_time:
 | 
				
			||||||
            self.preferred_position[0] -= half_width
 | 
					            self.preferred_position[0] -= half_width
 | 
				
			||||||
        if self.preferred_position[1] + rect.height > self.screen.get_height():
 | 
					 | 
				
			||||||
            # flip tooltip up
 | 
					 | 
				
			||||||
            self.preferred_position[1] -= rect.height + self.widget_height + 8
 | 
					 | 
				
			||||||
        if self.preferred_position[1] < 0:
 | 
					 | 
				
			||||||
            self.preferred_position[1] = 0
 | 
					 | 
				
			||||||
        self.win.move(self.preferred_position[0], self.preferred_position[1])
 | 
					        self.win.move(self.preferred_position[0], self.preferred_position[1])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def show_tooltip(self, data, widget_height, widget_y_position):
 | 
					    def show_tooltip(self, data, widget_height, widget_y_position):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue