Code

do not redraw until moved for the first time; this fixes the flicker at 0,0 whenever...
[inkscape.git] / src / display / sodipodi-ctrl.cpp
index 71786fd963cd878aa97b8e73a081682a7e957193..27f53633cd487b3eac36421d5e1de1427f90ba78 100644 (file)
@@ -104,6 +104,7 @@ sp_ctrl_init (SPCtrl *ctrl)
        ctrl->stroked = 0;
        ctrl->fill_color = 0x000000ff;
        ctrl->stroke_color = 0x000000ff;
+       ctrl->_moved = false;
 
        ctrl->box.x0 = ctrl->box.y0 = ctrl->box.x1 = ctrl->box.y1 = 0;
        ctrl->cache = NULL;
@@ -204,6 +205,8 @@ sp_ctrl_update (SPCanvasItem *item, NR::Matrix const &affine, unsigned int flags
 
        sp_canvas_item_reset_bounds (item);
 
+       if (!ctrl->_moved) return;
+
        if (ctrl->shown) {
                sp_canvas_request_redraw (item->canvas, ctrl->box.x0, ctrl->box.y0, ctrl->box.x1 + 1, ctrl->box.y1 + 1);
        }
@@ -491,4 +494,5 @@ sp_ctrl_render (SPCanvasItem *item, SPCanvasBuf *buf)
 
 void SPCtrl::moveto (NR::Point const p) {
        sp_canvas_item_affine_absolute (SP_CANVAS_ITEM (this), NR::Matrix(NR::translate (p)));
+  _moved = true;
 }