fix position of tooltip when tooltip is too high for the screen. Fixes #7490
This commit is contained in:
parent
c8c466a466
commit
f0bdd075c6
|
@ -115,6 +115,22 @@ class BaseTooltip:
|
|||
|
||||
def on_size_allocate(self, widget, rect):
|
||||
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:
|
||||
self.preferred_position[0] = 0
|
||||
elif self.preferred_position[0] + rect.width > \
|
||||
|
@ -122,11 +138,6 @@ class BaseTooltip:
|
|||
self.preferred_position[0] = self.screen.get_width() - rect.width
|
||||
elif not self.check_last_time:
|
||||
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])
|
||||
|
||||
def show_tooltip(self, data, widget_height, widget_y_position):
|
||||
|
|
Loading…
Reference in New Issue