summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Guerra Soto <fabian.guerra@mapbox.com>2019-06-03 07:32:20 -0700
committerGitHub <noreply@github.com>2019-06-03 07:32:20 -0700
commit402645109f8d0535cac132d824d39f38a4f1c558 (patch)
tree61969265c1e4c6bb9840d8f376260301d7e32556
parentb2428835871933ecf5a93e86493bac0b76db0ede (diff)
downloadqtlocation-mapboxgl-402645109f8d0535cac132d824d39f38a4f1c558.tar.gz
[ios] Fix content insets with custom edge padding. (#14813)
* [ios] Fix content insets with custom edge padding. * [ios, macos] Consolidated edge insets math * [macos] Add content insets to edge padding when setting camera * [ios, macos] Updated changelogs * [ios, macos] Clarify setCamera:withDuration:animationTimingFunction:edgePadding method documentation.
-rw-r--r--platform/darwin/src/MGLGeometry_Private.h20
-rw-r--r--platform/darwin/src/NSExpression+MGLAdditions.mm3
-rw-r--r--platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm4
-rw-r--r--platform/ios/CHANGELOG.md4
-rw-r--r--platform/ios/src/MGLMapView.h3
-rw-r--r--platform/ios/src/MGLMapView.mm4
-rw-r--r--platform/macos/CHANGELOG.md4
-rw-r--r--platform/macos/src/MGLMapView.h3
-rw-r--r--platform/macos/src/MGLMapView.mm3
9 files changed, 34 insertions, 14 deletions
diff --git a/platform/darwin/src/MGLGeometry_Private.h b/platform/darwin/src/MGLGeometry_Private.h
index b91d4e0f81..a89a382c5e 100644
--- a/platform/darwin/src/MGLGeometry_Private.h
+++ b/platform/darwin/src/MGLGeometry_Private.h
@@ -97,14 +97,24 @@ NS_INLINE BOOL MGLLocationCoordinate2DIsValid(CLLocationCoordinate2D coordinate)
}
#if TARGET_OS_IPHONE
-NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(UIEdgeInsets insets) {
- return { insets.top, insets.left, insets.bottom, insets.right };
-}
+ #define MGLEdgeInsets UIEdgeInsets
+ #define MGLEdgeInsetsMake UIEdgeInsetsMake
#else
-NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(NSEdgeInsets insets) {
+ #define MGLEdgeInsets NSEdgeInsets
+ #define MGLEdgeInsetsMake NSEdgeInsetsMake
+#endif
+
+NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(MGLEdgeInsets insets) {
return { insets.top, insets.left, insets.bottom, insets.right };
}
-#endif
+
+/// Returns the combination of two edge insets.
+NS_INLINE MGLEdgeInsets MGLEdgeInsetsInsetEdgeInset(MGLEdgeInsets base, MGLEdgeInsets inset) {
+ return MGLEdgeInsetsMake(base.top + inset.top,
+ base.left + inset.left,
+ base.bottom + inset.bottom,
+ base.right + inset.right);
+}
/** Returns MGLRadianCoordinate2D, converted from CLLocationCoordinate2D. */
NS_INLINE MGLRadianCoordinate2D MGLRadianCoordinateFromLocationCoordinate(CLLocationCoordinate2D locationCoordinate) {
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm
index b3060b5787..2ca4e0ed88 100644
--- a/platform/darwin/src/NSExpression+MGLAdditions.mm
+++ b/platform/darwin/src/NSExpression+MGLAdditions.mm
@@ -1,13 +1,12 @@
#import "MGLFoundation_Private.h"
+#import "MGLGeometry_Private.h"
#import "NSExpression+MGLPrivateAdditions.h"
#import "MGLTypes.h"
#if TARGET_OS_IPHONE
#import "UIColor+MGLAdditions.h"
- #define MGLEdgeInsets UIEdgeInsets
#else
#import "NSColor+MGLAdditions.h"
- #define MGLEdgeInsets NSEdgeInsets
#endif
#import "NSPredicate+MGLAdditions.h"
#import "NSValue+MGLStyleAttributeAdditions.h"
diff --git a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm b/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm
index e2cde278f4..aa3e003d04 100644
--- a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm
+++ b/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm
@@ -1,11 +1,9 @@
#import "NSValue+MGLStyleAttributeAdditions.h"
#import "MGLLight.h"
#import "MGLLoggingConfiguration_Private.h"
+#import "MGLGeometry_Private.h"
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
- #define MGLEdgeInsets UIEdgeInsets
-#else
- #define MGLEdgeInsets NSEdgeInsets
#endif
@implementation NSValue (MGLStyleAttributeAdditions)
diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md
index 3ddeb6b314..045daf4cad 100644
--- a/platform/ios/CHANGELOG.md
+++ b/platform/ios/CHANGELOG.md
@@ -8,6 +8,10 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT
* Setting `MGLMapView.contentInset` now moves the map’s focal point to the center of the content frame after insetting. ([#14664](https://github.com/mapbox/mapbox-gl-native/pull/14664))
+### Other changes
+
+* The `-[MGLMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MGLMapView.contentInset` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813))
+
## 5.0.0 - May 22, 2019
This release improves how monthly active users are counted. By upgrading to this release, you are opting into the changes outlined in [this blog post](https://www.mapbox.com/52219) and [#14421](https://github.com/mapbox/mapbox-gl-native/pull/14421).
diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h
index 63bd28fc0c..3baae2ee3c 100644
--- a/platform/ios/src/MGLMapView.h
+++ b/platform/ios/src/MGLMapView.h
@@ -1036,7 +1036,8 @@ MGL_EXPORT
/**
Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function.
+ optional transition duration and timing function, and optionally some additional
+ padding on each side.
@param camera The new viewpoint.
@param duration The amount of time, measured in seconds, that the transition
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index c2ab9c9fc1..077729d448 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -3557,7 +3557,7 @@ public:
- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion
{
MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@ completionHandler: %@", camera, duration, function, completion);
- [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:self.contentInset completionHandler:completion];
+ [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:UIEdgeInsetsZero completionHandler:completion];
}
- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(UIEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion {
@@ -3571,6 +3571,8 @@ public:
}
MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@ edgePadding: %@ completionHandler: %@", camera, duration, function, NSStringFromUIEdgeInsets(edgePadding), completion);
+
+ edgePadding = MGLEdgeInsetsInsetEdgeInset(edgePadding, self.contentInset);
mbgl::AnimationOptions animationOptions;
if (duration > 0)
diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md
index e3f1c84547..520f8c204b 100644
--- a/platform/macos/CHANGELOG.md
+++ b/platform/macos/CHANGELOG.md
@@ -6,6 +6,10 @@
* Setting `MGLMapView.contentInset` now moves the map’s focal point to the center of the content frame after insetting. ([#14664](https://github.com/mapbox/mapbox-gl-native/pull/14664))
+### Other changes
+
+* The `-[MGLMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MGLMapView.contentInsets` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813))
+
## 0.14.0 - May 22, 2018
### Styles and rendering
diff --git a/platform/macos/src/MGLMapView.h b/platform/macos/src/MGLMapView.h
index ddb5747109..21ae8c2974 100644
--- a/platform/macos/src/MGLMapView.h
+++ b/platform/macos/src/MGLMapView.h
@@ -325,7 +325,8 @@ MGL_EXPORT IB_DESIGNABLE
/**
Moves the viewpoint to a different location with respect to the map with an
- optional transition duration and timing function.
+ optional transition duration and timing function, and optionally some additional
+ padding on each side.
@param camera The new viewpoint.
@param duration The amount of time, measured in seconds, that the transition
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm
index 589a39f0b3..04b895bb50 100644
--- a/platform/macos/src/MGLMapView.mm
+++ b/platform/macos/src/MGLMapView.mm
@@ -1168,10 +1168,11 @@ public:
- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion {
MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@", camera, duration, function);
- [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:self.contentInsets completionHandler:completion];
+ [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:NSEdgeInsetsZero completionHandler:completion];
}
- (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(NSEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion {
+ edgePadding = MGLEdgeInsetsInsetEdgeInset(edgePadding, self.contentInsets);
mbgl::AnimationOptions animationOptions;
if (duration > 0) {
animationOptions.duration.emplace(MGLDurationFromTimeInterval(duration));