all repos — openbox @ 24dd636f7318b0d21637aa7ffe253fe0ebf71f24

openbox fork - make it a bit more like ryudo

watch for when screens cant be managed
Dana Jansens danakj@orodu.net
commit

24dd636f7318b0d21637aa7ffe253fe0ebf71f24

parent

e503323dcf36c7b4c173ddc0cd302b8642361f48

4 files changed, 21 insertions(+), 5 deletions(-)

jump to
M src/frame.ccsrc/frame.cc

@@ -412,6 +412,8 @@

XUngrabServer(otk::OBDisplay::display); update(); + + XMapWindow(otk::OBDisplay::display, _window); }
M src/openbox.ccsrc/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.ccsrc/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.hhsrc/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