From 3d2c12d4bff2a832d275b511216ceaaff9f1d3f4 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Fri, 22 Aug 2008 12:50:32 +0000 Subject: #8000 Only repaint the area needed (rlucchese) --- (limited to 'src') 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 -- cgit v0.9.1