diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-05-16 15:50:41 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-05-16 15:50:41 +0000 |
| commit | cc7cb82debabb98b6cca375f53fe29da7ae4fad4 (patch) | |
| tree | bb62727679ce2bd96d019bf4307d25f3c3fc7f07 /src/XDisplay.h | |
| parent | bd196c710829f27458e620b8933cb67a33044cc0 (diff) | |
adding new X base classes which encapsulate all X server interation
Diffstat (limited to 'src/XDisplay.h')
| -rw-r--r-- | src/XDisplay.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/XDisplay.h b/src/XDisplay.h new file mode 100644 index 00000000..b65d94c6 --- /dev/null +++ b/src/XDisplay.h @@ -0,0 +1,77 @@ +// XDisplay.h for Openbox +// Copyright (c) 2002 - 2002 Ben Janens (ben at orodu.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +#ifndef __XDisplay_h +#define __XDisplay_h + +#include <X11/Xlib.h> +#include <string> +#include <vector> + +class Xdisplay { + friend XAtom::XAtom(); + //friend class XAtom; + +private: + Display *_display; + std::string _name; + unsigned int _grabs; + bool _hasshape; + int _shape_event_base; + + typedef std::vector<XScreen*> XScreenList; + XScreenList _screens; + + int XErrorHandler(Display *d, XErrorEvent *e); + + // no copying!! + XDisplay(const XDisplay &); + XDisplay& operator=(const XDisplay&); + +protected: + virtual void process_event(XEvent *) = 0; + +public: + Xdisplay(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 Display *display() const { return _display; } + + inline std::string name() const { return name; } + + // these belong in Xwindow + //const bool validateWindow(Window); + //void grabButton(unsigned int, unsigned int, Window, Bool, unsigned int, int, + // int, Window, Cursor) const; + //void ungrabButton(unsigned int button, unsigned int modifiers, + // Window grab_window) const; + + void grab(); + void ungrab(); +}; + +#endif // _XDisplay_h |
