[QGIS Commit] r10857 - branches/Version-1_0/src/gui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Thu May 28 15:41:36 EDT 2009


Author: mhugent
Date: 2009-05-28 15:41:35 -0400 (Thu, 28 May 2009)
New Revision: 10857

Modified:
   branches/Version-1_0/src/gui/qgscomposerview.cpp
   branches/Version-1_0/src/gui/qgscomposerview.h
Log:
Backport of fix for #1717

Modified: branches/Version-1_0/src/gui/qgscomposerview.cpp
===================================================================
--- branches/Version-1_0/src/gui/qgscomposerview.cpp	2009-05-28 17:59:35 UTC (rev 10856)
+++ branches/Version-1_0/src/gui/qgscomposerview.cpp	2009-05-28 19:41:35 UTC (rev 10857)
@@ -83,6 +83,7 @@
     {
       QTransform t;
       mRubberBandItem = new QGraphicsRectItem( 0, 0, 0, 0 );
+      mRubberBandStartPos = QPointF(scenePoint.x(), scenePoint.y());
       t.translate( scenePoint.x(), scenePoint.y() );
       mRubberBandItem->setTransform( t );
       mRubberBandItem->setZValue( 100 );
@@ -249,12 +250,45 @@
         break;
 
       case AddMap:
-        //adjust rubber band item
-        newWidth = scenePoint.x() - mRubberBandItem->transform().dx();
-        newHeight = scenePoint.y() - mRubberBandItem->transform().dy();
-        mRubberBandItem->setRect( 0, 0, newWidth, newHeight );
-        break;
+         //adjust rubber band item
+        {
+          double x = 0;
+          double y = 0;
+          double width = 0;
+          double height = 0;
 
+          double dx = scenePoint.x() - mRubberBandStartPos.x();
+          double dy = scenePoint.y() - mRubberBandStartPos.y();
+
+          if(dx < 0)
+          {
+            x = scenePoint.x();
+            width = -dx;
+          }
+          else
+          {
+            x = mRubberBandStartPos.x();
+            width = dx;
+          }
+
+          if(dy < 0)
+          {
+            y = scenePoint.y();
+            height = -dy;
+          }
+          else
+          {
+            y = mRubberBandStartPos.y();
+            height = dy;
+          }
+
+          mRubberBandItem->setRect( 0, 0, width, height );
+          QTransform t;
+          t.translate(x, y);
+          mRubberBandItem->setTransform(t);
+          break;
+        }
+
       case MoveItemContent:
       {
         //update map preview if composer map

Modified: branches/Version-1_0/src/gui/qgscomposerview.h
===================================================================
--- branches/Version-1_0/src/gui/qgscomposerview.h	2009-05-28 17:59:35 UTC (rev 10856)
+++ branches/Version-1_0/src/gui/qgscomposerview.h	2009-05-28 19:41:35 UTC (rev 10857)
@@ -92,6 +92,8 @@
     QgsComposerItem* mMoveContentItem;
     /**Start position of content move*/
     QPointF mMoveContentStartPos;
+    /**Start of rubber band creation*/
+    QPointF mRubberBandStartPos;
 
   public slots:
     /**For QgsComposerItemGroup to send its signals to QgsComposer (or other classes that keep track of input widgets)*/



More information about the QGIS-commit mailing list