From 4a47eef28a8fced178f7459b07f5658a94533729 Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Thu, 17 Oct 2013 16:58:56 +0200 Subject: [PATCH] Mouse scroll wheel fix for MenuScroller --- .../processing/app/tools/MenuScroller.java | 50 +++++++++++-------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/app/src/processing/app/tools/MenuScroller.java b/app/src/processing/app/tools/MenuScroller.java index 92a9d994c..2f0cd80cf 100644 --- a/app/src/processing/app/tools/MenuScroller.java +++ b/app/src/processing/app/tools/MenuScroller.java @@ -470,38 +470,46 @@ public class MenuScroller { } private void refreshMenu() { - if (menuItems != null && menuItems.length > 0) { - firstIndex = Math.max(topFixedCount, firstIndex); - firstIndex = Math.min(menuItems.length - bottomFixedCount - scrollCount, firstIndex); + if (menuItems == null || menuItems.length == 0) { + return; + } - upItem.setEnabled(firstIndex > topFixedCount); - downItem.setEnabled(firstIndex + scrollCount < menuItems.length - bottomFixedCount); + int newFirstIndex = Math.max(topFixedCount, firstIndex); + newFirstIndex = Math.min(menuItems.length - bottomFixedCount - scrollCount, newFirstIndex); - menu.removeAll(); - for (int i = 0; i < topFixedCount; i++) { - menu.add(menuItems[i]); - } + if (newFirstIndex < 0) { + return; + } + + firstIndex = newFirstIndex; + + upItem.setEnabled(firstIndex > topFixedCount); + downItem.setEnabled(firstIndex + scrollCount < menuItems.length - bottomFixedCount); + + menu.removeAll(); + for (int i = 0; i < topFixedCount; i++) { + menu.add(menuItems[i]); + } /*if (topFixedCount > 0) { menu.addSeparator(); }*/ - menu.add(upItem); - for (int i = firstIndex; i < scrollCount + firstIndex; i++) { - menu.add(menuItems[i]); - } - menu.add(downItem); + menu.add(upItem); + for (int i = firstIndex; i < scrollCount + firstIndex; i++) { + menu.add(menuItems[i]); + } + menu.add(downItem); /*if (bottomFixedCount > 0) { menu.addSeparator(); }*/ - for (int i = menuItems.length - bottomFixedCount; i < menuItems.length; i++) { - menu.add(menuItems[i]); - } - - JComponent parent = (JComponent) upItem.getParent(); - parent.revalidate(); - parent.repaint(); + for (int i = menuItems.length - bottomFixedCount; i < menuItems.length; i++) { + menu.add(menuItems[i]); } + + JComponent parent = (JComponent) upItem.getParent(); + parent.revalidate(); + parent.repaint(); } private class MouseScrollListener implements MouseWheelListener {