Index: src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
===================================================================
--- src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 15795)
+++ src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(working copy)
@@ -3,6 +3,7 @@
 
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.BorderLayout;
 import java.awt.GridBagLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -27,6 +28,7 @@
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
 
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -86,7 +88,6 @@
         pnl.add(hcbUploadComment, GBC.eol().fill(GBC.HORIZONTAL));
 
         JEditorPane sourceLabel = new JMultilineLabel("<html><b>" + tr("Specify the data source for the changes") + ":</b>");
-        pnl.add(sourceLabel, GBC.eol().insets(0, 8, 10, 0).fill(GBC.HORIZONTAL));
         JEditorPane obtainSourceOnce = new JMultilineLabel(
                 "<html><a href=\"urn:changeset-source\">" + tr("just once") + "</a></html>");
         obtainSourceOnce.addHyperlinkListener(e -> {
@@ -105,8 +106,15 @@
         obtainSource.add(obtainSourceAutomatically, GBC.std().anchor(GBC.WEST));
         obtainSource.add(obtainSourceOnce, GBC.std().anchor(GBC.WEST));
         obtainSource.add(new JLabel(), GBC.eol().fill(GBC.HORIZONTAL));
-        pnl.add(obtainSource, GBC.eol().insets(0, 0, 10, 3).fill(GBC.HORIZONTAL));
-
+        
+        // Revert back to previous UI due to #18523.
+        // pnl.add(sourceLabel, GBC.eol().insets(0, 8, 10, 0).fill(GBC.HORIZONTAL));
+        // pnl.add(obtainSource, GBC.eol().insets(0, 0, 10, 3).fill(GBC.HORIZONTAL));
+        JMultilineLabel obtainSourceTmp = new JMultilineLabel("<html><b>" + tr("Specify the data source for the changes")
+            + "</b> (<a href=\"urn:changeset-source\">" + tr("obtain from current layers") + "</a>)<b>:</b>");
+        obtainSourceTmp.addHyperlinkListener(obtainSourceOnce.getListeners(HyperlinkListener.class)[0]);
+        pnl.add(obtainSourceTmp, GBC.eol().insets(0, 8, 10, 3).fill(GBC.HORIZONTAL));
+        
         hcbUploadSource.setToolTipText(tr("Enter a source"));
         hcbUploadSource.setMaxTextLength(Changeset.MAX_CHANGESET_TAG_LENGTH);
         populateHistoryComboBox(hcbUploadSource, SOURCE_HISTORY_KEY, getDefaultSources());
@@ -120,6 +128,7 @@
         pnl.addAncestorListener(new AncestorListener() {
             @Override
             public void ancestorAdded(AncestorEvent event) {
+                obtainSourceAutomatically.setSelected(Config.getPref().getBoolean("upload.source.obtainautomatically"));
                 if (obtainSourceAutomatically.isSelected())
                     automaticallyAddSource();
             }
@@ -176,11 +185,11 @@
     }
 
     protected void build() {
-        setLayout(new GridBagLayout());
+        setLayout(new BorderLayout());
         setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
-        add(buildUploadCommentPanel(), GBC.eol().fill(GBC.BOTH));
-        add(pnlUploadParameterSummary, GBC.eol().fill(GBC.BOTH));
-        add(cbRequestReview, GBC.eol().fill(GBC.BOTH));
+        add(buildUploadCommentPanel(), BorderLayout.NORTH);
+        add(pnlUploadParameterSummary, BorderLayout.CENTER);
+        add(cbRequestReview, BorderLayout.SOUTH);
         cbRequestReview.addItemListener(e -> changesetReviewModel.setReviewRequested(e.getStateChange() == ItemEvent.SELECTED));
     }
 
