+
+ printf("press queue %u pressed %u\n", _button, e.button);
+
+ MouseContext::MC context;
+ EventHandler *h = openbox->findHandler(e.window);
+ Frame *f = dynamic_cast<Frame*>(h);
+ if (f)
+ context= f->mouseContext(e.window);
+ else if (dynamic_cast<Client*>(h))
+ context = MouseContext::Window;
+ else if (dynamic_cast<Screen*>(h))
+ context = MouseContext::Root;
+ else
+ return; // not a valid mouse context
+
+ 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;
+ }