::blackbox = this;
argv = m_argv;
+
+ // try to make sure the ~/.openbox directory exists
+ mkdir(expandTilde("~/.openbox").c_str(), S_IREAD | S_IWRITE | S_IEXEC |
+ S_IRGRP | S_IWGRP | S_IXGRP |
+ S_IROTH | S_IWOTH | S_IXOTH);
+
if (! rc) rc = "~/.openbox/rc";
rc_file = expandTilde(rc);
config.setFile(rc_file);
active_screen = 0;
focused_window = changing_window = (BlackboxWindow *) 0;
- XrmInitialize();
load_rc();
xatom = new XAtom(getXDisplay());
BlackboxWindow *win = searchWindow(e->xmaprequest.window);
if (win) {
+ bool focus = False;
if (win->isIconic()) {
win->deiconify();
- win->setInputFocus();
+ focus = True;
+ }
+ if (win->isShaded()) {
+ win->shade();
+ focus = True;
}
+
+ if (focus && (win->isTransient() || win->getScreen()->doFocusNew()))
+ win->setInputFocus();
} else {
BScreen *screen = searchScreen(e->xmaprequest.parent);
bool Blackbox::handleSignal(int sig) {
switch (sig) {
case SIGHUP:
+ restart();
+ break;
+
case SIGUSR1:
reconfigure();
break;
void Blackbox::load_rc(void) {
if (! config.load())
- config.create();
+ config.create();
string s;