Skip to content

Commit

Permalink
update the rect position even when teleportation
Browse files Browse the repository at this point in the history
  • Loading branch information
Koyaani committed Nov 24, 2021
1 parent 454edd2 commit 15c9726
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 8 deletions.
Expand Up @@ -36,6 +36,8 @@ The QgsAdvancedDigitizingCanvasItem class draws the graphical elements of the CA

virtual void paint( QPainter *painter );

virtual void updatePosition();


};

Expand Down
24 changes: 16 additions & 8 deletions src/gui/qgsadvanceddigitizingcanvasitem.cpp
Expand Up @@ -41,14 +41,6 @@ void QgsAdvancedDigitizingCanvasItem::paint( QPainter *painter )
QPolygonF mapPoly = mMapCanvas->mapSettings().visiblePolygon();
const double canvasWidth = QLineF( mapPoly[0], mapPoly[1] ).length();
const double canvasHeight = QLineF( mapPoly[0], mapPoly[3] ).length();
const QgsRectangle mapRect = QgsRectangle( mapPoly[0],
QgsPointXY(
mapPoly[0].x() + canvasWidth,
mapPoly[0].y() - canvasHeight
)
);
if ( rect() != mapRect )
setRect( mapRect );

const int nPoints = mAdvancedDigitizingDockWidget->pointsCount();
if ( !nPoints )
Expand Down Expand Up @@ -254,3 +246,19 @@ void QgsAdvancedDigitizingCanvasItem::paint( QPainter *painter )
curPointPix + QPointF( +5, -5 ) );
}
}

void QgsAdvancedDigitizingCanvasItem::updatePosition()
{
// Use visible polygon rather than extent to properly handle rotated maps
QPolygonF mapPoly = mMapCanvas->mapSettings().visiblePolygon();
const double canvasWidth = QLineF( mapPoly[0], mapPoly[1] ).length();
const double canvasHeight = QLineF( mapPoly[0], mapPoly[3] ).length();
const QgsRectangle mapRect = QgsRectangle( mapPoly[0],
QgsPointXY(
mapPoly[0].x() + canvasWidth,
mapPoly[0].y() - canvasHeight
)
);
if ( rect() != mapRect )
setRect( mapRect );
}
1 change: 1 addition & 0 deletions src/gui/qgsadvanceddigitizingcanvasitem.h
Expand Up @@ -51,6 +51,7 @@ class GUI_EXPORT QgsAdvancedDigitizingCanvasItem : public QgsMapCanvasItem
explicit QgsAdvancedDigitizingCanvasItem( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );

void paint( QPainter *painter ) override;
void updatePosition() override;

private:
QPen mLockedPen;
Expand Down
1 change: 1 addition & 0 deletions src/gui/qgsadvanceddigitizingdockwidget.cpp
Expand Up @@ -836,6 +836,7 @@ void QgsAdvancedDigitizingDockWidget::updateCapacity( bool updateUIwithoutChange

// update capacities
mCapacities = newCapacities;
mCadPaintItem->updatePosition();
}


Expand Down

0 comments on commit 15c9726

Please sign in to comment.