+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;
+ }
+ if (grab)
+ otk::OBDisplay::grabButton(b.key, b.modifiers, win, false,
+ ButtonPressMask | ButtonMotionMask |
+ ButtonReleaseMask, mode, GrabModeAsync,
+ None, None, false);
+ else
+ otk::OBDisplay::ungrabButton(b.key, b.modifiers, win);
+}
+