Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/graphics
diff options
context:
space:
mode:
authorMarco 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)
commit445b1dd413914014832feed41651bd28045ab505 (patch)
treefcc8a616750a4cdcf6864794c18cf850657825b6 /sugar/graphics
parent452f01d2db126bee28106cc9a7aa73f9d8d0da61 (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.py19
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: