From b1ddaad64fe5645d390ff5f7e256b48beec88a32 Mon Sep 17 00:00:00 2001
From: andreas <andreas@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Wed, 28 Jul 2010 21:30:09 +0000
Subject: [PATCH] bugfix in MaskOverlay ported from qtiplt

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2600 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/gui/src/data_viewer/mask_overlay.cc | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/modules/gui/src/data_viewer/mask_overlay.cc b/modules/gui/src/data_viewer/mask_overlay.cc
index 6e1ae0990..b53678ad1 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;
-- 
GitLab