+void Slit::updateStrut(void) {
+ strut.top = strut.bottom = strut.left = strut.right = 0;
+
+ if (! clientList.empty()) {
+ switch (screen->getSlitDirection()) {
+ case Vertical:
+ switch (screen->getSlitPlacement()) {
+ case TopCenter:
+ strut.top = getY() + getExposedHeight() +
+ (screen->getBorderWidth() * 2);
+ break;
+ case BottomCenter:
+ strut.bottom = screen->getHeight() - getY();
+ break;
+ case TopLeft:
+ case CenterLeft:
+ case BottomLeft:
+ strut.left = getExposedWidth() + (screen->getBorderWidth() * 2);
+ break;
+ case TopRight:
+ case CenterRight:
+ case BottomRight:
+ strut.right = getExposedWidth() + (screen->getBorderWidth() * 2);
+ break;
+ }
+ break;
+ case Horizontal:
+ switch (screen->getSlitPlacement()) {
+ case TopCenter:
+ case TopLeft:
+ case TopRight:
+ strut.top = getY() + getExposedHeight() +
+ (screen->getBorderWidth() * 2);
+ break;
+ case BottomCenter:
+ case BottomLeft:
+ case BottomRight:
+ strut.bottom = screen->getHeight() - getY();
+ break;
+ case CenterLeft:
+ strut.left = getExposedWidth() + (screen->getBorderWidth() * 2);
+ break;
+ case CenterRight:
+ strut.right = getExposedWidth() + (screen->getBorderWidth() * 2);
+ break;
+ }
+ break;
+ }
+ }
+
+ // update area with new Strut info
+ screen->updateAvailableArea();
+}
+
+