+ if (_button) {
+ unsigned int mask;
+ switch(_button) {
+ case Button1: mask = Button1Mask; break;
+ case Button2: mask = Button2Mask; break;
+ case Button3: mask = Button3Mask; break;
+ case Button4: mask = Button4Mask; break;
+ case Button5: mask = Button5Mask; break;
+ default: assert(false); return; // unhandled button
+ }
+ // was the button released but we didnt get the event? (pointergrabs cause
+ // this)
+ if (!(e.state & mask))
+ _button = 0;
+ }
+