Index: trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 18115)
+++ trunk/src/org/openstreetmap/josm/data/imagery/ImageryInfo.java	(revision 18116)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.tools.Logging;
 import org.openstreetmap.josm.tools.MultiMap;
+import org.openstreetmap.josm.tools.PlatformManager;
 import org.openstreetmap.josm.tools.StreamUtils;
 import org.openstreetmap.josm.tools.Utils;
@@ -705,5 +706,4 @@
     }
 
-
     /**
      * Returns a tool tip text for display.
@@ -713,27 +713,23 @@
     @Override
     public String getToolTipText() {
+        boolean htmlSupported = PlatformManager.getPlatform().isHtmlSupportedInMenuTooltips();
         StringBuilder res = new StringBuilder(getName());
         boolean html = false;
         String dateStr = getDate();
         if (dateStr != null && !dateStr.isEmpty()) {
-            res.append("<br>").append(tr("Date of imagery: {0}", dateStr));
-            html = true;
+            html = addNewLineInTooltip(res, tr("Date of imagery: {0}", dateStr), htmlSupported);
         }
         if (category != null && category.getDescription() != null) {
-            res.append("<br>").append(tr("Imagery category: {0}", category.getDescription()));
-            html = true;
+            html = addNewLineInTooltip(res, tr("Imagery category: {0}", category.getDescription()), htmlSupported);
         }
         if (bestMarked) {
-            res.append("<br>").append(tr("This imagery is marked as best in this region in other editors."));
-            html = true;
+            html = addNewLineInTooltip(res, tr("This imagery is marked as best in this region in other editors."), htmlSupported);
         }
         if (overlay) {
-            res.append("<br>").append(tr("This imagery is an overlay."));
-            html = true;
+            html = addNewLineInTooltip(res, tr("This imagery is an overlay."), htmlSupported);
         }
         String desc = getDescription();
         if (desc != null && !desc.isEmpty()) {
-            res.append("<br>").append(Utils.escapeReservedCharactersHTML(desc));
-            html = true;
+            html = addNewLineInTooltip(res, desc, htmlSupported);
         }
         if (html) {
@@ -741,4 +737,13 @@
         }
         return res.toString();
+    }
+
+    private static boolean addNewLineInTooltip(StringBuilder res, String line, boolean htmlSupported) {
+        if (htmlSupported) {
+            res.append("<br>").append(Utils.escapeReservedCharactersHTML(line));
+        } else {
+            res.append('\n').append(line);
+        }
+        return htmlSupported;
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 18115)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHook.java	(revision 18116)
@@ -234,4 +234,13 @@
 
     /**
+     * Determines if HTML rendering is supported in menu tooltips.
+     * @return {@code true} if HTML rendering is supported in menu tooltips
+     * @since 18116
+     */
+    default boolean isHtmlSupportedInMenuTooltips() {
+        return true;
+    }
+
+    /**
      * Returns extended modifier key used as the appropriate accelerator key for menu shortcuts.
      * It is advised everywhere to use {@link Toolkit#getMenuShortcutKeyMask()} to get the cross-platform modifier, but:
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 18115)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 18116)
@@ -27,4 +27,6 @@
 import java.util.Objects;
 import java.util.concurrent.ExecutionException;
+
+import javax.swing.UIManager;
 
 import org.openstreetmap.josm.data.Preferences;
@@ -95,4 +97,13 @@
         checkExpiredJava(javaCallback);
         checkWebStartMigration(webStartCallback);
+    }
+
+    @Override
+    public boolean isHtmlSupportedInMenuTooltips() {
+        // See #17915 - JDK-8164935
+        // "Mac" is the native LAF, "Aqua" is Quaqua. Both use native menus with native tooltips.
+        String laf = UIManager.getLookAndFeel().getID();
+        return !("true".equals(Utils.getSystemProperty("apple.laf.useScreenMenuBar"))
+                && ("Aqua".equals(laf) || laf.contains("Mac")));
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/Shortcut.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 18115)
+++ trunk/src/org/openstreetmap/josm/tools/Shortcut.java	(revision 18116)
@@ -21,5 +21,4 @@
 import javax.swing.JMenu;
 import javax.swing.KeyStroke;
-import javax.swing.UIManager;
 import javax.swing.text.JTextComponent;
 
@@ -640,7 +639,5 @@
                 .filter(text -> !text.isEmpty());
 
-        final String laf = UIManager.getLookAndFeel().getID();
-        // "Mac" is the native LAF, "Aqua" is Quaqua. Both use native menus with native tooltips.
-        final boolean canHtml = !(PlatformManager.isPlatformOsx() && (laf.contains("Mac") || laf.contains("Aqua")));
+        final boolean canHtml = PlatformManager.getPlatform().isHtmlSupportedInMenuTooltips();
 
         StringBuilder result = new StringBuilder(48);
@@ -664,4 +661,3 @@
         return result.toString();
     }
-
 }
