]> Dogcows Code - chaz/openbox/blobdiff - src/openbox.cc
hack so text shows up
[chaz/openbox] / src / openbox.cc
index 60db5d83f4c5c61133cbf1212522181eb714cd89..d2ce85fd2b990697e9e37637b60e5241e621fdba 100644 (file)
@@ -95,6 +95,7 @@ Openbox::Openbox(int argc, char **argv)
   _focused_client = 0;
   _sync = false;
   _single = false;
+  _remote = false;
 
   parseCommandLine(argc, argv);
 
@@ -133,6 +134,7 @@ Openbox::Openbox(int argc, char **argv)
 
   // initialize all the screens
   _focused_screen = 0;
+  _managed_count = 0;
 
   for (int i = 0, max = ScreenCount(**otk::display); i < max; ++i) {
     Screen *screen;
@@ -147,77 +149,52 @@ Openbox::Openbox(int argc, char **argv)
       _screens.push_back(screen);
       if (!_focused_screen) // set this to the first screen managed
         _focused_screen = screen;
+      _managed_count++;
     } else {
       delete screen;
       _screens.push_back(0);
     }
   }
 
-  if (_screens.empty()) {
+  if (!_managed_count) {
     printf(_("No screens were found without a window manager. Exiting.\n"));
     ::exit(1);
   }
 
   assert(_focused_screen);
 
-  ScreenList::iterator it, end = _screens.end();
-  
-  // run the user's script or the system defaults if that fails
-  bool pyerr, doretry;
-  do {
-    // initialize scripting
-    python_init(argv[0]);
-
-    // load all of the screens' configs here so we have a theme set if
-    // we decide to show the dialog below
-    for (it = _screens.begin(); it != end; ++it)
-      (*it)->config().load(); // load the defaults from config.py
-    
-    pyerr = doretry = false;
-
-    // reset all the python stuff
-    _bindings->removeAllKeys();
-    _bindings->removeAllButtons();
-    _bindings->removeAllEvents();
-
-    int ret = python_exec(_scriptfilepath.c_str());
-    if (ret == 2)
-      pyerr = true;
-
-    if (ret) {
-      // reset all the python stuff
-      _bindings->removeAllKeys();
-      _bindings->removeAllButtons();
-      _bindings->removeAllEvents();
-      
-      if (python_exec(SCRIPTDIR"/defaults.py")) // system default bahaviors
-        pyerr = true;
-    }
+  // initialize scripting
+  python_init(argv[0]);
 
-    if (pyerr) {
+  // load the theme XXX TEMP SHIT
+  otk::RenderStyle::setStyle(0, "");
+
+  int ret = python_exec(_scriptfilepath.c_str());
+  if (ret == 2) {
       std::string msg;
       msg += _("An error occured while executing the python scripts.");
       msg += "\n\n";
       msg += _("See the exact error message in Openbox's output for details.");
       otk::MessageDialog dia(this, _("Python Error"), msg);
       otk::DialogButton ok(_("Okay"), true);
-      otk::DialogButton retry(_("Retry"));
+      otk::DialogButton retry(_("Restart"));
       dia.addButton(ok);
       dia.addButton(retry);
       dia.show();
       dia.focus();
       const otk::DialogButton &res = dia.run();
       if (res == retry) {
-        doretry = true;
-        python_destroy(); // kill all the python modules so they reinit right
+        _restart = _shutdown = true;
+        return;
       }
-    }
-  } while (pyerr && doretry);
-    
-  for (it = _screens.begin(); it != end; ++it) {
-    (*it)->config().load(); // load the config as the scripts may change it
-    (*it)->manageExisting();
   }
+
+  if (ret)
+    python_exec(SCRIPTDIR"/defaults.py"); // system default bahaviors
+
+  ScreenList::iterator it, end = _screens.end();
+  for (it = _screens.begin(); it != end; ++it)
+    if (*it) (*it)->manageExisting();
   
   // grab any keys set up before the screens existed
   //_bindings->grabKeys(true);
@@ -274,6 +251,8 @@ void Openbox::parseCommandLine(int argc, char **argv)
       _sync = true;
     } else if (arg == "-single") {
       _single = true;
+    } else if (arg == "-remote") {
+      _remote = true;
     } else if (arg == "-version") {
       showVersion();
       ::exit(0);
@@ -305,7 +284,8 @@ void Openbox::showHelp()
   // print program usage and command line options
   printf(_("Usage: %s [OPTIONS...]\n\
   Options:\n\
-  -display <string>  use display connection.\n\
+  -remote            optimize for a remote (low bandwidth) connection to the\n\
+                     display/Xserver.\n\
   -single            run on a single screen (default is to run every one).\n\
   -rc <string>       use alternate resource file.\n\
   -menu <string>     use alternate menu file.\n\
@@ -349,8 +329,10 @@ void Openbox::showHelp()
 void Openbox::eventLoop()
 {
   while (true) {
-    dispatchEvents(); // from otk::EventDispatcher
-    XFlush(**otk::display); // flush here before we go wait for timers
+    dispatchEvents(false); // from otk::EventDispatcher
+//    XFlush(**otk::display); // flush here before we go wait for timers
+                              // .. the XPending() should have done this last
+                              // already, it does a flush when it returns 0
     // don't wait if we're to shutdown
     if (_shutdown) break;
     otk::Timer::dispatchTimers(!_sync); // wait if not in sync mode
This page took 0.029997 seconds and 4 git commands to generate.