Slit::Slit(BScreen *scr) {
screen = scr;
blackbox = screen->getBlackbox();
- slitstr = (std::string)"session.screen" + itostring(screen->getScreenNumber())
- + ".slit.";
+ slitstr = "session.screen" + itostring(screen->getScreenNumber()) + ".slit.";
config = blackbox->getConfig();
load_rc();
delete slitmenu;
+ screen->removeStrut(&strut);
+ screen->updateAvailableArea();
+
screen->getImageControl()->removeImage(frame.pixmap);
blackbox->removeSlitSearch(frame.window);
strut.top = strut.bottom = strut.left = strut.right = 0;
if (! clientList.empty()) {
+ // when not hidden both borders are in use, when hidden only one is
+ unsigned int border_width = screen->getBorderWidth();
+ if (! do_auto_hide)
+ border_width *= 2;
+
switch (direction) {
case Vertical:
switch (placement) {
case TopCenter:
- strut.top = getY() + getExposedHeight() +
- (screen->getBorderWidth() * 2);
+ strut.top = getExposedHeight() + border_width;
break;
case BottomCenter:
- strut.bottom = screen->getHeight() - getY();
+ strut.bottom = getExposedHeight() + border_width;
break;
case TopLeft:
case CenterLeft:
case BottomLeft:
- strut.left = getExposedWidth() + (screen->getBorderWidth() * 2);
+ strut.left = getExposedWidth() + border_width;
break;
case TopRight:
case CenterRight:
case BottomRight:
- strut.right = getExposedWidth() + (screen->getBorderWidth() * 2);
+ strut.right = getExposedWidth() + border_width;
break;
}
break;
case TopCenter:
case TopLeft:
case TopRight:
- strut.top = getY() + getExposedHeight() +
- (screen->getBorderWidth() * 2);
+ strut.top = getExposedHeight() + border_width;
break;
case BottomCenter:
case BottomLeft:
case BottomRight:
- strut.bottom = screen->getHeight() - getY();
+ strut.bottom = getExposedHeight() + border_width;
break;
case CenterLeft:
- strut.left = getExposedWidth() + (screen->getBorderWidth() * 2);
+ strut.left = getExposedWidth() + border_width;
break;
case CenterRight:
- strut.right = getExposedWidth() + (screen->getBorderWidth() * 2);
+ strut.right = getExposedWidth() + border_width;
break;
}
break;
}
-void Slit::buttonPressEvent(XButtonEvent *e) {
+void Slit::buttonPressEvent(const XButtonEvent *e) {
if (e->window != frame.window) return;
if (e->button == Button1 && (! on_top)) {
}
-void Slit::enterNotifyEvent(XCrossingEvent *) {
+void Slit::enterNotifyEvent(const XCrossingEvent *) {
if (! do_auto_hide)
return;
}
-void Slit::leaveNotifyEvent(XCrossingEvent *) {
+void Slit::leaveNotifyEvent(const XCrossingEvent *) {
if (! do_auto_hide)
return;
}
-void Slit::configureRequestEvent(XConfigureRequestEvent *e) {
+void Slit::configureRequestEvent(const XConfigureRequestEvent *e) {
if (! blackbox->validateWindow(e->window))
return;
}
-void Slit::unmapNotifyEvent(XUnmapEvent *e) {
+void Slit::unmapNotifyEvent(const XUnmapEvent *e) {
removeClient(e->window);
}