fix position of tooltip when tooltip is too high for the screen. Fixes #7490

This commit is contained in:
Yann Leboulanger 2013-10-30 13:44:19 +01:00
parent c8c466a466
commit f0bdd075c6
1 changed files with 16 additions and 5 deletions

View File

@ -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):