Fix overview autocentering: always center, not only when the overview is not visible.

Work funded by Tuscany Region - SITA. Contract "Support to the use
of GFOSS (Geographic Free and Open Source Software) Desktop tools"
(CIG Z3B06FA6D7).
This commit is contained in:
Hugo Mercier 2013-06-19 09:15:56 +02:00
parent f0f72ca8a9
commit 5c4f2ed984
4 changed files with 13 additions and 15 deletions

View File

@ -302,7 +302,7 @@ class QgsComposerMap : QgsComposerItem
void setOverviewInverted( bool inverted );
bool overviewInverted() const;
/** Returns true if the extent is forced to center on the overview when the overview is outside the extent */
/** Returns true if the extent is forced to center on the overview */
bool overviewCentered() const;
/** Set the overview's centering mode */
void setOverviewCentered( bool centered );

View File

@ -129,14 +129,12 @@ void QgsComposerMap::extentCenteredOnOverview( QgsRectangle& extent ) const
const QgsComposerMap* overviewFrameMap = mComposition->getComposerMapById( mOverviewFrameMapId );
QgsRectangle otherExtent = overviewFrameMap->extent();
if ( ! mExtent.contains( otherExtent ) ) {
QgsPoint center = otherExtent.center();
QgsRectangle movedExtent( center.x() - mExtent.width() / 2,
center.y() - mExtent.height() / 2,
center.x() - mExtent.width() / 2 + mExtent.width(),
center.y() - mExtent.height() / 2 + mExtent.height() );
extent = movedExtent;
}
QgsPoint center = otherExtent.center();
QgsRectangle movedExtent( center.x() - mExtent.width() / 2,
center.y() - mExtent.height() / 2,
center.x() - mExtent.width() / 2 + mExtent.width(),
center.y() - mExtent.height() / 2 + mExtent.height() );
extent = movedExtent;
}
}

View File

@ -332,7 +332,7 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
/** Sets the overview's inversion mode*/
void setOverviewInverted( bool inverted );
/** Returns true if the extent is forced to center on the overview when the overview is outside the extent */
/** Returns true if the extent is forced to center on the overview */
bool overviewCentered() const { return mOverviewCentered; }
/** Set the overview's centering mode */
void setOverviewCentered( bool centered );
@ -537,7 +537,7 @@ class CORE_EXPORT QgsComposerMap : public QgsComposerItem
void initGridAnnotationFormatFromProject();
/**
* Returns the extent, centered on the overview frame, if needed (when the overview frame is not visible)
* Returns the extent, centered on the overview frame
*/
void extentCenteredOnOverview( QgsRectangle& extent ) const;
};

View File

@ -54,9 +54,9 @@
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>438</width>
<height>1454</height>
<y>-376</y>
<width>439</width>
<height>1439</height>
</rect>
</property>
<property name="sizePolicy">
@ -700,7 +700,7 @@
<item row="4" column="0">
<widget class="QCheckBox" name="mOverviewCenterCheckbox">
<property name="text">
<string>Center on overview when needed</string>
<string>Center on overview</string>
</property>
</widget>
</item>