diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2015-12-11 09:16:30 +0000 |
|---|---|---|
| committer | jabiertxof <info@marker.es> | 2015-12-11 09:16:30 +0000 |
| commit | 678ace57cb2e98572d3e5c30138b3100aceef1ed (patch) | |
| tree | ece8baa850d6b7233fc709172be6bc3c8759990f /src/display/guideline.cpp | |
| parent | Clean up some code, only init the SPKnot in one place. (diff) | |
| download | inkscape-678ace57cb2e98572d3e5c30138b3100aceef1ed.tar.gz inkscape-678ace57cb2e98572d3e5c30138b3100aceef1ed.zip | |
Fix crash on hidden guides
(bzr r14527)
Diffstat (limited to 'src/display/guideline.cpp')
| -rw-r--r-- | src/display/guideline.cpp | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp index fd6ccf164..4b573a586 100644 --- a/src/display/guideline.cpp +++ b/src/display/guideline.cpp @@ -172,31 +172,32 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, if ((SP_CANVAS_ITEM_CLASS(sp_guideline_parent_class))->update) { (SP_CANVAS_ITEM_CLASS(sp_guideline_parent_class))->update(item, affine, flags); } + SPDesktop *desktop = SP_ACTIVE_DESKTOP; + if (desktop && item->visible) { + if (!gl->origin) { + gl->origin = new SPKnot(desktop, "No tip yet!! XXX"); + + gl->origin->setAnchor(SP_ANCHOR_CENTER); + gl->origin->setMode(SP_CTRL_MODE_COLOR); + gl->origin->setFill(0xffffff80, 0xffffffff, 0xffffff80); + gl->origin->request_signal.connect(sigc::bind(sigc::ptr_fun(sp_guideline_origin_move), gl)); + } - gl->affine = affine; - - if (!gl->origin){ - gl->origin = new SPKnot(SP_ACTIVE_DESKTOP, "No tip yet!! XXX"); - - gl->origin->setAnchor(SP_ANCHOR_CENTER); - gl->origin->setMode(SP_CTRL_MODE_COLOR); - gl->origin->setFill(0xffffff80, 0xffffffff, 0xffffff80); - gl->origin->request_signal.connect(sigc::bind(sigc::ptr_fun(sp_guideline_origin_move), gl)); - } - - if (gl->locked) { - gl->origin->setStroke(0x0000ff88, 0x0000ff88, 0x0000ff88); - gl->origin->setShape(SP_CTRL_SHAPE_CROSS); - gl->origin->setSize(6); - } else { - gl->origin->setStroke(0xff000088, 0xff0000ff, 0xff0000ff); - gl->origin->setShape(SP_CTRL_SHAPE_CIRCLE); - gl->origin->setSize(4); + if (gl->locked) { + gl->origin->setStroke(0x0000ff88, 0x0000ff88, 0x0000ff88); + gl->origin->setShape(SP_CTRL_SHAPE_CROSS); + gl->origin->setSize(6); + } else { + gl->origin->setStroke(0xff000088, 0xff0000ff, 0xff0000ff); + gl->origin->setShape(SP_CTRL_SHAPE_CIRCLE); + gl->origin->setSize(4); + } + gl->origin->moveto(gl->point_on_line); + gl->origin->updateCtrl(); } - gl->origin->moveto(gl->point_on_line); - gl->origin->updateCtrl(); - Geom::Point pol_transformed = gl->point_on_line*affine; + gl->affine = affine; + Geom::Point pol_transformed = gl->point_on_line * affine; if (gl->is_horizontal()) { sp_canvas_update_bbox (item, -1000000, round(pol_transformed[Geom::Y] - 16), 1000000, round(pol_transformed[Geom::Y] + 1)); } else if (gl->is_vertical()) { @@ -205,7 +206,6 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine, //TODO: labels in angled guidelines are not showing up for some reason. sp_canvas_update_bbox (item, -1000000, -1000000, 1000000, 1000000); } - } // Returns 0.0 if point is on the guideline |
