]> Dogcows Code - chaz/openbox/blobdiff - src/blackbox.cc
dont need to XrmInit outside of the Config class. fix indenting.
[chaz/openbox] / src / blackbox.cc
index 36828f7e5e3ce2927e24bebe5521c2a3731a0a49..631e819e1bab33c5c499efd112ca2e0739def576 100644 (file)
@@ -111,7 +111,6 @@ using std::string;
 #include "Workspace.hh"
 #include "Workspacemenu.hh"
 #include "XAtom.hh"
-#include "Input.hh"
 
 // X event scanner for enter/leave notifies - adapted from twm
 struct scanargs {
@@ -146,6 +145,12 @@ Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
 
   ::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);  
@@ -163,7 +168,6 @@ Blackbox::Blackbox(char **m_argv, char *dpy_name, char *rc, char *menu)
   load_rc();
 
   xatom = new XAtom(getXDisplay());
-  input = new BInput(this);
 
   cursor.session = XCreateFontCursor(getXDisplay(), XC_left_ptr);
   cursor.move = XCreateFontCursor(getXDisplay(), XC_fleur);
@@ -324,7 +328,12 @@ void Blackbox::process_event(XEvent *e) {
 
     BlackboxWindow *win = searchWindow(e->xmaprequest.window);
 
-    if (! win) {
+    if (win) {
+      if (win->isIconic()) {
+        win->deiconify();
+        win->setInputFocus();
+      }
+    } else {
       BScreen *screen = searchScreen(e->xmaprequest.parent);
 
       if (! screen) {
@@ -446,13 +455,9 @@ void Blackbox::process_event(XEvent *e) {
   case PropertyNotify: {
     last_time = e->xproperty.time;
 
-    if (e->xproperty.state != PropertyDelete) {
-      BlackboxWindow *win = searchWindow(e->xproperty.window);
-
-      if (win)
-        win->propertyNotifyEvent(e->xproperty.atom);
-    }
-
+    BlackboxWindow *win = searchWindow(e->xproperty.window);
+    if (win)
+      win->propertyNotifyEvent(&e->xproperty);
     break;
   }
 
@@ -1145,6 +1150,7 @@ void Blackbox::restart(const char *prog) {
   shutdown();
 
   if (prog) {
+    putenv(const_cast<char *>(screenList.front()->displayString().c_str()));
     execlp(prog, prog, NULL);
     perror(prog);
   }
This page took 0.023092 seconds and 4 git commands to generate.