Ticket #16891: 16891.patch

File 16891.patch, 2.8 KB (added by simon04, 7 years ago)
  • src/org/openstreetmap/josm/tools/OpenBrowser.java

    diff --git a/src/org/openstreetmap/josm/tools/OpenBrowser.java b/src/org/openstreetmap/josm/tools/OpenBrowser.java
    index 083de23d1..739e3c92f 100644
    a b public static String displayUrl(URI uri) {  
    4242
    4343        if (Desktop.isDesktopSupported()) {
    4444            try {
    45                 if (PlatformManager.isPlatformWindows()) {
    46                     // Desktop API works fine under Windows, so we don't try any fallback in case of I/O exceptions because it's not API's fault
    47                     Desktop.getDesktop().browse(uri);
    48                 } else if (PlatformManager.isPlatformUnixoid() || PlatformManager.isPlatformOsx()) {
     45                if (PlatformManager.isPlatformWindows() || PlatformManager.isPlatformUnixoid() || PlatformManager.isPlatformOsx()) {
    4946                    // see #5629 #5108 #9568
    5047                    PlatformManager.getPlatform().openUrl(uri.toString());
    5148                } else {
  • src/org/openstreetmap/josm/tools/PlatformHookWindows.java

    diff --git a/src/org/openstreetmap/josm/tools/PlatformHookWindows.java b/src/org/openstreetmap/josm/tools/PlatformHookWindows.java
    index 2a9d46f35..230856541 100644
    a b  
    3030import static org.openstreetmap.josm.tools.Utils.getSystemProperty;
    3131import static org.openstreetmap.josm.tools.WinRegistry.HKEY_LOCAL_MACHINE;
    3232
    33 import java.awt.GraphicsEnvironment;
     33import java.awt.*;
    3434import java.io.BufferedWriter;
    3535import java.io.File;
    3636import java.io.IOException;
     
    3939import java.io.OutputStreamWriter;
    4040import java.io.Writer;
    4141import java.lang.reflect.InvocationTargetException;
     42import java.net.URI;
     43import java.net.URISyntaxException;
    4244import java.nio.charset.StandardCharsets;
    4345import java.nio.file.DirectoryIteratorException;
    4446import java.nio.file.DirectoryStream;
    public void startupHook(JavaExpirationCallback callback) {  
    187189
    188190    @Override
    189191    public void openUrl(String url) throws IOException {
    190         Runtime.getRuntime().exec(new String[]{"rundll32", "url.dll,FileProtocolHandler", url});
     192        final String customBrowser = Config.getPref().get("browser.windows", null);
     193        if (customBrowser != null) {
     194            Runtime.getRuntime().exec(new String[]{customBrowser, url});
     195            return;
     196        }
     197        try {
     198            // Desktop API works fine under Windows
     199            Desktop.getDesktop().browse(new URI(url));
     200        } catch (IOException | URISyntaxException e) {
     201            Logging.log(Logging.LEVEL_WARN, "Desktop class failed. Platform dependent fall back for open url in browser.", e);
     202            Runtime.getRuntime().exec(new String[]{"rundll32", "url.dll,FileProtocolHandler", url});
     203        }
    191204    }
    192205
    193206    @Override