src/solaris/classes/sun/awt/X11/XWindow.java
Print this page
@@ -594,16 +594,16 @@
// button currently reflects a real button number and starts from 1. (except NOBUTTON which is zero )
/* 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);
}
}
@@ -687,11 +687,11 @@
y = localXY.y;
}
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
*/
if (eventLog.isLoggable(PlatformLogger.FINEST)) eventLog.finest("lastWindow = " + lastWindow + ", lastButton "
@@ -745,11 +745,11 @@
clickCount,popupTrigger,button);
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,
jWhen,
modifiers,
@@ -775,11 +775,11 @@
}
/* 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);
}
}
public void handleMotionNotify(XEvent xev) {
super.handleMotionNotify(xev);
@@ -791,16 +791,16 @@
int mouseKeyState = 0; //(xme.get_state() & (XConstants.buttonsMask[0] | XConstants.buttonsMask[1] | XConstants.buttonsMask[2]));
//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));
}
}
boolean isDragging = (mouseKeyState != 0);
int mouseEventType = 0;