--- old/src/solaris/classes/sun/awt/X11/XWindow.java 2012-12-10 20:46:45.739064659 +0100 +++ new/src/solaris/classes/sun/awt/X11/XWindow.java 2012-12-10 20:46:45.542002810 +0100 @@ -596,12 +596,12 @@ /* this is an attempt to refactor button IDs in : MouseEvent, InputEvent, XlibWrapper and XWindow.*/ //reflects a button number similar to MouseEvent.BUTTON1, 2, 3 etc. - for (int i = 0; i < XConstants.buttonsMask.length; i ++){ + for (int i = 0; i < XConstants.buttons.length; i ++){ //modifier should be added if : // 1) current button is now still in PRESSED state (means that user just pressed mouse but not released yet) or // 2) if Xsystem reports that "state" represents that button was just released. This only happens on RELEASE with 1,2,3 buttons. // ONLY one of these conditions should be TRUE to add that modifier. - if (((state & XConstants.buttonsMask[i]) != 0) != (button == XConstants.buttons[i])){ + if (((state & XlibUtil.getButtonMask(i + 1)) != 0) != (button == XConstants.buttons[i])){ //exclude wheel buttons from adding their numbers as modifiers if (!wheel_mouse) { modifiers |= InputEvent.getMaskForButton(i+1); @@ -689,7 +689,7 @@ if (type == XConstants.ButtonPress) { //Allow this mouse button to generate CLICK event on next ButtonRelease - mouseButtonClickAllowed |= XConstants.buttonsMask[lbutton]; + mouseButtonClickAllowed |= XlibUtil.getButtonMask(lbutton); XWindow lastWindow = (lastWindowRef != null) ? ((XWindow)lastWindowRef.get()):(null); /* multiclick checking @@ -747,7 +747,7 @@ postEventToEventQueue(me); if ((type == XConstants.ButtonRelease) && - ((mouseButtonClickAllowed & XConstants.buttonsMask[lbutton]) != 0) ) // No up-button in the drag-state + ((mouseButtonClickAllowed & XlibUtil.getButtonMask(lbutton)) != 0) ) // No up-button in the drag-state { postEventToEventQueue(me = new MouseEvent((Component)getEventSource(), MouseEvent.MOUSE_CLICKED, @@ -777,7 +777,7 @@ /* Update the state variable AFTER the CLICKED event post. */ if (type == XConstants.ButtonRelease) { /* Exclude this mouse button from allowed list.*/ - mouseButtonClickAllowed &= ~XConstants.buttonsMask[lbutton]; + mouseButtonClickAllowed &= ~ XlibUtil.getButtonMask(lbutton); } } @@ -793,12 +793,12 @@ //this doesn't work for extra buttons because Xsystem is sending state==0 for every extra button event. // we can't correct it in MouseEvent class as we done it with modifiers, because exact type (DRAG|MOVE) // should be passed from XWindow. - final int buttonsNumber = ((SunToolkit)(Toolkit.getDefaultToolkit())).getNumberOfButtons(); + final int buttonsNumber = XToolkit.getNumberOfButtonsForMask(); for (int i = 0; i < buttonsNumber; i++){ // TODO : here is the bug in WM: extra buttons doesn't have state!=0 as they should. if ((i != 4) && (i != 5)) { - mouseKeyState = mouseKeyState | (xme.get_state() & XConstants.buttonsMask[i]); + mouseKeyState = mouseKeyState | (xme.get_state() & XlibUtil.getButtonMask(i + 1)); } }