Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2008-01-29 20:20:50 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2008-01-29 20:20:50 (GMT)
commitaaaaa92f98d002484a31c6310219cbc55346fb45 (patch)
treeb9a710479dc1ff23102a70c3a2d664dfcd43a356 /shell
parent93533e69f29dbc4daa449e74dd3520b6feaf189c (diff)
In spread layout always get width/height request to not
confuse hippo. Eventually we will have to deal with size changes in a better way. Fix flakes count in SnowflakeLayout. Fix #5904
Diffstat (limited to 'shell')
-rw-r--r--shell/view/home/MeshBox.py4
-rw-r--r--shell/view/home/snowflakelayout.py17
-rw-r--r--shell/view/home/spreadlayout.py6
3 files changed, 16 insertions, 11 deletions
diff --git a/shell/view/home/MeshBox.py b/shell/view/home/MeshBox.py
index 00ca782..3b7c4a7 100644
--- a/shell/view/home/MeshBox.py
+++ b/shell/view/home/MeshBox.py
@@ -267,7 +267,7 @@ class ActivityView(hippo.CanvasBox):
self.set_layout(self._layout)
self._icon = self._create_icon()
- self._layout.add_center(self._icon)
+ self._layout.add(self._icon, center=True)
self._update_palette()
@@ -343,7 +343,7 @@ class ActivityView(hippo.CanvasBox):
def _color_changed_cb(self, activity, pspec):
self._layout.remove(self._icon)
self._icon = self._create_icon()
- self._layout.add_center(self._icon)
+ self._layout.add(self._icon, center=True)
self._icon.set_palette(self._palette)
def _private_changed_cb(self, activity, pspec):
diff --git a/shell/view/home/snowflakelayout.py b/shell/view/home/snowflakelayout.py
index 7e59bf2..1eb58cf 100644
--- a/shell/view/home/snowflakelayout.py
+++ b/shell/view/home/snowflakelayout.py
@@ -31,18 +31,21 @@ class SnowflakeLayout(gobject.GObject,hippo.CanvasLayout):
gobject.GObject.__init__(self)
self._nflakes = 0
- def add(self, child):
+ def add(self, child, center=False):
+ if not center:
+ self._nflakes += 1
+
self._box.append(child)
box_child = self._box.find_box_child(child)
- box_child.is_center = False
-
- self._nflakes += 1
+ box_child.is_center = center
- def add_center(self, child):
- self._box.append(child)
+ def remove(self, child):
box_child = self._box.find_box_child(child)
- box_child.is_center = True
+ if not box_child.is_center:
+ self._nflakes -= 1
+
+ self._box.remove(child)
def do_set_box(self, box):
self._box = box
diff --git a/shell/view/home/spreadlayout.py b/shell/view/home/spreadlayout.py
index 3edd717..3463169 100644
--- a/shell/view/home/spreadlayout.py
+++ b/shell/view/home/spreadlayout.py
@@ -218,6 +218,10 @@ class SpreadLayout(gobject.GObject, hippo.CanvasLayout):
def do_allocate(self, x, y, width, height,
req_width, req_height, origin_changed):
for child in self._box.get_layout_children():
+ # We need to always get requests to not confuse hippo
+ min_w, child_width = child.get_width_request()
+ min_h, child_height = child.get_height_request(child_width)
+
rect = child.grid_rect
if child.grid_rect:
child.allocate(rect.x * _CELL_SIZE,
@@ -227,8 +231,6 @@ class SpreadLayout(gobject.GObject, hippo.CanvasLayout):
origin_changed)
else:
vertical_offset = child.vertical_offset
- min_w, child_width = child.get_width_request()
- min_h, child_height = child.get_height_request(child_width)
child_x = x + (width - child_width) / 2
child_y = y + (height - child_height + vertical_offset) / 2
child.allocate(child_x, child_y, child_width, child_height,