Index: /applications/editors/josm/plugins/utilsplugin2/build.xml
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/build.xml	(revision 30458)
+++ /applications/editors/josm/plugins/utilsplugin2/build.xml	(revision 30459)
@@ -5,5 +5,5 @@
     <property name="commit.message" value="[josm_utilsplugin2]: select boundary by double-click; multitagger table highlights"/>
     <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
-    <property name="plugin.main.version" value="7001"/>
+    <property name="plugin.main.version" value="7146"/>
 
     <property name="plugin.author" value="Kalle Lampila, Upliner, Zverik, akks, joshdoe and others"/>
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/UtilsPlugin2.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/UtilsPlugin2.java	(revision 30458)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/UtilsPlugin2.java	(revision 30459)
@@ -2,14 +2,9 @@
 package org.openstreetmap.josm.plugins.utilsplugin2;
 
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseListener;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
-import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.search.SearchCompiler;
-import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.gui.MainMenu;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -132,22 +127,5 @@
         SearchCompiler.addMatchFactory(new UtilsSimpleMatchFactory());
     }
-    
-    MouseListener mouseListener = new MouseAdapter() {
-        @Override
-        public void mouseReleased(final MouseEvent e) {
-            if (e.getButton()==MouseEvent.BUTTON1 && 
-                    e.getClickCount() > 1 && Main.isDisplayingMapView() && Main.map.mapMode == Main.map.mapModeSelect &&
-                    (0 == (e.getModifiersEx() & (MouseEvent.ALT_DOWN_MASK + MouseEvent.CTRL_DOWN_MASK + MouseEvent.SHIFT_DOWN_MASK) ))) {
-                SwingUtilities.invokeLater(new Runnable() {
-                    @Override
-                    public void run() {
-                        EastNorth en = Main.map.mapView.getEastNorth(e.getX(), e.getY());
-                        SelectBoundaryAction.selectByInternalPoint(en);
-                    }
-                });
-            }
-        }
-    };
-    
+
     @Override
     public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) {
@@ -182,7 +160,4 @@
         drawArc.setEnabled(enabled);
         multiTag.setEnabled(enabled);
-        if (oldFrame!=null && oldFrame.mapView!=null) oldFrame.mapView.removeMouseListener(mouseListener);
-        if (newFrame!=null && newFrame.mapView!=null && Main.pref.getBoolean(UtilsPluginPreferences.PREF_DOUBLECLICK, true))
-            newFrame.mapView.addMouseListener(mouseListener);
     }
     
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/UtilsPluginPreferences.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/UtilsPluginPreferences.java	(revision 30458)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/customurl/UtilsPluginPreferences.java	(revision 30459)
@@ -14,10 +14,8 @@
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
 import java.awt.event.ActionListener;
-import javax.swing.JCheckBox;
 import javax.swing.JPanel;
 import javax.swing.ListSelectionModel;
 import javax.swing.event.TableModelListener;
 import javax.swing.table.DefaultTableModel;
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.preferences.DefaultTabPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
@@ -32,6 +30,4 @@
     JButton loadButton;
     JButton saveButton;
-    JCheckBox dblClick = new JCheckBox(tr("Double click selects object by its internal point"));
-    public static final String PREF_DOUBLECLICK = "utilsplugin2.doubleclick";
 
     public UtilsPluginPreferences() {
@@ -81,7 +77,4 @@
                 + " Your can manually load settings from file <b>customurl.txt</b> in JOSM folder"));
 
-        dblClick.setSelected(Main.pref.getBoolean(PREF_DOUBLECLICK, true));
-        all.add(dblClick, GBC.std().insets(5,10,0,0));
-        
         all.add(new JLabel(tr("Custom URL configuration")),GBC.std().insets(5,10,0,0));
         all.add(resetButton,GBC.std().insets(25,10,0,0));
@@ -134,5 +127,5 @@
         List<String> lst = readItemsFromTable();
         URLList.updateURLList(lst);
-        Main.pref.put(PREF_DOUBLECLICK, dblClick.isSelected());
+
         return false;
     }
Index: /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectBoundaryAction.java
===================================================================
--- /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectBoundaryAction.java	(revision 30458)
+++ /applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/selection/SelectBoundaryAction.java	(revision 30459)
@@ -9,8 +9,6 @@
 import java.awt.event.KeyEvent;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.TreeMap;
 
 import javax.swing.JOptionPane;
@@ -18,13 +16,9 @@
 
 import org.openstreetmap.josm.actions.JosmAction;
-import org.openstreetmap.josm.data.coor.EastNorth;
-import org.openstreetmap.josm.data.osm.BBox;
+import org.openstreetmap.josm.actions.SelectByInternalPointAction;
 import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.Relation;
-import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.Notification;
-import org.openstreetmap.josm.tools.Geometry;
 
 import org.openstreetmap.josm.tools.Shortcut;
@@ -43,42 +37,5 @@
         putValue("help", ht("/Action/SelectAreaBoundary"));
     }
-    
-    public static void selectByInternalPoint(EastNorth e) {
-        //Node n= new Node(e);
-        TreeMap<Double, OsmPrimitive> found = new TreeMap<>();
-        for (Way w: getCurrentDataSet().getWays()) {
-            if (w.isUsable() && w.isClosed() )  {
-                //if (Geometry.nodeInsidePolygon(n, w.getNodes())) {
-                if (NodeWayUtils.isPointInsidePolygon(e, NodeWayUtils.getWayPoints(w))) {
-                    found.put(Geometry.closedWayArea(w), w);
-                }
-            }
-        }
-        for (Relation r: getCurrentDataSet().getRelations()) {
-            if (r.isUsable() && r.isMultipolygon())  {
-                //if (Geometry.isNodeInsideMultiPolygon(n, r, null)) {
-                if (NodeWayUtils.isPointInsideMultipolygon(e, r)) {
-                    for (RelationMember m: r.getMembers()) {
-                        if (m.isWay() && m.getWay().isClosed()) {
-                            found.values().remove(m.getWay());
-                        }
-                    }
-                    // estimate multipolygon size by its bounding box area
-                    BBox bBox = r.getBBox();
-                    EastNorth en1 = Main.map.mapView.getProjection().latlon2eastNorth(bBox.getTopLeft());
-                    EastNorth en2 = Main.map.mapView.getProjection().latlon2eastNorth(bBox.getBottomRight());
-                    double s = Math.abs((en1.east()-en2.east())*(en1.north()-en2.north()));
-                    if (s==0) s=1e8;
-                    found.put(s, r);
-                }
-            }
-        }
-        
-        if (!found.isEmpty()) {
-            getCurrentDataSet().setSelected(Collections.singletonList(
-                found.firstEntry().getValue()));
-        }
-    }
-    
+
     @Override
     public void actionPerformed(ActionEvent e) {
@@ -101,5 +58,5 @@
             } else {
                 Point p = Main.map.mapView.getMousePosition();
-                selectByInternalPoint(Main.map.mapView.getEastNorth(p.x, p.y));
+                SelectByInternalPointAction.performSelection(Main.map.mapView.getEastNorth(p.x, p.y), false, false);
                 return;
             }
