summaryrefslogtreecommitdiff
path: root/platform/macos/src
diff options
context:
space:
mode:
Diffstat (limited to 'platform/macos/src')
-rw-r--r--platform/macos/src/MGLMapView.mm14
-rw-r--r--platform/macos/src/Mapbox.h1
-rw-r--r--platform/macos/src/NSColor+MGLAdditions.mm10
3 files changed, 21 insertions, 4 deletions
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm
index 42fd24653e..bc9ac1e641 100644
--- a/platform/macos/src/MGLMapView.mm
+++ b/platform/macos/src/MGLMapView.mm
@@ -58,7 +58,7 @@
#import "NSURL+MGLAdditions.h"
#import "NSColor+MGLAdditions.h"
#import "NSImage+MGLAdditions.h"
-#import "NSPredicate+MGLAdditions.h"
+#import "NSPredicate+MGLPrivateAdditions.h"
#import <QuartzCore/QuartzCore.h>
#import <OpenGL/gl.h>
@@ -2249,8 +2249,16 @@ public:
// The annotation's anchor will bounce to the current click.
NSRect positioningRect = [self positioningRectForCalloutForAnnotationWithTag:annotationTag];
+ // Check for invalid (zero) positioning rect
+ if (NSEqualRects(positioningRect, NSZeroRect)) {
+ CLLocationCoordinate2D origin = annotation.coordinate;
+ positioningRect.origin = [self convertCoordinate:origin toPointToView:self];
+ }
+
if (!moveOnscreen && NSIsEmptyRect(NSIntersectionRect(positioningRect, self.bounds))) {
- positioningRect = CGRectMake(gesturePoint.x, gesturePoint.y, positioningRect.size.width, positioningRect.size.height);
+ if (!NSEqualPoints(gesturePoint, NSZeroPoint)) {
+ positioningRect = CGRectMake(gesturePoint.x, gesturePoint.y, positioningRect.size.width, positioningRect.size.height);
+ }
}
self.selectedAnnotation = annotation;
@@ -2464,6 +2472,8 @@ public:
if (callout) {
NSRect rect = [self positioningRectForCalloutForAnnotationWithTag:_selectedAnnotationTag];
+ NSAssert(!NSEqualRects(rect, NSZeroRect), @"Positioning rect should be non-zero");
+
if (!NSIsEmptyRect(NSIntersectionRect(rect, self.bounds))) {
// It's possible that the current callout hasn't been presented (since the original
diff --git a/platform/macos/src/Mapbox.h b/platform/macos/src/Mapbox.h
index fcf41203cf..198998a874 100644
--- a/platform/macos/src/Mapbox.h
+++ b/platform/macos/src/Mapbox.h
@@ -62,3 +62,4 @@ FOUNDATION_EXPORT MGL_EXPORT const unsigned char MapboxVersionString[];
#import "MGLAttributionInfo.h"
#import "MGLMapSnapshotter.h"
#import "NSExpression+MGLAdditions.h"
+#import "NSPredicate+MGLAdditions.h"
diff --git a/platform/macos/src/NSColor+MGLAdditions.mm b/platform/macos/src/NSColor+MGLAdditions.mm
index 8c9086ccf7..c73c1a41b7 100644
--- a/platform/macos/src/NSColor+MGLAdditions.mm
+++ b/platform/macos/src/NSColor+MGLAdditions.mm
@@ -79,8 +79,14 @@
components.push_back(component.doubleValue / 255.0);
}
- // Alpha
- components.back() *= 255.0;
+
+ if (components.size() < 4) {
+ components.push_back(1.0);
+ } else {
+ // Alpha
+ components.back() *= 255.0;
+ }
+
// macOS 10.12 Sierra and below uses calibrated RGB by default.
if ([NSColor redColor].colorSpaceName == NSCalibratedRGBColorSpace) {