Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 5119)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java	(revision 5120)
@@ -6,5 +6,4 @@
 
 import java.awt.BorderLayout;
-import java.awt.Component;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -34,6 +33,4 @@
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -185,6 +182,6 @@
         PreferencePanel plugins = gui.createPreferenceTab(this);
         plugins.add(buildContentPanel(), gc);
-        //pnlPluginPreferences.refreshView(); // fix #7541, refreshView() will be called when the first tab will be selected
-        gui.addChangeListener(new PluginPreferenceActivationListener(plugins));
+        readLocalPluginInformation();
+        pluginPreferencesActivated = true;
     }
 
@@ -410,24 +407,4 @@
 
     /**
-     * Listens to the activation of the plugin preferences tab. On activation it
-     * reloads plugin information from the local file system.
-     *
-     */
-    class PluginPreferenceActivationListener implements ChangeListener {
-        private Component pane;
-        public PluginPreferenceActivationListener(Component preferencesPane) {
-            pane = preferencesPane;
-        }
-
-        public void stateChanged(ChangeEvent e) {
-            JTabbedPane tp = (JTabbedPane)e.getSource();
-            if (tp.getSelectedComponent() == pane && !pluginPreferencesActivated) {
-                readLocalPluginInformation();
-                pluginPreferencesActivated = true;
-            }
-        }
-    }
-
-    /**
      * Applies the current filter condition in the filter text field to the
      * model
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 5119)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 5120)
@@ -7,4 +7,5 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
+import java.awt.Rectangle;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -14,7 +15,8 @@
 import javax.swing.JLabel;
 import javax.swing.SwingConstants;
+import javax.swing.SwingUtilities;
 import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.event.HyperlinkListener;
-import javax.swing.event.HyperlinkEvent.EventType;
 
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
@@ -27,6 +29,5 @@
 
     public PluginListPanel() {
-        model = new PluginPreferencesModel();
-        setLayout(new GridBagLayout());
+        this(new PluginPreferencesModel());
     }
 
@@ -83,4 +84,5 @@
 
     public void refreshView() {
+        final Rectangle visibleRect = getVisibleRect();
         List<PluginInformation> displayedPlugins = model.getDisplayedPlugins();
         removeAll();
@@ -145,4 +147,12 @@
         revalidate();
         repaint();
+        if (visibleRect != null && visibleRect.width > 0 && visibleRect.height > 0) {
+            SwingUtilities.invokeLater(new Runnable() {
+                @Override
+                public void run() {
+                    scrollRectToVisible(visibleRect);
+                }
+            });
+        }
     }
 }
