From 24dd636f7318b0d21637aa7ffe253fe0ebf71f24 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 11 Nov 2002 10:41:44 +0000 Subject: [PATCH] watch for when screens cant be managed --- src/frame.cc | 2 ++ src/openbox.cc | 16 +++++++++++++--- src/screen.cc | 2 -- src/screen.hh | 6 ++++++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/frame.cc b/src/frame.cc index 388dcea6..1fed1768 100644 --- a/src/frame.cc +++ b/src/frame.cc @@ -412,6 +412,8 @@ void OBFrame::grabClient() XUngrabServer(otk::OBDisplay::display); update(); + + XMapWindow(otk::OBDisplay::display, _window); } diff --git a/src/openbox.cc b/src/openbox.cc index 5e0bff0c..93570c8c 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -128,9 +128,19 @@ Openbox::Openbox(int argc, char **argv) _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 } diff --git a/src/screen.cc b/src/screen.cc index 2da8c77a..9d316ce4 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -327,8 +327,6 @@ void OBScreen::manageWindow(Window window) 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) && diff --git a/src/screen.hh b/src/screen.hh index 91295f32..516632ac 100644 --- a/src/screen.hh +++ b/src/screen.hh @@ -99,6 +99,12 @@ public: //! 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 -- 2.45.2