watch for when screens cant be managed
Dana Jansens danakj@orodu.net
4 files changed,
21 insertions(+),
5 deletions(-)
M
src/frame.cc
→
src/frame.cc
@@ -412,6 +412,8 @@
XUngrabServer(otk::OBDisplay::display); update(); + + XMapWindow(otk::OBDisplay::display, _window); }
M
src/openbox.cc
→
src/openbox.cc
@@ -128,9 +128,19 @@ _cursors.ul_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ul_angle);
_cursors.ur_angle = XCreateFontCursor(otk::OBDisplay::display, XC_ur_angle); // initialize all the screens - _screens.push_back(new OBScreen(0, _config)); - _screens[0]->manageExisting(); - // XXX: "change to" the first workspace on the screen to initialize stuff + OBScreen *screen; + screen = new OBScreen(0, _config); + if (screen->managed()) { + _screens.push_back(screen); + _screens[0]->manageExisting(); + // XXX: "change to" the first workspace on the screen to initialize stuff + } else + delete screen; + + if (_screens.empty()) { + printf(_("No screens were found without a window manager. Exiting.\n")); + ::exit(1); + } _state = State_Normal; // done starting }
M
src/screen.cc
→
src/screen.cc
@@ -327,8 +327,6 @@ OBClient *client = 0;
XWMHints *wmhint; XSetWindowAttributes attrib_set; - printf("Managing Window: %lx\n", window); - // is the window a docking app if ((wmhint = XGetWMHints(otk::OBDisplay::display, window))) { if ((wmhint->flags & StateHint) &&
M
src/screen.hh
→
src/screen.hh
@@ -99,6 +99,12 @@ OBScreen(int screen, const otk::Configuration &config);
//! Destroys the OBScreen object virtual ~OBScreen(); + //! Returns if the screen was successfully managed + /*! + If this is false, then the screen should be deleted and should NOT be + used. + */ + inline bool managed() const { return _managed; } //! Returns the Image Control used for rendering on the screen inline otk::BImageControl *imageControl() { return _image_control; } //! Returns the dimentions of the screen