summaryrefslogtreecommitdiff
path: root/src/mbgl/map/transform_state.hpp
diff options
context:
space:
mode:
authorAleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com>2019-07-16 22:29:40 +0300
committerJason Wray <friedbunny@users.noreply.github.com>2019-07-17 16:13:33 -0700
commitae38a22dc181c803acbc31a69b018ecac11f7d1e (patch)
treeb0ade5e5e0604ae600cb9910263b8c23335dd0b2 /src/mbgl/map/transform_state.hpp
parent8fe469f6b17056e20eda1f15053ed54aa938b559 (diff)
downloadqtlocation-mapboxgl-ae38a22dc181c803acbc31a69b018ecac11f7d1e.tar.gz
[core] Fix collision with content insets
Viewport center offset usage was wrongly submitted in #14664. It was part of alternative approach that used enlarged viewport. Existing and added tests were not sufficient to spot the regression, since the collision check padding is usually larger than the center offset x and y. Annotation picking has tolerance of only 10 pixels but no annotation integration test was using content insets. Usage of offset is not needed because `posMatrix` in e.g. `CollisionIndex::projectPoint(const mat4& posMatrix, const Point<float>& point)` already incorporates center offset (projection matrix) and the code in current master was just offsetting all by the value. Modified [ios] MGLAnnotationViewIntegrationTests.testSelectingAnnotationWithCenterOffset to use different insets. It verifies the fix. Fixes [iOS] Annotations are not selectable (added via iosapp menu) #15106: In case of #15106, view's original content insets is {top:88, bottom:34}, causing that center offset is {x:0, y:27} and selection with tolerance of 10 wouldn't select annotation. After tapping the view, so that the header gets removed, view's content insets get changed to {top:44, bottom:34}, center offset is {x:0, y:5} and annotation selection would work, as described in #15106. Fixes: #15106
Diffstat (limited to 'src/mbgl/map/transform_state.hpp')
-rw-r--r--src/mbgl/map/transform_state.hpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mbgl/map/transform_state.hpp b/src/mbgl/map/transform_state.hpp
index 187d266c8a..cca42db20f 100644
--- a/src/mbgl/map/transform_state.hpp
+++ b/src/mbgl/map/transform_state.hpp
@@ -65,10 +65,6 @@ public:
void setMaxZoom(double);
double getMaxZoom() const;
- // Viewport center offset, from [size.width / 2, size.height / 2], defined
- // by |edgeInsets| in screen coordinates, with top left origin.
- ScreenCoordinate getCenterOffset() const;
-
// Rotation
float getBearing() const;
float getFieldOfView() const;
@@ -100,6 +96,10 @@ private:
bool rotatedNorth() const;
void constrain(double& scale, double& x, double& y) const;
+ // Viewport center offset, from [size.width / 2, size.height / 2], defined
+ // by |edgeInsets| in screen coordinates, with top left origin.
+ ScreenCoordinate getCenterOffset() const;
+
LatLngBounds bounds;
// Limit the amount of zooming possible on the map.