From 609d1355fe5a4477292eaaf8cb7f235bc32b5594 Mon Sep 17 00:00:00 2001 From: rlx <0x0073@0x2620.org> Date: Fri, 21 Sep 2012 09:53:05 +0000 Subject: [PATCH] Map Editor: correctly set self.options.selected when adding or removing a place (fixes #990) --- source/Ox.UI/js/Map/MapEditor.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/Ox.UI/js/Map/MapEditor.js b/source/Ox.UI/js/Map/MapEditor.js index f8349f5e..827f1d47 100644 --- a/source/Ox.UI/js/Map/MapEditor.js +++ b/source/Ox.UI/js/Map/MapEditor.js @@ -789,9 +789,11 @@ Ox.MapEditor = function(options, self) { if (!self.isAsync) { place.id = self.selectedPlace.slice(1); // fixme: safe? self.selectedPlace = place.id; + self.options.selected = place.id; self.options.places.push(place); self.$list.options({ - items: Ox.clone(self.options.places), + items: Ox.clone(self.options.places) + }).options({ selected: [place.id] }); self.$map.addPlace(place); @@ -802,6 +804,7 @@ Ox.MapEditor = function(options, self) { self.options.addPlace(encodeValues(place), function(result) { if (result.status.code == 200) { place.id = result.data.id; + self.options.selected = place.id; self.selectedPlace = place.id; self.$list.reloadList().options({selected: [place.id]}); self.$map.addPlace(place); @@ -973,6 +976,7 @@ Ox.MapEditor = function(options, self) { if (!self.isAsync) { // fixme: doesn't call self.options.removePlace! index = Ox.getIndexById(self.options.places, self.selectedPlace); + self.options.selected = ''; self.options.places.splice(index, 1); self.$list.options({items: Ox.clone(self.options.places)}); self.$addPlaceButton.options({title: 'Add Place'}); @@ -982,6 +986,7 @@ Ox.MapEditor = function(options, self) { if (self.isAsync) { self.$addPlaceButton.options({disabled: true, title: 'Removing...'}) self.options.removePlace({id: self.selectedPlace}, function() { + self.options.selected = ''; self.$list.options({selected: []}).reloadList(true); self.options.hasMatches && self.$matchesInput.hide(); self.options.mode == 'define' && self.$definePlaceButton.options({ @@ -1042,6 +1047,7 @@ Ox.MapEditor = function(options, self) { && !self.$list.value(self.options.selected, 'type'); self.selectedPlace = place.id || ''; if (isResult && isUndefined) { + Ox.print('place.id', place.id, 'self.options.selected', self.options.selected, 'type', self.$list.value(self.options.selected)); // define undefined place self.selectedPlace = self.options.selected; place.name = self.$list.value(self.options.selected, 'name');