#include "Window.h"
#include "Workspace.h"
#include "Workspacemenu.h"
+#include "Util.h"
#include <string>
#include <algorithm>
# include <stdio.h>
#endif // HAVE_STDIO_H
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
+#endif // HAVE_STDLIB_H
+
+#ifdef HAVE_STRING_H
# include <string.h>
-#endif // STDC_HEADERS
+#endif // HAVE_STRING_H
#ifdef HAVE_UNISTD_H
# include <sys/types.h>
} else {
rc_file = bstrdup(rc);
}
- symlink_rc(rc_file);
config.setFile(rc_file);
no_focus = False;
screenList = new LinkedList<BScreen>;
for (int i = 0; i < getNumberOfScreens(); i++) {
- BScreen *screen = new BScreen(this, i);
+ BScreen *screen = new BScreen(*this, i);
if (! screen->isScreenManaged()) {
delete screen;
reconfigure_wait = reread_menu_wait = False;
- timer = new BTimer(this, this);
+ timer = new BTimer(*this, *this);
timer->setTimeout(0);
timer->fireOnce(True);
if (my < 0) my = 0;
if (mx + screen->getWorkspacemenu()->getWidth() >
- screen->getWidth())
- mx = screen->getWidth() -
+ screen->size().w())
+ mx = screen->size().w() -
screen->getWorkspacemenu()->getWidth() -
screen->getBorderWidth();
if (my + screen->getWorkspacemenu()->getHeight() >
- screen->getHeight())
- my = screen->getHeight() -
+ screen->size().h())
+ my = screen->size().h() -
screen->getWorkspacemenu()->getHeight() -
screen->getBorderWidth();
if (mx < 0) mx = 0;
if (my < 0) my = 0;
- if (mx + screen->getRootmenu()->getWidth() > screen->getWidth())
- mx = screen->getWidth() -
+ if (mx + screen->getRootmenu()->getWidth() > screen->size().w())
+ mx = screen->size().w() -
screen->getRootmenu()->getWidth() -
screen->getBorderWidth();
- if (my + screen->getRootmenu()->getHeight() > screen->getHeight())
- my = screen->getHeight() -
+ if (my + screen->getRootmenu()->getHeight() > screen->size().h())
+ my = screen->size().h() -
screen->getRootmenu()->getHeight() -
screen->getBorderWidth();
screen->getRootmenu()->show();
}
} else if (e->xbutton.button == 4) {
- if ((screen->getCurrentWorkspaceID()-1)<0)
- screen->changeWorkspaceID(screen->getWorkspaceCount()-1);
+ if ((screen->getCurrentWorkspaceID() + 1) >
+ screen->getWorkspaceCount() - 1)
+ screen->changeWorkspaceID(0);
else
- screen->changeWorkspaceID(screen->getCurrentWorkspaceID()-1);
+ screen->changeWorkspaceID(screen->getCurrentWorkspaceID() + 1);
} else if (e->xbutton.button == 5) {
- if ((screen->getCurrentWorkspaceID()+1)>screen->getWorkspaceCount()-1)
- screen->changeWorkspaceID(0);
+ if ((screen->getCurrentWorkspaceID() - 1) < 0)
+ screen->changeWorkspaceID(screen->getWorkspaceCount() - 1);
else
- screen->changeWorkspaceID(screen->getCurrentWorkspaceID()+1);
+ screen->changeWorkspaceID(screen->getCurrentWorkspaceID() - 1);
}
}
}
OpenboxWindow *win = searchWindow(e->xmaprequest.window);
if (! win)
- win = new OpenboxWindow(this, e->xmaprequest.window);
+ win = new OpenboxWindow(*this, e->xmaprequest.window);
if ((win = searchWindow(e->xmaprequest.window)))
win->mapRequestEvent(&e->xmaprequest);
switch (screen->getPlacementPolicy()) {
case BScreen::CascadePlacement: placement = "CascadePlacement"; break;
+ case BScreen::BestFitPlacement: placement = "BestFitPlacement"; break;
case BScreen::ColSmartPlacement: placement = "ColSmartPlacement"; break;
default:
case BScreen::RowSmartPlacement: placement = "RowSmartPlacement"; break;
void Openbox::load_rc(BScreen *screen) {
- assert (screen != NULL);
+ ASSERT (screen != NULL);
const int screen_number = screen->getScreenNumber();
- assert (screen_number >= 0);
+ ASSERT (screen_number >= 0);
if (!config.load())
return;
sprintf(name_lookup, "session.screen%d.focusModel", screen_number);
sprintf(class_lookup, "Session.Screen%d.FocusModel", screen_number);
if (config.getValue(name_lookup, class_lookup, s)) {
- cout << s << endl;
if (0 == strncasecmp(s.c_str(), "clicktofocus", s.length())) {
screen->saveAutoRaise(False);
screen->saveSloppyFocus(False);
screen->savePlacementPolicy(BScreen::RowSmartPlacement);
else if (0 == strncasecmp(s.c_str(), "ColSmartPlacement", s.length()))
screen->savePlacementPolicy(BScreen::ColSmartPlacement);
+ else if (0 == strncasecmp(s.c_str(), "BestFitPlacement", s.length()))
+ screen->savePlacementPolicy(BScreen::BestFitPlacement);
else
screen->savePlacementPolicy(BScreen::CascadePlacement);
} else
if (old_screen && old_screen != screen)
old_screen->updateNetizenWindowFocus();
}
-
-#warning TODO: wrap in appropriate #ifdefs.
-
-void Openbox::symlink_rc(const char*rcfile)const{
- char *homedir = getenv("HOME");
-
- char *link_file = new char[strlen(homedir) + strlen("/.blackoxrc") + 1];
- sprintf(link_file, "%s/.blackboxrc", homedir);
- if(symlink(rcfile, link_file) == -1){
- perror("Cannot create symlink");
- }
-}