--- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Thu Sep 30 21:06:53 2010 +0400
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Fri Oct 01 15:10:32 2010 +0400
@@ -1482,8 +1482,19 @@
try {
if (numberOfButtons == 0) {
numberOfButtons = getNumberOfButtonsImpl();
+ numberOfButtons = (numberOfButtons > MAX_BUTTONS_SUPPORTED)? MAX_BUTTONS_SUPPORTED : numberOfButtons;
+ //4th and 5th buttons are for wheel and shouldn't be reported as buttons.
+ //If we have more than 3 physical buttons and a wheel, we report N-2 buttons.
+ //If we have 3 physical buttons and a wheel, we report 3 buttons.
+ //If we have 1,2,3 physical buttons, we report it as is i.e. 1,2 or 3 respectively.
+ if (numberOfButtons >=5) {
+ numberOfButtons -= 2;
+ } else if (numberOfButtons == 4 || numberOfButtons ==5){
+ numberOfButtons = 3;
+ }
}
- return (numberOfButtons > MAX_BUTTONS_SUPPORTED)? MAX_BUTTONS_SUPPORTED : numberOfButtons;
+ //Assume don't have to re-query the number again and again.
+ return numberOfButtons;
} finally {
awtUnlock();
}