Index: /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 12939)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/tags/CombinePrimitiveResolverDialog.java	(revision 12940)
@@ -519,29 +519,35 @@
             }
         } else if (!GraphicsEnvironment.isHeadless()) {
-            // Build conflict resolution dialog
-            final CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(Main.parent, tagModel, relModel);
-
-            // Ensure a proper title is displayed instead of a previous target (fix #7925)
-            if (targetPrimitives.size() == 1) {
-                dialog.setTargetPrimitive(targetPrimitives.iterator().next(), false);
-            } else {
-                dialog.setTargetPrimitive(null, false);
-            }
-
-            // Resolve tag conflicts
-            GuiHelper.runInEDTAndWait(() -> {
-                tagModel.fireTableDataChanged();
-                relModel.fireTableDataChanged();
-                dialog.updateTitle();
+            UserCancelException canceled = GuiHelper.runInEDTAndWaitAndReturn(() -> {
+                // Build conflict resolution dialog
+                final CombinePrimitiveResolverDialog dialog = new CombinePrimitiveResolverDialog(Main.parent, tagModel, relModel);
+
+                // Ensure a proper title is displayed instead of a previous target (fix #7925)
+                if (targetPrimitives.size() == 1) {
+                    dialog.setTargetPrimitive(targetPrimitives.iterator().next(), false);
+                } else {
+                    dialog.setTargetPrimitive(null, false);
+                }
+
+                // Resolve tag conflicts
+                GuiHelper.runInEDTAndWait(() -> {
+                    tagModel.fireTableDataChanged();
+                    relModel.fireTableDataChanged();
+                    dialog.updateTitle();
+                });
+                dialog.setVisible(true);
+                if (!dialog.isApplied()) {
+                    return new UserCancelException();
+                }
+
+                // Build commands
+                for (OsmPrimitive i : targetPrimitives) {
+                    dialog.setTargetPrimitive(i, false);
+                    cmds.addAll(dialog.buildResolutionCommands());
+                }
+                return null;
             });
-            dialog.setVisible(true);
-            if (!dialog.isApplied()) {
-                throw new UserCancelException();
-            }
-
-            // Build commands
-            for (OsmPrimitive i : targetPrimitives) {
-                dialog.setTargetPrimitive(i, false);
-                cmds.addAll(dialog.buildResolutionCommands());
+            if (canceled != null) {
+                throw canceled;
             }
         }
