new slit placement. yea its kinda weak. this can get improved late if people complain. slit is going away anyways for 3.0.

This commit is contained in:
Dana Jansens 2002-07-21 10:08:57 +00:00
parent bd7f948159
commit df7120d5ff

View file

@ -490,106 +490,60 @@ void Slit::updateStrut(void) {
void Slit::reposition(void) { void Slit::reposition(void) {
// place the slit in the appropriate place int x = 0, y = 0;
switch (placement) { switch (placement) {
case TopLeft: 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: case CenterLeft:
frame.rect.setPos(0, (screen->getHeight() - frame.rect.height()) / 2);
frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- frame.rect.width();
frame.y_hidden = frame.rect.y();
break;
case BottomLeft: case BottomLeft:
frame.rect.setPos(0, (screen->getHeight() - frame.rect.height() x = 0;
- (screen->getBorderWidth() * 2))); frame.x_hidden = screen->getBevelWidth() - screen->getBorderWidth()
- frame.rect.width();
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; break;
case TopCenter: 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: case BottomCenter:
frame.rect.setPos((screen->getWidth() - frame.rect.width()) / 2, x = (screen->getWidth() - frame.rect.width()) / 2;
(screen->getHeight() - frame.rect.height() frame.x_hidden = x;
- (screen->getBorderWidth() * 2)));
frame.x_hidden = frame.rect.x(); if (placement == TopCenter)
frame.y_hidden = screen->getHeight() - screen->getBevelWidth() y = 0;
- screen->getBorderWidth(); else
y = screen->getHeight() - frame.rect.height()
- (screen->getBorderWidth() * 2);
break; break;
case TopRight: case TopRight:
frame.rect.setPos((screen->getWidth() - frame.rect.width()
- (screen->getBorderWidth() * 2)), 0);
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 CenterRight: case CenterRight:
default:
frame.rect.setPos((screen->getWidth() - frame.rect.width()
- (screen->getBorderWidth() * 2)),
(screen->getHeight() - frame.rect.height()) / 2);
frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- screen->getBorderWidth();
frame.y_hidden = frame.rect.y();
break;
case BottomRight: case BottomRight:
frame.rect.setPos((screen->getWidth() - frame.rect.width() x = screen->getWidth() - frame.rect.width()
- (screen->getBorderWidth() * 2)), - (screen->getBorderWidth() * 2);
(screen->getHeight() - frame.rect.height() frame.x_hidden = screen->getWidth() - screen->getBevelWidth()
- (screen->getBorderWidth() * 2))); - screen->getBorderWidth();
if (direction == Vertical) { if (placement == TopRight)
frame.x_hidden = screen->getWidth() - screen->getBevelWidth() y = 0;
- screen->getBorderWidth(); else if (placement == CenterRight)
frame.y_hidden = frame.rect.y(); y = (screen->getHeight() - frame.rect.height()) / 2;
} else { else
frame.x_hidden = frame.rect.x(); y = screen->getHeight() - frame.rect.height()
frame.y_hidden = screen->getHeight() - screen->getBevelWidth() - (screen->getBorderWidth() * 2);
- screen->getBorderWidth();
}
break; 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(); Rect tbar_rect = screen->getToolbar()->getRect();
tbar_rect.setSize(tbar_rect.width() + (screen->getBorderWidth() * 2), tbar_rect.setSize(tbar_rect.width() + (screen->getBorderWidth() * 2),
tbar_rect.height() + (screen->getBorderWidth() * 2)); tbar_rect.height() + (screen->getBorderWidth() * 2));
@ -598,25 +552,32 @@ void Slit::reposition(void) {
slit_rect.height() + (screen->getBorderWidth() * 2)); slit_rect.height() + (screen->getBorderWidth() * 2));
if (slit_rect.intersects(tbar_rect)) { if (slit_rect.intersects(tbar_rect)) {
Toolbar *tbar = screen->getToolbar(); int delta = screen->getToolbar()->getExposedHeight() +
frame.y_hidden = frame.rect.y(); screen->getBorderWidth();
if (frame.rect.bottom() <= tbar_rect.bottom())
int delta = tbar->getExposedHeight() + (screen->getBorderWidth() * 2);
if (frame.rect.bottom() <= tbar_rect.bottom()) {
delta = -delta; delta = -delta;
}
frame.rect.setY(frame.rect.y() + 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(); updateStrut();
if (hidden) if (hidden)
XMoveResizeWindow(display, frame.window, frame.x_hidden, XMoveResizeWindow(display, frame.window,
frame.y_hidden, frame.rect.width(), frame.rect.height()); frame.x_hidden, frame.y_hidden,
frame.rect.width(), frame.rect.height());
else 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()); frame.rect.width(), frame.rect.height());
} }