diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-07-24 14:15:13 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-07-24 14:15:13 (GMT) |
commit | 445b1dd413914014832feed41651bd28045ab505 (patch) | |
tree | fcc8a616750a4cdcf6864794c18cf850657825b6 /sugar/graphics | |
parent | 452f01d2db126bee28106cc9a7aa73f9d8d0da61 (diff) |
Keep primary/secondary width the same.
Use full (secondary) request to check in-screen.
Diffstat (limited to 'sugar/graphics')
-rw-r--r-- | sugar/graphics/palette.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/sugar/graphics/palette.py b/sugar/graphics/palette.py index b405901..19316d3 100644 --- a/sugar/graphics/palette.py +++ b/sugar/graphics/palette.py @@ -68,7 +68,8 @@ class Palette(gobject.GObject): def __init__(self, label, accel_path=None): gobject.GObject.__init__(self) - self._state = self._SECONDARY + self._full_request = [0, 0] + self._state = self._SECONDARY self._invoker = None self._group_id = None self._up = False @@ -168,7 +169,7 @@ class Palette(gobject.GObject): raise AssertionError def _in_screen(self, x, y): - [width, height] = self._menu.size_request() + [width, height] = self._full_request screen_area = self._invoker.get_screen_area() return x >= screen_area.x and \ @@ -237,10 +238,24 @@ class Palette(gobject.GObject): return x, y + def _update_full_request(self): + state = self._state + + self._menu.set_size_request(-1, -1) + + self._set_state(self._SECONDARY) + self._full_request = self._menu.size_request() + + self._menu.set_size_request(self._full_request[0], -1) + + self._set_state(state) + def _show(self): if self._up: return + self._update_full_request() + x = y = 0 if self._position == self.DEFAULT: |