Code

do not redraw if moved to the same point as before
authorbuliabyak <buliabyak@users.sourceforge.net>
Mon, 9 Mar 2009 00:48:46 +0000 (00:48 +0000)
committerbuliabyak <buliabyak@users.sourceforge.net>
Mon, 9 Mar 2009 00:48:46 +0000 (00:48 +0000)
src/display/sodipodi-ctrl.cpp
src/display/sodipodi-ctrl.h

index c26402743959bec45b8f34dcda5ef09b6f30f1ef..caa5fa6977830084b5d9585d552230f5e810ce9f 100644 (file)
@@ -111,6 +111,8 @@ sp_ctrl_init (SPCtrl *ctrl)
     ctrl->box.x0 = ctrl->box.y0 = ctrl->box.x1 = ctrl->box.y1 = 0;
     ctrl->cache = NULL;
     ctrl->pixbuf = NULL;
+
+    ctrl->_point = Geom::Point(0,0);
 }
 
 static void
@@ -550,8 +552,11 @@ sp_ctrl_render (SPCanvasItem *item, SPCanvasBuf *buf)
 }
 
 void SPCtrl::moveto (Geom::Point const p) {
-    sp_canvas_item_affine_absolute (SP_CANVAS_ITEM (this), Geom::Matrix(Geom::Translate (p)));
-    _moved = true;
+    if (p != _point) {
+        sp_canvas_item_affine_absolute (SP_CANVAS_ITEM (this), Geom::Matrix(Geom::Translate (p)));
+        _moved = true;
+    }
+    _point = p;
 }
 
 
index 634e9ff3ecad7271d802c1dbf7231ae6d4bf1e24..859735e4f77b2ed88a29f93abaf8348e8173ae3e 100644 (file)
@@ -54,6 +54,7 @@ struct SPCtrl : public SPCanvasItem{
     GdkPixbuf * pixbuf;
 
     void moveto(Geom::Point const p);
+    Geom::Point _point;
 };
 
 struct SPCtrlClass : public SPCanvasItemClass{