+ if (! screen->isSloppyFocus() || screen->doClickRaise())
+ // grab button 1 for changing focus/raising
+ blackbox->grabButton(Button1, 0, frame.plate, True, ButtonPressMask,
+ GrabModeSync, GrabModeSync, frame.plate, None,
+ screen->allowScrollLock());
+
+ if (functions & Func_Move)
+ blackbox->grabButton(Button1, mod_mask, frame.window, True,
+ ButtonReleaseMask | ButtonMotionMask, GrabModeAsync,
+ GrabModeAsync, frame.window, None,
+ screen->allowScrollLock());
+ if (functions & Func_Resize)
+ blackbox->grabButton(Button3, mod_mask, frame.window, True,
+ ButtonReleaseMask | ButtonMotionMask, GrabModeAsync,
+ GrabModeAsync, frame.window, None,
+ screen->allowScrollLock());
+ // alt+middle lowers the window
+ blackbox->grabButton(Button2, mod_mask, frame.window, True,
+ ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
+ frame.window, None,
+ screen->allowScrollLock());
+}
+
+
+void BlackboxWindow::ungrabButtons(void) {
+ blackbox->ungrabButton(Button1, 0, frame.plate);
+ blackbox->ungrabButton(Button1, mod_mask, frame.window);
+ blackbox->ungrabButton(Button2, mod_mask, frame.window);
+ blackbox->ungrabButton(Button3, mod_mask, frame.window);
+}
+
+
+void BlackboxWindow::positionWindows(void) {
+ XMoveResizeWindow(blackbox->getXDisplay(), frame.window,
+ frame.rect.x(), frame.rect.y(), frame.inside_w,
+ (flags.shaded) ? frame.title_h : frame.inside_h);
+ XSetWindowBorderWidth(blackbox->getXDisplay(), frame.window,
+ frame.border_w);
+ XSetWindowBorderWidth(blackbox->getXDisplay(), frame.plate,
+ frame.mwm_border_w);
+ XMoveResizeWindow(blackbox->getXDisplay(), frame.plate,
+ frame.margin.left - frame.mwm_border_w - frame.border_w,
+ frame.margin.top - frame.mwm_border_w - frame.border_w,
+ client.rect.width(), client.rect.height());
+ XMoveResizeWindow(blackbox->getXDisplay(), client.window,
+ 0, 0, client.rect.width(), client.rect.height());
+ // ensure client.rect contains the real location
+ client.rect.setPos(frame.rect.left() + frame.margin.left,
+ frame.rect.top() + frame.margin.top);
+
+ if (decorations & Decor_Titlebar) {
+ if (frame.title == None) createTitlebar();
+
+ XSetWindowBorderWidth(blackbox->getXDisplay(), frame.title,
+ frame.border_w);
+ XMoveResizeWindow(blackbox->getXDisplay(), frame.title, -frame.border_w,
+ -frame.border_w, frame.inside_w, frame.title_h);