+ // ungrab the button on all clients
+ for (int sn = 0; sn < Openbox::instance->screenCount(); ++sn) {
+ OBScreen *s = Openbox::instance->screen(sn);
+ OBScreen::ClientList::iterator c_it, c_end = s->clients.end();
+ for (c_it = s->clients.begin(); c_it != c_end; ++c_it) {
+ grabButton(false, (*it)->binding, (MouseContext)i, *c_it);
+ }
+ }
+ }
+ }
+}
+
+void OBBindings::grabButton(bool grab, const Binding &b, MouseContext context,
+ OBClient *client)
+{
+ Window win;
+ int mode = GrabModeAsync;
+ switch(context) {
+ case MC_Frame:
+ win = client->frame->window();
+ break;
+ case MC_Window:
+ win = client->frame->plate();
+ mode = GrabModeSync; // this is handled in fireButton
+ break;
+ default:
+ // any other elements already get button events, don't grab on them
+ return;