ButtonReleaseMask | ButtonMotionMask, GrabModeAsync,
GrabModeAsync, frame.window,
blackbox->getLowerRightAngleCursor());
+ // alt+middle lowers the window
+ blackbox->grabButton(Button2, Mod1Mask, frame.window, True,
+ ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
+ frame.window, None);
}
blackbox->ungrabButton(Button1, 0, frame.plate);
blackbox->ungrabButton(Button1, Mod1Mask, frame.window);
+ blackbox->ungrabButton(Button2, Mod1Mask, frame.window);
blackbox->ungrabButton(Button3, Mod1Mask, frame.window);
}
case NorthEastGravity:
case SouthEastGravity:
case EastGravity:
- r.setX(client.rect.x() - frame.margin.left - frame.margin.right);
+ r.setX(client.rect.x() - frame.margin.left - frame.margin.right + 2);
break;
case ForgetGravity:
case SouthWestGravity:
case SouthEastGravity:
case SouthGravity:
- r.setY(client.rect.y() - frame.margin.top - frame.margin.bottom);
+ r.setY(client.rect.y() - frame.margin.top - frame.margin.bottom + 2);
break;
case ForgetGravity:
case NorthEastGravity:
case SouthEastGravity:
case EastGravity:
- r.setX(frame.rect.x() + frame.margin.left + frame.margin.right);
+ r.setX(frame.rect.x() + frame.margin.left + frame.margin.right - 2);
break;
case ForgetGravity:
case SouthWestGravity:
case SouthEastGravity:
case SouthGravity:
- r.setY(frame.rect.y() + frame.margin.top + frame.margin.bottom);
+ r.setY(frame.rect.y() + frame.margin.top + frame.margin.bottom - 2);
break;
case ForgetGravity:
endMove();
} else if (flags.resizing) {
endResize();
+ } else if (re->window == frame.window) {
+ if (re->button == 2 && re->state == Mod1Mask)
+ XUngrabPointer(blackbox->getXDisplay(), CurrentTime);
}
}
default:
assert(false); // unhandled Corner
+ return; // unreachable, for the compiler
}
XGrabServer(blackbox->getXDisplay());
Corner anchor;
switch (resize_dir) {
- case BottomLeft:
- anchor = TopRight;
- frame.changing.setSize(frame.rect.width() - (x_root - frame.grab_x),
- frame.rect.height() + (y_root - frame.grab_y));
- break;
- case BottomRight:
- anchor = TopLeft;
- frame.changing.setSize(frame.rect.width() + (x_root - frame.grab_x),
- frame.rect.height() + (y_root - frame.grab_y));
- break;
- case TopLeft:
- anchor = BottomRight;
- frame.changing.setSize(frame.rect.width() - (x_root - frame.grab_x),
- frame.rect.height() - (y_root - frame.grab_y));
- break;
- case TopRight:
- anchor = BottomLeft;
- frame.changing.setSize(frame.rect.width() + (x_root - frame.grab_x),
- frame.rect.height() - (y_root - frame.grab_y));
- break;
+ case BottomLeft:
+ anchor = TopRight;
+ frame.changing.setSize(frame.rect.width() - (x_root - frame.grab_x),
+ frame.rect.height() + (y_root - frame.grab_y));
+ break;
+ case BottomRight:
+ anchor = TopLeft;
+ frame.changing.setSize(frame.rect.width() + (x_root - frame.grab_x),
+ frame.rect.height() + (y_root - frame.grab_y));
+ break;
+ case TopLeft:
+ anchor = BottomRight;
+ frame.changing.setSize(frame.rect.width() - (x_root - frame.grab_x),
+ frame.rect.height() - (y_root - frame.grab_y));
+ break;
+ case TopRight:
+ anchor = BottomLeft;
+ frame.changing.setSize(frame.rect.width() + (x_root - frame.grab_x),
+ frame.rect.height() - (y_root - frame.grab_y));
+ break;
- default:
- assert(false); // unhandled Corner
+ default:
+ assert(false); // unhandled Corner
+ return; // unreachable, for the compiler
}
constrain(anchor, &gw, &gh);