Skip to content

Commit afca14f

Browse files
GerdPGerdP
authored andcommitted
fix #23648: Not possible to save a layer after marked as "Discourage upload"
- mark layer as changed and show notificaton when the toggle was triggered - remove overwrite of `SaveActionBase.updateEnabledState()` for "Save" git-svn-id: https://josm.openstreetmap.de/svn/trunk@19116 0c6e7542-c601-0410-84e7-c038aed88b3b
1 parent ce491cf commit afca14f

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

src/org/openstreetmap/josm/actions/SaveAction.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import org.openstreetmap.josm.gui.layer.Layer;
2323
import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
2424
import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
25-
import org.openstreetmap.josm.gui.layer.SaveToFile;
26-
import org.openstreetmap.josm.gui.util.GuiHelper;
2725
import org.openstreetmap.josm.spi.preferences.Config;
2826
import org.openstreetmap.josm.tools.GBC;
2927
import org.openstreetmap.josm.tools.Shortcut;
@@ -88,15 +86,6 @@ protected boolean listenToSelectionChange() {
8886
return false;
8987
}
9088

91-
@Override
92-
protected void updateEnabledState() {
93-
Layer activeLayer = getLayerManager().getActiveLayer();
94-
boolean en = activeLayer != null
95-
&& activeLayer.isSavable() && !(activeLayer.getAssociatedFile() != null
96-
&& activeLayer instanceof SaveToFile && !((SaveToFile) activeLayer).requiresSaveToFile());
97-
GuiHelper.runInEDT(() -> setEnabled(en));
98-
}
99-
10089
@Override
10190
public File getFile(Layer layer) {
10291
File f = layer.getAssociatedFile();

src/org/openstreetmap/josm/actions/SaveActionBase.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.openstreetmap.josm.gui.io.importexport.FileExporter;
2323
import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
2424
import org.openstreetmap.josm.gui.layer.Layer;
25+
import org.openstreetmap.josm.gui.layer.SaveToFile;
2526
import org.openstreetmap.josm.gui.util.GuiHelper;
2627
import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
2728
import org.openstreetmap.josm.spi.preferences.Config;
@@ -182,9 +183,14 @@ protected boolean listenToSelectionChange() {
182183
}
183184

184185
@Override
185-
protected void updateEnabledState() {
186+
protected final void updateEnabledState() {
186187
Layer activeLayer = getLayerManager().getActiveLayer();
187-
setEnabled(activeLayer != null && activeLayer.isSavable());
188+
boolean en = activeLayer != null && activeLayer.isSavable();
189+
// see #12669 and #23648
190+
if (en && this instanceof SaveAction && activeLayer instanceof SaveToFile) {
191+
en = activeLayer.getAssociatedFile() == null || ((SaveToFile) activeLayer).requiresSaveToFile();
192+
}
193+
setEnabled(en);
188194
}
189195

190196
/**

src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@
1111
import javax.swing.AbstractAction;
1212
import javax.swing.JCheckBoxMenuItem;
1313

14+
import org.openstreetmap.josm.gui.Notification;
1415
import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
1516
import org.openstreetmap.josm.gui.layer.Layer;
1617
import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
1718
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
19+
import org.openstreetmap.josm.gui.util.GuiHelper;
1820
import org.openstreetmap.josm.tools.ImageProvider;
1921

2022
/**
@@ -40,6 +42,8 @@ public ToggleUploadDiscouragedLayerAction(OsmDataLayer layer) {
4042
@Override
4143
public void actionPerformed(ActionEvent e) {
4244
layer.setUploadDiscouraged(!layer.isUploadDiscouraged());
45+
String msg = layer.isUploadDiscouraged() ? tr("Upload is discouraged") : tr("Upload is encouraged");
46+
GuiHelper.runInEDT(() -> new Notification(msg).show());
4347
LayerListDialog.getInstance().repaint();
4448
}
4549

src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,7 @@ public final void setUploadDiscouraged(boolean uploadDiscouraged) {
11951195
if (data.getUploadPolicy() != UploadPolicy.BLOCKED &&
11961196
(uploadDiscouraged ^ isUploadDiscouraged())) {
11971197
data.setUploadPolicy(uploadDiscouraged ? UploadPolicy.DISCOURAGED : UploadPolicy.NORMAL);
1198+
setRequiresSaveToFile(true);
11981199
for (LayerStateChangeListener l : layerStateChangeListeners) {
11991200
l.uploadDiscouragedChanged(this, uploadDiscouraged);
12001201
}

0 commit comments

Comments
 (0)