Index: trunk/src/org/openstreetmap/josm/actions/SaveAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 19115)
+++ trunk/src/org/openstreetmap/josm/actions/SaveAction.java	(revision 19116)
@@ -23,6 +23,4 @@
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
-import org.openstreetmap.josm.gui.layer.SaveToFile;
-import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.GBC;
@@ -90,13 +88,4 @@
 
     @Override
-    protected void updateEnabledState() {
-        Layer activeLayer = getLayerManager().getActiveLayer();
-        boolean en = activeLayer != null
-                && activeLayer.isSavable() && !(activeLayer.getAssociatedFile() != null
-                && activeLayer instanceof SaveToFile && !((SaveToFile) activeLayer).requiresSaveToFile());
-        GuiHelper.runInEDT(() -> setEnabled(en));
-    }
-
-    @Override
     public File getFile(Layer layer) {
         File f = layer.getAssociatedFile();
Index: trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 19115)
+++ trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 19116)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
 import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.SaveToFile;
 import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
@@ -183,7 +184,12 @@
 
     @Override
-    protected void updateEnabledState() {
+    protected final void updateEnabledState() {
         Layer activeLayer = getLayerManager().getActiveLayer();
-        setEnabled(activeLayer != null && activeLayer.isSavable());
+        boolean en = activeLayer != null && activeLayer.isSavable();
+        // see #12669 and #23648
+        if (en && this instanceof SaveAction && activeLayer instanceof SaveToFile) {
+            en = activeLayer.getAssociatedFile() == null || ((SaveToFile) activeLayer).requiresSaveToFile();
+        }
+        setEnabled(en);
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java	(revision 19115)
+++ trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java	(revision 19116)
@@ -12,8 +12,10 @@
 import javax.swing.JCheckBoxMenuItem;
 
+import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -41,4 +43,6 @@
     public void actionPerformed(ActionEvent e) {
         layer.setUploadDiscouraged(!layer.isUploadDiscouraged());
+        String msg = layer.isUploadDiscouraged() ? tr("Upload is discouraged") : tr("Upload is encouraged");
+        GuiHelper.runInEDT(() -> new Notification(msg).show());
         LayerListDialog.getInstance().repaint();
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 19115)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 19116)
@@ -1196,4 +1196,5 @@
                 (uploadDiscouraged ^ isUploadDiscouraged())) {
             data.setUploadPolicy(uploadDiscouraged ? UploadPolicy.DISCOURAGED : UploadPolicy.NORMAL);
+            setRequiresSaveToFile(true);
             for (LayerStateChangeListener l : layerStateChangeListeners) {
                 l.uploadDiscouragedChanged(this, uploadDiscouraged);
