#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>
menuTimestamps = new LinkedList<MenuTimestamp>;
- XrmInitialize();
load_rc();
#ifdef HAVE_GETPID
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
void Openbox::real_reconfigure(void) {
grab();
- XrmDatabase new_openboxrc = (XrmDatabase) 0;
- char style[MAXPATHLEN + 64];
-
- sprintf(style, "session.styleFile: %s", resource.style_file);
- XrmPutLineResource(&new_openboxrc, style);
-
- XrmDatabase old_openboxrc = XrmGetFileDatabase(rc_file);
-
- XrmMergeDatabases(new_openboxrc, &old_openboxrc);
- XrmPutFileDatabase(old_openboxrc, rc_file);
- if (old_openboxrc) XrmDestroyDatabase(old_openboxrc);
-
+ config.load();
+ config.setValue("session.styleFile", resource.style_file); // autosave's
+
for (int i = 0, n = menuTimestamps->count(); i < n; i++) {
MenuTimestamp *ts = menuTimestamps->remove(0);