Index: /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 6814)
+++ /trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 6815)
@@ -68,8 +68,10 @@
         try {
             boolean exported = false;
+            boolean canceled = false;
             for (FileExporter exporter : ExtensionFileFilter.exporters) {
                 if (exporter.acceptFile(file, layer)) {
                     exporter.exportData(file, layer);
                     exported = true;
+                    canceled = exporter.isCanceled();
                     break;
                 }
@@ -78,4 +80,6 @@
                 JOptionPane.showMessageDialog(Main.parent, tr("No Exporter found! Nothing saved."), tr("Warning"),
                         JOptionPane.WARNING_MESSAGE);
+                return false;
+            } else if (canceled) {
                 return false;
             }
Index: /trunk/src/org/openstreetmap/josm/io/FileExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/FileExporter.java	(revision 6814)
+++ /trunk/src/org/openstreetmap/josm/io/FileExporter.java	(revision 6815)
@@ -16,5 +16,10 @@
 
     private boolean enabled;
+    private boolean canceled;
 
+    /**
+     * Constructs a new {@code FileExporter}.
+     * @param filter The extension file filter
+     */
     public FileExporter(ExtensionFileFilter filter) {
         this.filter = filter;
@@ -62,3 +67,21 @@
         // To be overriden by subclasses if needed
     }
+
+    /**
+     * Determines if this exporter has been canceled during export.
+     * @return true if this {@code FileExporter} has been canceled
+     * @since 6815
+     */
+    public final boolean isCanceled() {
+        return canceled;
+    }
+
+    /**
+     * Marks this exporter as canceled.
+     * @param canceled true to mark this exporter as canceled, {@code false} otherwise
+     * @since 6815
+     */
+    public final void setCanceled(boolean canceled) {
+        this.canceled = canceled;
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/io/GpxExporter.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 6814)
+++ /trunk/src/org/openstreetmap/josm/io/GpxExporter.java	(revision 6815)
@@ -127,6 +127,9 @@
         ed.showDialog();
 
-        if (ed.getValue() != 1)
+        if (ed.getValue() != 1) {
+            setCanceled(true);
             return;
+        }
+        setCanceled(false);
 
         Main.pref.put("lastAddAuthor", author.isSelected());
