[osx] Set default polyline and polygon color to the selected menu item color

Fixes #3927
This commit is contained in:
Jason Wray
2016-02-18 17:28:04 -05:00
parent 390057b569
commit 21ce6fbdf9
4 changed files with 56 additions and 16 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10109" systemVersion="15E39d" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9531"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10109"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
@@ -473,10 +473,16 @@
<action selector="dropManyPins:" target="-1" id="Rtv-8N-3Z8"/>
</connections>
</menuItem>
<menuItem title="Remove All Pins" id="6rC-68-vk0">
<menuItem title="Add Polygon and Polyline" id="DVr-vT-lpe">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="removeAllPins:" target="-1" id="NRM-y5-Wul"/>
<action selector="drawPolygonAndPolyLineAnnotations:" target="-1" id="EhT-CB-gee"/>
</connections>
</menuItem>
<menuItem title="Remove All Annotations" id="6rC-68-vk0">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="removeAllAnnotations:" target="-1" id="6v3-0E-LsR"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="wQq-Mx-QY0"/>
@@ -545,7 +551,7 @@
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="109" y="131" width="350" height="62"/>
<rect key="screenRect" x="0.0" y="0.0" width="1280" height="777"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/>
<view key="contentView" id="eA4-n3-qPe">
<rect key="frame" x="0.0" y="0.0" width="350" height="62"/>
<autoresizingMask key="autoresizingMask"/>

View File

@@ -33,6 +33,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
BOOL _showsToolTipsOnDroppedPins;
BOOL _randomizesCursorsOnDroppedPins;
BOOL _isTouringWorld;
BOOL _isShowingPolygonAndPolylineAnnotations;
}
#pragma mark Lifecycle
@@ -241,7 +242,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
}
- (IBAction)dropManyPins:(id)sender {
[self.mapView removeAnnotations:self.mapView.annotations];
[self removeAllAnnotations:sender];
NSRect bounds = self.mapView.bounds;
NSMutableArray *annotations = [NSMutableArray array];
@@ -273,14 +274,15 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
}
}
- (IBAction)removeAllPins:(id)sender {
- (IBAction)removeAllAnnotations:(id)sender {
[self.mapView removeAnnotations:self.mapView.annotations];
_isShowingPolygonAndPolylineAnnotations = NO;
}
- (IBAction)startWorldTour:(id)sender {
_isTouringWorld = YES;
[self removeAllPins:sender];
[self removeAllAnnotations:sender];
NSUInteger numberOfAnnotations = sizeof(WorldTourDestinations) / sizeof(WorldTourDestinations[0]);
NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:numberOfAnnotations];
for (NSUInteger i = 0; i < numberOfAnnotations; i++) {
@@ -319,6 +321,35 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
self.mapView.camera = self.mapView.camera;
}
- (IBAction)drawPolygonAndPolyLineAnnotations:(id)sender {
if (_isShowingPolygonAndPolylineAnnotations) {
[self removeAllAnnotations:sender];
return;
}
_isShowingPolygonAndPolylineAnnotations = YES;
// Pacific Northwest triangle
CLLocationCoordinate2D triangleCoordinates[3] = {
CLLocationCoordinate2DMake(44, -122),
CLLocationCoordinate2DMake(46, -122),
CLLocationCoordinate2DMake(46, -121)
};
MGLPolygon *triangle = [MGLPolygon polygonWithCoordinates:triangleCoordinates count:3];
[self.mapView addAnnotation:triangle];
// West coast line
CLLocationCoordinate2D lineCoordinates[4] = {
CLLocationCoordinate2DMake(47.6025, -122.3327),
CLLocationCoordinate2DMake(45.5189, -122.6726),
CLLocationCoordinate2DMake(37.7790, -122.4177),
CLLocationCoordinate2DMake(34.0532, -118.2349)
};
MGLPolyline *line = [MGLPolyline polylineWithCoordinates:lineCoordinates count:4];
[self.mapView addAnnotation:line];
}
#pragma mark Help methods
- (IBAction)giveFeedback:(id)sender {
@@ -457,8 +488,8 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
if (menuItem.action == @selector(dropManyPins:)) {
return YES;
}
if (menuItem.action == @selector(removeAllPins:)) {
return self.mapView.annotations.count;
if (menuItem.action == @selector(removeAllAnnotations:)) {
return self.mapView.annotations.count > 0;
}
if (menuItem.action == @selector(startWorldTour:)) {
return !_isTouringWorld;
@@ -466,6 +497,9 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = {
if (menuItem.action == @selector(stopWorldTour:)) {
return _isTouringWorld;
}
if (menuItem.action == @selector(drawPolygonAndPolyLineAnnotations:)) {
return !_isShowingPolygonAndPolylineAnnotations;
}
if (menuItem.action == @selector(giveFeedback:)) {
return YES;
}

View File

@@ -104,8 +104,8 @@ NS_ASSUME_NONNULL_BEGIN
/** Returns the color to use when rendering the outline of a shape annotation.
The default stroke color is black. If a pattern color is specified, the
result is undefined.
The default stroke color is the selected menu item color. If a pattern
color is specified, the result is undefined.
@param mapView The map view rendering the shape annotation.
@param annotation The annotation being rendered.
@@ -114,8 +114,8 @@ NS_ASSUME_NONNULL_BEGIN
/** Returns the color to use when rendering the fill of a polygon annotation.
The default fill color is blue. If a pattern color is specified, the result
is undefined.
The default fill color is selected menu item color. If a pattern color
is specified, the result is undefined.
@param mapView The map view rendering the polygon annotation.
@param annotation The annotation being rendered.

View File

@@ -1987,14 +1987,14 @@ public:
- (mbgl::Color)strokeColorForShapeAnnotation:(MGLShape *)annotation {
NSColor *color = (_delegateHasStrokeColorsForShapeAnnotations
? [self.delegate mapView:self strokeColorForShapeAnnotation:annotation]
: [NSColor blackColor]);
: [NSColor selectedMenuItemColor]);
return MGLColorObjectFromNSColor(color);
}
- (mbgl::Color)fillColorForPolygonAnnotation:(MGLPolygon *)annotation {
NSColor *color = (_delegateHasFillColorsForShapeAnnotations
? [self.delegate mapView:self fillColorForPolygonAnnotation:annotation]
: [NSColor blueColor]);
: [NSColor selectedMenuItemColor]);
return MGLColorObjectFromNSColor(color);
}