Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-08-22 12:50:32 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-08-22 13:17:15 (GMT)
commit3d2c12d4bff2a832d275b511216ceaaff9f1d3f4 (patch)
treedcb72cea317b30d956e4ec15eff1f74413d30f86 /src
parentf2f10205dde0aa5fb48e37e1155b88d595458bc9 (diff)
#8000 Only repaint the area needed (rlucchese)
Diffstat (limited to 'src')
-rw-r--r--src/sugar/graphics/icon.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/sugar/graphics/icon.py b/src/sugar/graphics/icon.py
index f99eade..00b97db 100644
--- a/src/sugar/graphics/icon.py
+++ b/src/sugar/graphics/icon.py
@@ -417,10 +417,27 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
if self._palette_invoker is not None:
self._palette_invoker.detach()
+ def _repaint_for_icon_change(self):
+ box_width, box_height = self.get_allocation()
+
+ if self._buffer.width is None:
+ icon_width = 0
+ else:
+ icon_width = self._buffer.width
+
+ if self._buffer.height is None:
+ icon_height = 0
+ else:
+ icon_height = self._buffer.height
+
+ x = (box_width - icon_width) / 2
+ y = (box_height - icon_height) / 2
+ self.emit_paint_needed(x, y, icon_width, icon_height)
+
def set_file_name(self, value):
if self._buffer.file_name != value:
self._buffer.file_name = value
- self.emit_paint_needed(0, 0, -1, -1)
+ self._repaint_for_icon_change()
def get_file_name(self):
return self._buffer.file_name
@@ -431,7 +448,7 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
def set_icon_name(self, value):
if self._buffer.icon_name != value:
self._buffer.icon_name = value
- self.emit_paint_needed(0, 0, -1, -1)
+ self._repaint_for_icon_change()
def get_icon_name(self):
return self._buffer.icon_name
@@ -442,7 +459,7 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
def set_xo_color(self, value):
if self._buffer.xo_color != value:
self._buffer.xo_color = value
- self.emit_paint_needed(0, 0, -1, -1)
+ self._repaint_for_icon_change()
xo_color = gobject.property(
type=object, getter=None, setter=set_xo_color)
@@ -450,7 +467,7 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
def set_fill_color(self, value):
if self._buffer.fill_color != value:
self._buffer.fill_color = value
- self.emit_paint_needed(0, 0, -1, -1)
+ self._repaint_for_icon_change()
def get_fill_color(self):
return self._buffer.fill_color
@@ -461,7 +478,7 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
def set_stroke_color(self, value):
if self._buffer.stroke_color != value:
self._buffer.stroke_color = value
- self.emit_paint_needed(0, 0, -1, -1)
+ self._repaint_for_icon_change()
def get_stroke_color(self):
return self._buffer.stroke_color
@@ -506,7 +523,7 @@ class CanvasIcon(hippo.CanvasBox, hippo.CanvasItem):
def set_badge_name(self, value):
if self._buffer.badge_name != value:
self._buffer.badge_name = value
- self.emit_paint_needed(0, 0, -1, -1)
+ self._repaint_for_icon_change()
def get_badge_name(self):
return self._buffer.badge_name