diff --git a/modules/gui/src/data_viewer/mask_overlay.cc b/modules/gui/src/data_viewer/mask_overlay.cc index 6e1ae09906d3574d1ac7ebd47498fd08f49be9bb..b53678ad18fdf8f7dcb3adaa9fb45d88d09e0fce 100644 --- a/modules/gui/src/data_viewer/mask_overlay.cc +++ b/modules/gui/src/data_viewer/mask_overlay.cc @@ -73,7 +73,7 @@ void MaskOverlay::OnDraw(QPainter& pnt, DataViewerPanel* dvp, bool is_active) geom::Polygon2 pol=polygons_[i]; QPolygon qpol; for(int j=0;j<static_cast<int>(pol.GetNodeCount());++j){ - qpol << dvp->FracPointToWinCenter(pol.GetNode(j)); + qpol << dvp->FracPointToWinCenter(pol.GetNode(j)+shift_); pnt.drawEllipse(qpol.back(),3,3); } pnt.drawPolygon(qpol); @@ -89,7 +89,7 @@ void MaskOverlay::OnDraw(QPainter& pnt, DataViewerPanel* dvp, bool is_active) } QPolygon qpol; for(int j=0;j<static_cast<int>(new_poly_.GetNodeCount());++j){ - qpol << dvp->FracPointToWinCenter(new_poly_.GetNode(j)); + qpol << dvp->FracPointToWinCenter(new_poly_.GetNode(j)+shift_); pnt.drawEllipse(qpol.back(),3,3); } pnt.drawPolygon(qpol); @@ -103,11 +103,7 @@ bool MaskOverlay::OnMouseEvent(QMouseEvent* e, DataViewerPanel* dvp, geom::Vec2 mousepos=dvp->WinToFracPoint(e->pos()); geom::Vec2 diffpos=mousepos-old_mouse_pos_; - if(e->buttons() & Qt::RightButton){ - for(std::vector<geom::Polygon2>::iterator it=polygons_.begin();it!=polygons_.end();++it){ - (*it)=(*it)+diffpos; - } - new_poly_=new_poly_+diffpos; + if(e->buttons() & Qt::RightButton && e->button()==Qt::NoButton){ shift_+=diffpos; } old_mouse_pos_=mousepos;