Index: trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 17784)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 17785)
@@ -10,5 +10,5 @@
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -113,4 +113,5 @@
         );
         hint.putClientProperty("plugin", "empty");
+        hint.setVisible(false);
         add(hint, gbc);
     }
@@ -170,5 +171,4 @@
             add(description, gbc);
         }
-
         pluginListInitialized = true;
     }
@@ -182,14 +182,10 @@
     public void refreshView() {
         final Rectangle visibleRect = getVisibleRect();
-        List<PluginInformation> displayedPlugins = model.getDisplayedPlugins();
-
-        if (displayedPlugins.isEmpty()) {
-            hidePluginsNotInList(new ArrayList<>());
+        if (!pluginListInitialized) {
+            removeAll();
             displayEmptyPluginListInformation();
-        } else if (!pluginListInitialized) {
-            removeAll();
-            displayPluginList(displayedPlugins);
+            displayPluginList(model.getAvailablePlugins());
         } else {
-            hidePluginsNotInList(displayedPlugins);
+            hidePluginsNotInList(new HashSet<>(model.getDisplayedPlugins()));
         }
         revalidate();
@@ -205,23 +201,17 @@
      * those that shouldn't be visible.
      *
-     * @param displayedPlugins A collection of plugins that are currently visible.
-     */
-    private void hidePluginsNotInList(List<PluginInformation> displayedPlugins) {
-        // Remove the empty plugin list warning if it's there
-        synchronized (getTreeLock()) {
-            for (int i = 0; i < getComponentCount(); i++) {
-                JComponent component = (JComponent) getComponent(i);
-                if ("empty".equals(component.getClientProperty("plugin"))) {
-                    remove(component);
-                }
-            }
-        }
-
-        Set<PluginInformation> displayedPluginsSet = new HashSet<>(displayedPlugins);
+     * @param displayedPlugins A set of plugins that are currently visible.
+     */
+    private void hidePluginsNotInList(Set<PluginInformation> displayedPlugins) {
         synchronized (getTreeLock()) {
             for (int i = 0; i < getComponentCount(); i++) {
                 JComponent component = (JComponent) getComponent(i);
                 Object plugin = component.getClientProperty("plugin");
-                component.setVisible(displayedPluginsSet.contains(plugin));
+                if ("empty".equals(plugin)) {
+                    // Hide the empty plugin list warning if it's there
+                    component.setVisible(displayedPlugins.isEmpty());
+                } else {
+                    component.setVisible(displayedPlugins.contains(plugin));
+                }
             }
         }
