void Slit::reposition(void) {
- // place the slit in the appropriate place
+ int x = 0, y = 0;
+
switch (placement) {
case TopLeft:
- frame.rect.setPos(0, 0);
-
- if (direction == Vertical) {
- frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.width();
- frame.y_hidden = 0;
- } else {
- frame.x_hidden = 0;
- frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.height();
- }
- break;
-
case CenterLeft:
- frame.rect.setPos(0, (screen->getHeight() - frame.rect.height()) / 2);
-
+ case BottomLeft:
+ x = 0;
frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.width();
- frame.y_hidden = frame.rect.y();
- break;
+ - frame.rect.width();
- case BottomLeft:
- frame.rect.setPos(0, (screen->getHeight() - frame.rect.height()
- - (screen->getBorderWidth() * 2)));
+ if (placement == TopLeft)
+ y = 0;
+ else if (placement == CenterLeft)
+ y = (screen->getHeight() - frame.rect.height()) / 2;
+ else
+ y = screen->getHeight() - frame.rect.height()
+ - (screen->getBorderWidth() * 2);
- if (direction == Vertical) {
- frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.width();
- frame.y_hidden = frame.rect.y();
- } else {
- frame.x_hidden = 0;
- frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- - screen->getBorderWidth();
- }
break;
case TopCenter:
- frame.rect.setPos((screen->getWidth() - frame.rect.width()) / 2, 0);
-
- frame.x_hidden = frame.rect.x();
- frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.height();
- break;
-
case BottomCenter:
- frame.rect.setPos((screen->getWidth() - frame.rect.width()) / 2,
- (screen->getHeight() - frame.rect.height()
- - (screen->getBorderWidth() * 2)));
- frame.x_hidden = frame.rect.x();
- frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- - screen->getBorderWidth();
- break;
+ x = (screen->getWidth() - frame.rect.width()) / 2;
+ frame.x_hidden = x;
- case TopRight:
- frame.rect.setPos((screen->getWidth() - frame.rect.width()
- - (screen->getBorderWidth() * 2)), 0);
+ if (placement == TopCenter)
+ y = 0;
+ else
+ y = screen->getHeight() - frame.rect.height()
+ - (screen->getBorderWidth() * 2);
- if (direction == Vertical) {
- frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- - screen->getBorderWidth();
- frame.y_hidden = 0;
- } else {
- frame.x_hidden = frame.rect.x();
- frame.y_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- - frame.rect.height();
- }
break;
+ case TopRight:
case CenterRight:
- default:
- frame.rect.setPos((screen->getWidth() - frame.rect.width()
- - (screen->getBorderWidth() * 2)),
- (screen->getHeight() - frame.rect.height()) / 2);
-
+ case BottomRight:
+ x = screen->getWidth() - frame.rect.width()
+ - (screen->getBorderWidth() * 2);
frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- - screen->getBorderWidth();
- frame.y_hidden = frame.rect.y();
- break;
+ - screen->getBorderWidth();
- case BottomRight:
- frame.rect.setPos((screen->getWidth() - frame.rect.width()
- - (screen->getBorderWidth() * 2)),
- (screen->getHeight() - frame.rect.height()
- - (screen->getBorderWidth() * 2)));
-
- if (direction == Vertical) {
- frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- - screen->getBorderWidth();
- frame.y_hidden = frame.rect.y();
- } else {
- frame.x_hidden = frame.rect.x();
- frame.y_hidden = screen->getHeight() - screen->getBevelWidth()
- - screen->getBorderWidth();
- }
+ if (placement == TopRight)
+ y = 0;
+ else if (placement == CenterRight)
+ y = (screen->getHeight() - frame.rect.height()) / 2;
+ else
+ y = screen->getHeight() - frame.rect.height()
+ - (screen->getBorderWidth() * 2);
break;
}
+ frame.rect.setPos(x, y);
+
+ // we have to add the border to the rect as it is not accounted for
Rect tbar_rect = screen->getToolbar()->getRect();
tbar_rect.setSize(tbar_rect.width() + (screen->getBorderWidth() * 2),
tbar_rect.height() + (screen->getBorderWidth() * 2));
slit_rect.height() + (screen->getBorderWidth() * 2));
if (slit_rect.intersects(tbar_rect)) {
- Toolbar *tbar = screen->getToolbar();
- frame.y_hidden = frame.rect.y();
-
- int delta = tbar->getExposedHeight() + (screen->getBorderWidth() * 2);
- if (frame.rect.bottom() <= tbar_rect.bottom()) {
+ int delta = screen->getToolbar()->getExposedHeight() +
+ screen->getBorderWidth();
+ if (frame.rect.bottom() <= tbar_rect.bottom())
delta = -delta;
- }
+
frame.rect.setY(frame.rect.y() + delta);
- if (direction == Vertical)
- frame.y_hidden += delta;
}
+ if (placement == TopCenter)
+ frame.y_hidden = 0 - frame.rect.height() + screen->getBorderWidth()
+ + screen->getBevelWidth();
+ else if (placement == BottomCenter)
+ frame.y_hidden = screen->getHeight() - screen->getBorderWidth()
+ - screen->getBevelWidth();
+ else
+ frame.y_hidden = frame.rect.y();
+
updateStrut();
if (hidden)
- XMoveResizeWindow(display, frame.window, frame.x_hidden,
- frame.y_hidden, frame.rect.width(), frame.rect.height());
+ XMoveResizeWindow(display, frame.window,
+ frame.x_hidden, frame.y_hidden,
+ frame.rect.width(), frame.rect.height());
else
- XMoveResizeWindow(display, frame.window, frame.rect.x(), frame.rect.y(),
+ XMoveResizeWindow(display, frame.window,
+ frame.rect.x(), frame.rect.y(),
frame.rect.width(), frame.rect.height());
}