X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fbindings.cc;h=7c13ca64f9eba8e3290817a14eb9b7f51e8a7726;hb=7a95b5a949e590745a5a9a878e1386e7bd7d1b72;hp=af9e64ababe36d9f38fa3a3355658fc44642b8c8;hpb=b67f5e702e3cc12e4217dd31e2c522dde1ee19b0;p=chaz%2Fopenbox diff --git a/src/bindings.cc b/src/bindings.cc index af9e64ab..7c13ca64 100644 --- a/src/bindings.cc +++ b/src/bindings.cc @@ -390,7 +390,6 @@ void OBBindings::fireKey(int screen, unsigned int modifiers, unsigned int key, OBClient *c = Openbox::instance->focusedClient(); KeyData data(screen, c, time, modifiers, key); CallbackList::iterator it, end = p->callbacks.end(); - printf("Firing key!\n"); for (it = p->callbacks.begin(); it != end; ++it) python_callback(*it, &data); resetChains(this); @@ -483,23 +482,26 @@ void OBBindings::grabButton(bool grab, const Binding &b, MouseContext context, { Window win; int mode = GrabModeAsync; + unsigned int mask; switch(context) { case MC_Frame: win = client->frame->window(); + mask = ButtonPressMask | ButtonMotionMask | ButtonReleaseMask; break; case MC_Window: win = client->frame->plate(); mode = GrabModeSync; // this is handled in fireButton + mask = ButtonPressMask; // can't catch more than this with Sync mode + // the release event is manufactured by the + // master buttonPressHandler break; default: // any other elements already get button events, don't grab on them return; } if (grab) - otk::OBDisplay::grabButton(b.key, b.modifiers, win, false, - ButtonPressMask | ButtonMotionMask | - ButtonReleaseMask, mode, GrabModeAsync, - None, None, false); + otk::OBDisplay::grabButton(b.key, b.modifiers, win, false, mask, mode, + GrabModeAsync, None, None, false); else otk::OBDisplay::ungrabButton(b.key, b.modifiers, win); } @@ -516,8 +518,7 @@ void OBBindings::grabButtons(bool grab, OBClient *client) void OBBindings::fireButton(MouseData *data) { if (data->context == MC_Window) { - // these are grabbed in Sync mode to allow the press to be normal to the - // client + // Replay the event, so it goes to the client, and ungrab the device. XAllowEvents(otk::OBDisplay::display, ReplayPointer, data->time); }