diff --git a/modules/core/context.js b/modules/core/context.js index fd3c6d23b..ec37236b0 100644 --- a/modules/core/context.js +++ b/modules/core/context.js @@ -137,7 +137,7 @@ export function coreContext() { context.loadTiles = function(projection, callback) { var handle = window.requestIdleCallback(function() { _deferred.delete(handle); - if (connection && context.editable()) { + if (connection && context.editableDataEnabled()) { var cid = connection.getConnectionId(); connection.loadTiles(projection, afterLoad(cid, callback)); } @@ -148,7 +148,7 @@ export function coreContext() { context.loadTileAtLoc = function(loc, callback) { var handle = window.requestIdleCallback(function() { _deferred.delete(handle); - if (connection && context.editable()) { + if (connection && context.editableDataEnabled()) { var cid = connection.getConnectionId(); connection.loadTileAtLoc(loc, afterLoad(cid, callback)); } @@ -346,7 +346,15 @@ export function coreContext() { context.map = function() { return map; }; context.layers = function() { return map.layers; }; context.surface = function() { return map.surface; }; - context.editable = function() { return map.editable(); }; + context.editableDataEnabled = function() { return map.editableDataEnabled(); }; + context.editable = function() { + + // don't allow editing during save + var mode = context.mode(); + if (!mode || mode.id === 'save') return false; + + return map.editableDataEnabled(); + }; context.surfaceRect = function() { return map.surface.node().getBoundingClientRect(); }; diff --git a/modules/renderer/features.js b/modules/renderer/features.js index b99e2a05d..fba1b2268 100644 --- a/modules/renderer/features.js +++ b/modules/renderer/features.js @@ -93,7 +93,7 @@ export function rendererFeatures(context) { enable: function() { this.enabled = true; this.currentMax = this.defaultMax; }, disable: function() { this.enabled = false; this.currentMax = 0; }, hidden: function() { - return !context.editable() || + return !context.editableDataEnabled() || (this.count === 0 && !this.enabled) || this.count > this.currentMax * _cullFactor; }, diff --git a/modules/renderer/map.js b/modules/renderer/map.js index e3bd47316..98918c973 100644 --- a/modules/renderer/map.js +++ b/modules/renderer/map.js @@ -167,14 +167,14 @@ export function rendererMap(context) { _mouseEvent = d3_event; }) .on('mouseover.vertices', function() { - if (map.editable() && !_isTransformed) { + if (map.editableDataEnabled() && !_isTransformed) { var hover = d3_event.target.__data__; surface.call(drawVertices.drawHover, context.graph(), hover, map.extent()); dispatch.call('drawn', this, { full: false }); } }) .on('mouseout.vertices', function() { - if (map.editable() && !_isTransformed) { + if (map.editableDataEnabled() && !_isTransformed) { var hover = d3_event.relatedTarget && d3_event.relatedTarget.__data__; surface.call(drawVertices.drawHover, context.graph(), hover, map.extent()); dispatch.call('drawn', this, { full: false }); @@ -182,7 +182,7 @@ export function rendererMap(context) { }); context.on('enter.map', function() { - if (map.editable() && !_isTransformed) { + if (map.editableDataEnabled() && !_isTransformed) { // redraw immediately any objects affected by a change in selectedIDs. var graph = context.graph(); var selectedAndParents = {}; @@ -580,7 +580,7 @@ export function rendererMap(context) { } // OSM - if (map.editable()) { + if (map.editableDataEnabled()) { context.loadTiles(projection); drawEditable(difference, extent); } else { @@ -915,7 +915,8 @@ export function rendererMap(context) { }; - map.editable = function() { + map.editableDataEnabled = function() { + var layer = context.layers().layer('osm'); if (!layer || !layer.enabled()) return false; diff --git a/modules/ui/tools/add_favorite.js b/modules/ui/tools/add_favorite.js index c921bc7f6..d2b7e844b 100644 --- a/modules/ui/tools/add_favorite.js +++ b/modules/ui/tools/add_favorite.js @@ -23,8 +23,7 @@ export function uiToolAddFavorite(context) { } function osmEditable() { - var mode = context.mode(); - return context.editable() && mode && mode.id !== 'save'; + return context.editable(); } function toggleMode(d) { diff --git a/modules/ui/tools/add_recent.js b/modules/ui/tools/add_recent.js index 9db1803c8..04f3f0c11 100644 --- a/modules/ui/tools/add_recent.js +++ b/modules/ui/tools/add_recent.js @@ -23,8 +23,7 @@ export function uiToolAddRecent(context) { } function osmEditable() { - var mode = context.mode(); - return context.editable() && mode && mode.id !== 'save'; + return context.editable(); } function toggleMode(d) { diff --git a/modules/ui/tools/modes.js b/modules/ui/tools/modes.js index 8ae74ee99..348f0428e 100644 --- a/modules/ui/tools/modes.js +++ b/modules/ui/tools/modes.js @@ -51,8 +51,7 @@ export function uiToolOldDrawModes(context) { } function osmEditable() { - var mode = context.mode(); - return context.editable() && mode && mode.id !== 'save'; + return context.editable(); } modes.forEach(function(mode) { diff --git a/modules/ui/tools/search_add.js b/modules/ui/tools/search_add.js index da484593b..48b11f287 100644 --- a/modules/ui/tools/search_add.js +++ b/modules/ui/tools/search_add.js @@ -194,8 +194,7 @@ export function uiToolSearchAdd(context) { }; function osmEditable() { - var mode = context.mode(); - return context.editable() && mode && mode.id !== 'save'; + return context.editable(); } function updateEnabledState() { diff --git a/modules/ui/tools/undo_redo.js b/modules/ui/tools/undo_redo.js index 12414bd1d..7e1b216da 100644 --- a/modules/ui/tools/undo_redo.js +++ b/modules/ui/tools/undo_redo.js @@ -33,8 +33,7 @@ export function uiToolUndoRedo(context) { function editable() { - var mode = context.mode(); - return context.editable() && mode && mode.id !== 'save'; + return context.editable(); } diff --git a/modules/validations/disconnected_way.js b/modules/validations/disconnected_way.js index 4df3f07c6..5a7fa4825 100644 --- a/modules/validations/disconnected_way.js +++ b/modules/validations/disconnected_way.js @@ -194,7 +194,7 @@ export function validationDisconnectedWay() { // make sure the vertex is actually visible and editable var map = context.map(); - if (!map.editable() || !map.trimmedExtent().contains(vertex.loc)) { + if (!context.editable() || !map.trimmedExtent().contains(vertex.loc)) { map.zoomToEase(vertex); } diff --git a/modules/validations/impossible_oneway.js b/modules/validations/impossible_oneway.js index b03219c40..5f7c97a02 100644 --- a/modules/validations/impossible_oneway.js +++ b/modules/validations/impossible_oneway.js @@ -220,7 +220,7 @@ export function validationImpossibleOneway() { function continueDrawing(way, vertex, context) { // make sure the vertex is actually visible and editable var map = context.map(); - if (!map.editable() || !map.trimmedExtent().contains(vertex.loc)) { + if (!context.editable() || !map.trimmedExtent().contains(vertex.loc)) { map.zoomToEase(vertex); }