Changeset 7346 in josm
- Timestamp:
- 2014-07-28T22:33:16+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/MenuScroller.java
r7291 r7346 21 21 import javax.swing.JMenuItem; 22 22 import javax.swing.JPopupMenu; 23 import javax.swing.JSeparator; 23 24 import javax.swing.MenuSelectionManager; 24 25 import javax.swing.Timer; … … 83 84 84 85 if (maxHeight > 0) { 85 result = (maxHeight/itemHeight)- 2;86 result = (maxHeight/itemHeight)-1; 86 87 } 87 88 } … … 482 483 private void refreshMenu() { 483 484 if (menuItems != null && menuItems.length > 0) { 485 486 int numOfNonSepItems = getNumberOfNonSeparatorItems(menuItems); 487 484 488 firstIndex = Math.max(topFixedCount, firstIndex); 485 firstIndex = Math.min( menuItems.length- bottomFixedCount - scrollCount, firstIndex);489 firstIndex = Math.min(numOfNonSepItems - bottomFixedCount - scrollCount, firstIndex); 486 490 487 491 upItem.setEnabled(firstIndex > topFixedCount); 488 downItem.setEnabled(firstIndex + scrollCount < menuItems.length- bottomFixedCount);492 downItem.setEnabled(firstIndex + scrollCount < numOfNonSepItems - bottomFixedCount); 489 493 490 494 menu.removeAll(); … … 540 544 private void setMenuItems() { 541 545 menuItems = menu.getComponents(); 546 int numOfNonSepItems = getNumberOfNonSeparatorItems(menuItems); 542 547 if (keepVisibleIndex >= topFixedCount 543 && keepVisibleIndex <= menuItems.length- bottomFixedCount548 && keepVisibleIndex <= numOfNonSepItems - bottomFixedCount 544 549 && (keepVisibleIndex > firstIndex + scrollCount 545 550 || keepVisibleIndex < firstIndex)) { … … 547 552 firstIndex = Math.max(firstIndex, keepVisibleIndex - scrollCount + 1); 548 553 } 549 if ( menuItems.length> topFixedCount + scrollCount + bottomFixedCount) {554 if (numOfNonSepItems > topFixedCount + scrollCount + bottomFixedCount) { 550 555 refreshMenu(); 551 556 } … … 639 644 @Override 640 645 public void mouseWheelMoved(MouseWheelEvent mwe) { 641 if (menu.getComponents() .length> scrollCount) {646 if (getNumberOfNonSeparatorItems(menu.getComponents()) > scrollCount) { 642 647 firstIndex += mwe.getWheelRotation(); 643 648 refreshMenu(); … … 646 651 } 647 652 } 653 654 private int getNumberOfNonSeparatorItems(Component[] items) { 655 int result = 0; 656 for (Component c : items) { 657 if (!(c instanceof JSeparator)) { 658 result++; 659 } 660 } 661 return result; 662 } 648 663 }
Note:
See TracChangeset
for help on using the changeset viewer.