From 187d9c2368fd7700f42ef24b6706ccf5ec7b8c93 Mon Sep 17 00:00:00 2001 From: Vladimir Agafonkin Date: Mon, 27 Jan 2014 18:18:04 +0200 Subject: [PATCH] move Safari hacks to CSS, do not optimize contrast in Chrome --- dist/leaflet.css | 11 ++++++++++- src/core/Browser.js | 5 +++-- src/layer/tile/GridLayer.js | 5 ----- src/map/Map.js | 1 + 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dist/leaflet.css b/dist/leaflet.css index 89bfcc40c94..ff692dbb35c 100644 --- a/dist/leaflet.css +++ b/dist/leaflet.css @@ -25,7 +25,16 @@ -moz-user-select: none; user-select: none; -webkit-user-drag: none; - image-rendering:-webkit-optimize-contrast; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; } .leaflet-marker-icon, .leaflet-marker-shadow { diff --git a/src/core/Browser.js b/src/core/Browser.js index 856b9990cf0..f60e0390c13 100644 --- a/src/core/Browser.js +++ b/src/core/Browser.js @@ -12,6 +12,7 @@ webkit = ua.indexOf('webkit') !== -1, phantomjs = ua.indexOf('phantom') !== -1, android23 = ua.search('android [23]') !== -1, + chrome = ua.indexOf('chrome') !== -1, mobile = typeof orientation !== 'undefined', msPointer = navigator.msPointerEnabled && navigator.msMaxTouchPoints && !window.PointerEvent, @@ -40,8 +41,8 @@ gecko: (ua.indexOf('gecko') !== -1) && !webkit && !window.opera && !ie, android: ua.indexOf('android') !== -1, android23: android23, - chrome: ua.indexOf('chrome') !== -1, - safari: ua.indexOf('safari') !== -1, + chrome: chrome, + safari: !chrome && ua.indexOf('safari') !== -1, ie3d: ie3d, webkit3d: webkit3d, diff --git a/src/layer/tile/GridLayer.js b/src/layer/tile/GridLayer.js index 2760e49044a..d590687950e 100644 --- a/src/layer/tile/GridLayer.js +++ b/src/layer/tile/GridLayer.js @@ -200,11 +200,6 @@ L.GridLayer = L.Layer.extend({ front.innerHTML = ''; // hack that prevents hw layers "stretching" when loading new tiles - if (this._zoomAnimated && L.Browser.safari) { - front.style.width = '1600px'; - front.style.height = '1600px'; - front.style.WebkitTransformOrigin = '0 0'; - } if (this._zoomAnimated && e && e.hard) { this._clearBgBuffer(); diff --git a/src/map/Map.js b/src/map/Map.js index 679bc0347b4..4ae2101d04c 100644 --- a/src/map/Map.js +++ b/src/map/Map.js @@ -435,6 +435,7 @@ L.Map = L.Evented.extend({ (L.Browser.touch ? ' leaflet-touch' : '') + (L.Browser.retina ? ' leaflet-retina' : '') + (L.Browser.ielt9 ? ' leaflet-oldie' : '') + + (L.Browser.safari ? ' leaflet-safari' : '') + (this._fadeAnimated ? ' leaflet-fade-anim' : '')); var position = L.DomUtil.getStyle(container, 'position');