Skip to content

Commit

Permalink
Fix updating map extent on resize
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Nov 7, 2017
1 parent 53c8779 commit 45ffb26
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
26 changes: 24 additions & 2 deletions src/core/layout/qgslayoutitemmap.cpp
Expand Up @@ -50,8 +50,7 @@ QgsLayoutItemMap::QgsLayoutItemMap( QgsLayout *layout )

connect( this, &QgsLayoutItem::sizePositionChanged, this, [ = ]
{
updateBoundingRect();
update();
shapeChanged();
} );

# if 0
Expand Down Expand Up @@ -945,6 +944,29 @@ void QgsLayoutItemMap::painterJobFinished()
update();
}

void QgsLayoutItemMap::shapeChanged()
{
// keep center as center
QgsPointXY oldCenter = mExtent.center();

double w = rect().width();
double h = rect().height();

// keep same width as before
double newWidth = mExtent.width();
// but scale height to match item's aspect ratio
double newHeight = newWidth * h / w;

mExtent = QgsRectangle::fromCenterAndSize( oldCenter, newWidth, newHeight );

//recalculate data defined scale and extents
refreshMapExtents();
updateBoundingRect();
invalidateCache();
emit changed();
emit extentChanged();
}

void QgsLayoutItemMap::connectUpdateSlot()
{
//connect signal from layer registry to update in case of new or deleted layers
Expand Down
7 changes: 2 additions & 5 deletions src/core/layout/qgslayoutitemmap.h
Expand Up @@ -507,6 +507,8 @@ class CORE_EXPORT QgsLayoutItemMap : public QgsLayoutItem

void painterJobFinished();

void shapeChanged();

private:


Expand Down Expand Up @@ -619,11 +621,6 @@ class CORE_EXPORT QgsLayoutItemMap : public QgsLayoutItem
//! True if annotation items, rubber band, etc. from the main canvas should be displayed
bool mDrawAnnotations = true;

/**
* Adjusts an extent rectangle to match the provided item width and height, so that extent
* center of extent remains the same */
void adjustExtentToItemShape( double itemWidth, double itemHeight, QgsRectangle &extent ) const;

//! True if map is being controlled by an atlas
bool mAtlasDriven = false;
//! Current atlas scaling mode
Expand Down

0 comments on commit 45ffb26

Please sign in to comment.