Index: trunk/src/org/openstreetmap/josm/actions/AboutAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/actions/AboutAction.java	(revision 5050)
@@ -71,7 +71,8 @@
         info.add(GBC.glue(0,10), GBC.eol());
         info.add(new JLabel(tr("Homepage")), GBC.std().insets(10,0,10,0));
-        info.add(new UrlLabel("http://josm.openstreetmap.de"), GBC.eol().fill(GBC.HORIZONTAL));
+        info.add(new UrlLabel("http://josm.openstreetmap.de",2), GBC.eol().fill(GBC.HORIZONTAL));
+        info.add(GBC.glue(0,5), GBC.eol());
         info.add(new JLabel(tr("Bug Reports")), GBC.std().insets(10,0,10,0));
-        info.add(new UrlLabel("http://josm.openstreetmap.de/newticket"), GBC.eol().fill(GBC.HORIZONTAL));
+        info.add(new UrlLabel("http://josm.openstreetmap.de/newticket",2), GBC.eol().fill(GBC.HORIZONTAL));
 
         JTextArea revision = new JTextArea();
Index: trunk/src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/actions/Map_Rectifier_WMSmenuAction.java	(revision 5050)
@@ -137,5 +137,5 @@
             if(!s.url.equals("")) {
                 panel.add(serviceBtn, GBC.std());
-                panel.add(new UrlLabel(s.url, tr("Visit Homepage")), GBC.eol().anchor(GridBagConstraints.EAST));
+                panel.add(new UrlLabel(s.url, tr("Visit Homepage")), GBC.eol().anchor(GridBagConstraints.EAST), 2);
             } else {
                 panel.add(serviceBtn, GBC.eol().anchor(GridBagConstraints.WEST));
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5050)
@@ -12,6 +12,8 @@
 import java.awt.BasicStroke;
 import java.awt.Color;
+import java.awt.Component;
 import java.awt.Cursor;
 import java.awt.Graphics2D;
+import java.awt.KeyboardFocusManager;
 import java.awt.MenuItem;
 import java.awt.Point;
@@ -39,9 +41,5 @@
 
 import java.util.TreeSet;
-import javax.swing.AbstractAction;
-import javax.swing.JOptionPane;
-
-import javax.swing.JPopupMenu;
-import javax.swing.Timer;
+import javax.swing.*;
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.JosmAction;
@@ -224,4 +222,15 @@
             return;
         if (event instanceof KeyEvent) {
+            Component focused = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
+            Component wantedFocus = Main.map.mapView.getParent();
+            boolean foundMapViewAncestor=false;
+            while (focused!=null) {
+                if (focused==wantedFocus) {
+                    foundMapViewAncestor=true;
+                }
+                focused = focused.getParent();
+            }
+            // we accept only events that come from map or toggle dialogs, not from menu and dialogs
+            if (!foundMapViewAncestor) return;
             processKeyEvent((KeyEvent) event);
         } //  toggle angle snapping
@@ -238,5 +247,5 @@
     private Timer timer;
     void processKeyEvent(KeyEvent e) {
-        if (!snappingShortcut.isEvent(e))
+        if (!snappingShortcut.isEvent(e) && !getShortcut().isEvent(e))
             return;
 
@@ -261,6 +270,4 @@
 
     private void doKeyPressEvent(KeyEvent e) {
-        if (!snappingShortcut.isEvent(e))
-            return;
         snapHelper.setFixedMode();
         computeHelperLine();
@@ -268,6 +275,4 @@
     }
     private void doKeyReleaseEvent(KeyEvent e) {
-        if (!snappingShortcut.isEvent(e))
-            return;
         snapHelper.unFixOrTurnOff();
         computeHelperLine();
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 5050)
@@ -2,10 +2,7 @@
 package org.openstreetmap.josm.gui.history;
 
+import java.awt.*;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
@@ -48,10 +45,10 @@
 
         pnlUserAndChangeset = new JPanel();
-        pnlUserAndChangeset.setLayout(new FlowLayout(FlowLayout.LEFT));
-        lblUser = new UrlLabel();
+        pnlUserAndChangeset.setLayout(new GridLayout(2,2));
+        lblUser = new UrlLabel("", 2);
         pnlUserAndChangeset.add(new JLabel(tr("User:")));
         pnlUserAndChangeset.add(lblUser);
         pnlUserAndChangeset.add(new JLabel(tr("Changeset:")));
-        lblChangeset = new UrlLabel();
+        lblChangeset = new UrlLabel("", 2);
         pnlUserAndChangeset.add(lblChangeset);
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java	(revision 5050)
@@ -839,5 +839,5 @@
                             tr("<html>Upload of unprocessed GPS data as map data is considered harmful.<br>If you want to upload traces, look here:</html>")),
                             GBC.eol());
-            msg.add(new UrlLabel(tr("http://www.openstreetmap.org/traces")), GBC.eop());
+            msg.add(new UrlLabel(tr("http://www.openstreetmap.org/traces"),2), GBC.eop());
             if (!ConditionalOptionPaneUtil.showConfirmationDialog("convert_to_data", Main.parent, msg, tr("Warning"),
                     JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, JOptionPane.OK_OPTION))
Index: trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 5050)
@@ -854,5 +854,5 @@
             }
             if (url != null) {
-                p.add(new UrlLabel(url, locale_text), GBC.eol().anchor(GBC.WEST));
+                p.add(new UrlLabel(url, locale_text, 2), GBC.eol().anchor(GBC.WEST));
             }
             return false;
Index: trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java	(revision 5050)
@@ -126,9 +126,9 @@
                                     tr("You have encountered an error in JOSM. Before you file a bug report " +
                                             "make sure you have updated to the latest version of JOSM here:")), GBC.eol());
-                            p.add(new UrlLabel("http://josm.openstreetmap.de/#Download"), GBC.eop().insets(8,0,0,0));
+                            p.add(new UrlLabel("http://josm.openstreetmap.de/#Download",2), GBC.eop().insets(8,0,0,0));
                             p.add(new JMultilineLabel(
                                     tr("You should also update your plugins. If neither of those help please " +
                                             "file a bug report in our bugtracker using this link:")), GBC.eol());
-                            p.add(new UrlLabel(url.toString(), "http://josm.openstreetmap.de/josmticket?..."), GBC.eop().insets(8,0,0,0));
+                            p.add(new UrlLabel(url.toString(), "http://josm.openstreetmap.de/josmticket?...",2), GBC.eop().insets(8,0,0,0));
                             p.add(new JMultilineLabel(
                                     tr("There the error information provided below should already be " +
@@ -138,5 +138,5 @@
                                     tr("Alternatively, if that does not work you can manually fill in the information " +
                                             "below at this URL:")), GBC.eol());
-                            p.add(new UrlLabel("http://josm.openstreetmap.de/newticket"), GBC.eop().insets(8,0,0,0));
+                            p.add(new UrlLabel("http://josm.openstreetmap.de/newticket",2), GBC.eop().insets(8,0,0,0));
                             if (Utils.copyToClipboard(text)) {
                                 p.add(new JLabel(tr("(The text has already been copied to your clipboard.)")), GBC.eop());
Index: trunk/src/org/openstreetmap/josm/tools/UrlLabel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/UrlLabel.java	(revision 5049)
+++ trunk/src/org/openstreetmap/josm/tools/UrlLabel.java	(revision 5050)
@@ -2,9 +2,9 @@
 package org.openstreetmap.josm.tools;
 
+import java.awt.Cursor;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
-import javax.swing.JEditorPane;
-import javax.swing.event.HyperlinkEvent;
-import javax.swing.event.HyperlinkListener;
+import javax.swing.JLabel;
+import javax.swing.SwingUtilities;
 import static org.openstreetmap.josm.tools.I18n.tr;
 
@@ -12,30 +12,39 @@
  * Label that contains a clickable link.
  * @author Imi
+ * 5050: Simplifications by Zverikk included by akks
  */
-public class UrlLabel extends JEditorPane implements HyperlinkListener, MouseListener {
+public class UrlLabel extends JLabel implements MouseListener {
 
     private String url = "";
     private String description = "";
+    private int fontPlus;
 
     public UrlLabel() {
-        addHyperlinkListener(this);
         addMouseListener(this);
-        setEditable(false);
-        setOpaque(false);
+        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
     }
 
     public UrlLabel(String url) {
-        this (url, url);
+        this (url, url, 0);
+    }
+    
+    public UrlLabel(String url, int fontPlus) {
+        this (url, url, fontPlus);
     }
 
     public UrlLabel(String url, String description) {
+        this (url, url, 0);
+    }
+    
+    public UrlLabel(String url, String description, int fontPlus) {
         this();
         setUrl(url);
         setDescription(description);
+        this.fontPlus = fontPlus;
+        if (fontPlus!=0) setFont(getFont().deriveFont(0, getFont().getSize()+fontPlus));
         refresh();
     }
 
     protected void refresh() {
-        setContentType("text/html");
         if (url != null) {
             setText("<html><a href=\""+url+"\">"+description+"</a></html>");
@@ -44,10 +53,4 @@
         }
         setToolTipText(String.format("<html>%s<br/>%s</html>",url, tr("Right click = copy to clipboard")));
-    }
-
-    public void hyperlinkUpdate(HyperlinkEvent e) {
-        if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
-            OpenBrowser.displayUrl(url);
-        }
     }
 
@@ -75,5 +78,11 @@
 
     @Override
-    public void mouseClicked(MouseEvent e) {    }
+    public void mouseClicked(MouseEvent e) {
+        if( SwingUtilities.isLeftMouseButton(e) ) {
+            OpenBrowser.displayUrl(url);
+        } else if( SwingUtilities.isRightMouseButton(e) ) {
+            Utils.copyToClipboard(url);
+        }
+    }
     @Override
     public void mousePressed(MouseEvent e) {    }
@@ -82,11 +91,6 @@
     @Override
     public void mouseExited(MouseEvent e) {    }
-
     @Override
-    public void mouseReleased(MouseEvent e) {
-        if (e.getButton() == MouseEvent.BUTTON3) {
-            Utils.copyToClipboard(url);
-        }
-    }
+    public void mouseReleased(MouseEvent e) {    }
 
 }
