diff --git a/src/app/qgsmaptoolellipseextent.cpp b/src/app/qgsmaptoolellipseextent.cpp index 306a519dbe3..a3ccdbbba31 100644 --- a/src/app/qgsmaptoolellipseextent.cpp +++ b/src/app/qgsmaptoolellipseextent.cpp @@ -18,6 +18,8 @@ #include "qgsgeometryrubberband.h" #include "qgsmapcanvas.h" #include "qgspoint.h" +#include "qgsgeometryutils.h" +#include "qgslinestring.h" #include QgsMapToolEllipseExtent::QgsMapToolEllipseExtent( QgsMapToolCapture *parentTool, @@ -67,9 +69,11 @@ void QgsMapToolEllipseExtent::cadCanvasMoveEvent( QgsMapMouseEvent *e ) } else { - emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING ); - mPoints.clear(); - break; + double dist = mPoints.at( 0 ).distance( mapPoint ); + double angle = mPoints.at( 0 ).azimuth( mapPoint ); + + mEllipse = QgsEllipse().fromExtent( mPoints.at( 0 ), mPoints.at( 0 ).project( dist, angle ) ); + mTempRubberBand->setGeometry( mEllipse.toPolygon( segments() ) ); } } break; diff --git a/src/app/qgsmaptoolrectanglecenter.cpp b/src/app/qgsmaptoolrectanglecenter.cpp index ea5f65821f4..f13a9727d41 100644 --- a/src/app/qgsmaptoolrectanglecenter.cpp +++ b/src/app/qgsmaptoolrectanglecenter.cpp @@ -17,8 +17,8 @@ #include "qgsmaptoolrectanglecenter.h" #include "qgsgeometryrubberband.h" #include "qgsgeometryutils.h" -#include "qgslinestring.h" #include "qgsmapcanvas.h" +#include "qgslinestring.h" #include "qgspoint.h" #include #include @@ -74,9 +74,11 @@ void QgsMapToolRectangleCenter::cadCanvasMoveEvent( QgsMapMouseEvent *e ) } else { - emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING ); - mPoints.clear(); - break; + double dist = mPoints.at( 0 ).distance( mapPoint ); + double angle = mPoints.at( 0 ).azimuth( mapPoint ); + + mRectangle = QgsRectangle( mPoints.at( 0 ).project( -dist, angle ), mPoints.at( 0 ).project( dist, angle ) ); + mTempRubberBand->setGeometry( QgsMapToolAddRectangle::rectangleToPolygon() ); } } break; diff --git a/src/app/qgsmaptoolrectangleextent.cpp b/src/app/qgsmaptoolrectangleextent.cpp index 578a61db514..6ecd89916f4 100644 --- a/src/app/qgsmaptoolrectangleextent.cpp +++ b/src/app/qgsmaptoolrectangleextent.cpp @@ -18,6 +18,7 @@ #include "qgsgeometryrubberband.h" #include "qgsgeometryutils.h" #include "qgsmapcanvas.h" +#include "qgslinestring.h" #include "qgspoint.h" #include #include @@ -69,9 +70,11 @@ void QgsMapToolRectangleExtent::cadCanvasMoveEvent( QgsMapMouseEvent *e ) } else { - emit messageEmitted( tr( "Cannot use this tool when the map canvas is rotated" ), QgsMessageBar::WARNING ); - mPoints.clear(); - break; + double dist = mPoints.at( 0 ).distance( mapPoint ); + double angle = mPoints.at( 0 ).azimuth( mapPoint ); + + mRectangle = QgsRectangle( mPoints.at( 0 ), mPoints.at( 0 ).project( dist, angle ) ); + mTempRubberBand->setGeometry( QgsMapToolAddRectangle::rectangleToPolygon() ); } } break;