X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FXDisplay.h;h=b736fd423dd10dc95f88de702c165378979b1ad7;hb=de712f85676ca0a386c956165bb6460d65206c46;hp=b65d94c67ce7c517d2a15b1873afbc5069d1a19d;hpb=cc7cb82debabb98b6cca375f53fe29da7ae4fad4;p=chaz%2Fopenbox diff --git a/src/XDisplay.h b/src/XDisplay.h index b65d94c6..b736fd42 100644 --- a/src/XDisplay.h +++ b/src/XDisplay.h @@ -25,10 +25,12 @@ #include #include #include +#include "XAtom.h" +#include "XScreen.h" -class Xdisplay { - friend XAtom::XAtom(); - //friend class XAtom; +class XDisplay { + friend XAtom::XAtom(const XDisplay *); + friend XScreen::XScreen(const XDisplay *, const unsigned int); private: Display *_display; @@ -39,8 +41,11 @@ private: typedef std::vector XScreenList; XScreenList _screens; - - int XErrorHandler(Display *d, XErrorEvent *e); + + // X error handling + static int XErrorHandler(Display *d, XErrorEvent *e); + static std::string _app_name; + static Window _last_bad_window; // no copying!! XDisplay(const XDisplay &); @@ -50,18 +55,18 @@ protected: virtual void process_event(XEvent *) = 0; public: - Xdisplay(const char *dpyname = 0); - virtual ~Xdisplay(); + XDisplay(const std::string &application_name, const char *dpyname = 0); + virtual ~XDisplay(); XScreen *screen(unsigned int s) const; inline unsigned int screenCount() const { return _screens.size(); } inline bool hasShape() const { return _hasshape; } - inline int shapeEventBase() const { return shape.event_basep; } + inline int shapeEventBase() const { return _shape_event_base; } //inline Display *display() const { return _display; } - inline std::string name() const { return name; } + inline std::string name() const { return _name; } // these belong in Xwindow //const bool validateWindow(Window); @@ -72,6 +77,8 @@ public: void grab(); void ungrab(); + + bool nextEvent(XEvent &e); }; #endif // _XDisplay_h