Index: /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 13544)
+++ /trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 13545)
@@ -762,4 +762,7 @@
         static SearchTask newSearchTask(SearchSetting setting, SearchReceiver resultReceiver) {
             final DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
+            if (ds == null) {
+                throw new IllegalStateException("No active dataset");
+            }
             return newSearchTask(setting, ds, resultReceiver);
         }
Index: /trunk/src/org/openstreetmap/josm/gui/SideButton.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 13544)
+++ /trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 13545)
@@ -26,4 +26,6 @@
 
     private transient PropertyChangeListener propertyChangeListener;
+    private BasicArrowButton arrowButton;
+    private boolean arrowEnabledWithButton;
 
     /**
@@ -87,10 +89,33 @@
      */
     public BasicArrowButton createArrow(ActionListener listener) {
+        return createArrow(listener, false);
+    }
+
+    /**
+     * Create the arrow for opening a drop-down menu
+     * @param listener listener to use for button actions (e.g. pressing)
+     * @param enabledWithButton determines if the button arrow enabled state is the same as main button
+     * @return the created button
+     * @since 13545
+     */
+    public BasicArrowButton createArrow(ActionListener listener, boolean enabledWithButton) {
         setMargin(new Insets(0, 0, 0, 0));
-        BasicArrowButton arrowButton = new BasicArrowButton(SwingConstants.SOUTH, null, null, Color.BLACK, null);
+        arrowEnabledWithButton = enabledWithButton;
+        arrowButton = new BasicArrowButton(SwingConstants.SOUTH, null, null, Color.BLACK, null);
         arrowButton.setBorder(BorderFactory.createEmptyBorder());
         add(arrowButton, BorderLayout.EAST);
         arrowButton.addActionListener(listener);
+        if (arrowEnabledWithButton) {
+            arrowButton.setEnabled(isEnabled());
+        }
         return arrowButton;
+    }
+
+    @Override
+    public void setEnabled(boolean b) {
+        super.setEnabled(b);
+        if (arrowButton != null && arrowEnabledWithButton) {
+            arrowButton.setEnabled(b);
+        }
     }
 
@@ -107,4 +132,5 @@
             setAction(null);
         }
+        arrowButton = null;
     }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 13544)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 13545)
@@ -128,5 +128,5 @@
         // the search button
         final SideButton searchButton = new SideButton(actSearch);
-        searchButton.createArrow(e -> SearchPopupMenu.launch(searchButton));
+        searchButton.createArrow(e -> SearchPopupMenu.launch(searchButton), true);
 
         createLayout(lstPrimitives, true, Arrays.asList(
