Index: trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 5184)
+++ trunk/src/org/openstreetmap/josm/gui/layer/ImageryLayer.java	(revision 5185)
@@ -10,4 +10,5 @@
 import java.awt.Font;
 import java.awt.Graphics;
+import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.image.BufferedImage;
@@ -23,4 +24,5 @@
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
 import javax.swing.JSeparator;
 import javax.swing.SwingUtilities;
@@ -34,4 +36,5 @@
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
+import org.openstreetmap.josm.gui.MenuScroller;
 import org.openstreetmap.josm.io.imagery.OffsetServer;
 import org.openstreetmap.josm.io.imagery.OsmosnimkiOffsetServer;
@@ -205,4 +208,5 @@
         subMenu.add(new JSeparator());
         boolean hasBookmarks = false;
+        int menuItemHeight = 0;
         for (OffsetBookmark b : OffsetBookmark.allBookmarks) {
             if (!b.isUsable(this)) {
@@ -214,5 +218,14 @@
             }
             subMenu.add(item);
+            menuItemHeight = item.getPreferredSize().height;
             hasBookmarks = true;
+        }
+        if (menuItemHeight > 0) {
+        	int scrollcount = (Toolkit.getDefaultToolkit().getScreenSize().height / menuItemHeight) - 1;
+        	if (subMenu instanceof JMenu) {
+        		MenuScroller.setScrollerFor((JMenu) subMenu, scrollcount);
+        	} else if (subMenu instanceof JPopupMenu) {
+        		MenuScroller.setScrollerFor((JPopupMenu)subMenu, scrollcount);
+        	}
         }
         return (hasBookmarks || offsetServerSupported) ? subMenu : adjustMenuItem;
