From: Dana Jansens Date: Thu, 16 May 2002 18:39:03 +0000 (+0000) Subject: added the X classes to the build process though they aren't sued by anything else... X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=91a7ca7d206f2ce09a0eb1229db57b67d9bafc67;p=chaz%2Fopenbox added the X classes to the build process though they aren't sued by anything else yet. They now compile too. --- diff --git a/src/Makefile.am b/src/Makefile.am index 980acc6e..57af9dfe 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -30,7 +30,7 @@ CPPFLAGS= @CPPFLAGS@ @SHAPE@ @SLIT@ @INTERLACE@ @ORDEREDPSEUDO@ \ bin_PROGRAMS= openbox -openbox_SOURCES= BaseDisplay.cc Basemenu.cc Clientmenu.cc Configmenu.cc Geometry.cc Iconmenu.cc Image.cc Netizen.cc Resource.cc Rootmenu.cc Screen.cc Slit.cc Timer.cc Toolbar.cc Window.cc Windowmenu.cc Workspace.cc Workspacemenu.cc openbox.cc bsd-snprintf.c i18n.cc main.cc +openbox_SOURCES= BaseDisplay.cc Basemenu.cc Clientmenu.cc Configmenu.cc Geometry.cc Iconmenu.cc Image.cc Netizen.cc Resource.cc Rootmenu.cc Screen.cc Slit.cc Timer.cc Toolbar.cc Window.cc Windowmenu.cc Workspace.cc Workspacemenu.cc XAtom.cc XDisplay.cc XScreen.cc openbox.cc bsd-snprintf.c i18n.cc main.cc MAINTAINERCLEANFILES= Makefile.in @@ -82,6 +82,9 @@ Toolbar.o: Toolbar.cc i18n.h openbox.h BaseDisplay.h \ Timer.h Image.h Window.h Iconmenu.h Basemenu.h Windowmenu.h Slit.h \ Clientmenu.h Workspace.h Rootmenu.h Screen.h Configmenu.h \ Netizen.h Workspacemenu.h Toolbar.h Resource.h Geometry.h +XAtom.o: XAtom.cc XAtom.h XDisplay.h XScreen.h Geometry.h Util.h +XDisplay.o: XDisplay.cc XDisplay.h XAtom.h XScreen.h Geometry.h Util.h +XScreen.o: XScreen.cc XScreen.h Geometry.h XDisplay.h XAtom.h Window.o: Window.cc i18n.h openbox.h BaseDisplay.h \ Timer.h Image.h Window.h Iconmenu.h Basemenu.h Windowmenu.h Slit.h \ Screen.h Configmenu.h Netizen.h Rootmenu.h Workspace.h \ diff --git a/src/XAtom.cc b/src/XAtom.cc index febb9dbc..5f5fa9ed 100644 --- a/src/XAtom.cc +++ b/src/XAtom.cc @@ -21,8 +21,10 @@ #include "XAtom.h" #include "XDisplay.h" +#include "XScreen.h" +#include "Util.h" -XAtom::XAtom(XDisplay *display) { +XAtom::XAtom(const XDisplay *display) { _display = display->_display; wm_colormap_windows = getAtom("WM_COLORMAP_WINDOWS"); @@ -30,7 +32,7 @@ XAtom::XAtom(XDisplay *display) { wm_state = getAtom("WM_STATE"); wm_change_state = getAtom("WM_CHANGE_STATE"); wm_delete_window = getAtom("WM_DELETE_WINDOW"); - wm_take_focus = getAtom("WM_TAKE_FOCUS") + wm_take_focus = getAtom("WM_TAKE_FOCUS"); motif_wm_hints = getAtom("_MOTIF_WM_HINTS"); openbox_hints = getAtom("_BLACKBOX_HINTS"); openbox_attributes = getAtom("_BLACKBOX_ATTRIBUTES"); @@ -90,9 +92,10 @@ XAtom::XAtom(XDisplay *display) { */ XAtom::~XAtom() { while (!_support_windows.empty()) { - Window w = _support_windows.pop_back(); - ASSERT(w != None); // make sure we aren't fucking with this somewhere - XDestroyWindow(_display, w); + // make sure we aren't fucking with this somewhere + ASSERT(_support_windows.back() != None); + XDestroyWindow(_display, _support_windows.back()); + _support_windows.pop_back(); } } @@ -111,7 +114,7 @@ Atom XAtom::getAtom(const char *name) const { void XAtom::setSupported(const XScreen *screen) { // create the netwm support window Window w = XCreateSimpleWindow(_display, screen->rootWindow(), - 0, 0, 1, 1, 0, 0, 0) + 0, 0, 1, 1, 0, 0, 0); ASSERT(w != None); _support_windows.push_back(w); @@ -125,7 +128,7 @@ void XAtom::setSupported(const XScreen *screen) { * value. */ void XAtom::setValue(Window win, Atom atom, Atom type, unsigned char* data, - int size, int nelements, bool append) { + int size, int nelements, bool append) const { ASSERT(win != None); ASSERT(atom != None); ASSERT(type != None); ASSERT(data != (unsigned char *) 0); ASSERT(size == 8 || size == 16 || size == 32); @@ -139,44 +142,46 @@ void XAtom::setValue(Window win, Atom atom, Atom type, unsigned char* data, /* * Set a 32-bit CARDINAL property value on a window. */ -void XAtom::setValue(Window win, Atom atom, long value) const { - setValue(win, atom, XA_CARDINAL, static_cast(&value), - sizeof(long), 1, false); +void XAtom::setCardValue(Window win, Atom atom, long value) const { + setValue(win, atom, XA_CARDINAL, reinterpret_cast(&value), + 32, 1, false); } /* * Set an Atom property value on a window. */ -void XAtom::setValue(Window win, Atom atom, Atom value) { - setValue(win, atom, XA_ATOM, static_cast(&value), - sizeof(Atom), 1, false); +void XAtom::setAtomValue(Window win, Atom atom, Atom value) const { + setValue(win, atom, XA_ATOM, reinterpret_cast(&value), + 32, 1, false); } /* * Set a Window property value on a window. */ -void XAtom::setValue(Window win, Atom atom, Window value) { - setValue(win, atom, XA_WINDOW, static_cast(&value), - sizeof(Window), 1, false); +void XAtom::setWindowValue(Window win, Atom atom, Window value) const { + setValue(win, atom, XA_WINDOW, reinterpret_cast(&value), + 32, 1, false); } /* * Set a Pixmap property value on a window. */ -void XAtom::setValue(Window win, Atom atom, Pixmap value) { - setValue(win, atom, XA_PIXMAP, static_cast(&value), - sizeof(Pixmap), 1, false); +void XAtom::setPixmapValue(Window win, Atom atom, Pixmap value) const { + setValue(win, atom, XA_PIXMAP, reinterpret_cast(&value), + 32, 1, false); } /* * Set a string property value on a window. */ -void XAtom::setValue(Window win, Atom atom, std::string &value) { - setValue(win, atom, XA_STRING, static_cast(value.c_str()), +void XAtom::setStringValue(Window win, Atom atom, std::string &value) const { + setValue(win, atom, XA_STRING, + const_cast + (reinterpret_cast(value.c_str())), 8, value.size(), false); } @@ -184,44 +189,47 @@ void XAtom::setValue(Window win, Atom atom, std::string &value) { /* * Add elements to a 32-bit CARDINAL property value on a window. */ -void XAtom::addValue(Window win, Atom atom, long value) const { - setValue(win, atom, XA_CARDINAL, static_cast(&value), - sizeof(long), 1, true); +void XAtom::addCardValue(Window win, Atom atom, long value) const { + setValue(win, atom, XA_CARDINAL, reinterpret_cast(&value), + 32, 1, true); } /* * Add elements to an Atom property value on a window. */ -void XAtom::addValue(Window win, Atom atom, Atom value) const { - setValue(win, atom, XA_ATOM, static_cast(&value), - sizeof(Atom), 1, true); +void XAtom::addAtomValue(Window win, Atom atom, Atom value) const { + setValue(win, atom, XA_ATOM, reinterpret_cast(&value), + 32, 1, true); } /* * Add elements to a Window property value on a window. */ -void XAtom::addValue(Window win, Atom atom, Window value) const { - setValue(win, atom, XA_WINDOW, static_cast(&value), - sizeof(Window), 1, true); +void XAtom::addWindowValue(Window win, Atom atom, Window value) const { + setValue(win, atom, XA_WINDOW, reinterpret_cast(&value), + 32, 1, true); } /* * Add elements to a Pixmap property value on a window. */ -void XAtom::addValue(Window win, Atom atom, Pixmap value) const { - setValue(win, atom, XA_PIXMAP, static_cast(&value), - sizeof(Pixmap), 1, true); +void XAtom::addPixmapValue(Window win, Atom atom, Pixmap value) const { + setValue(win, atom, XA_PIXMAP, reinterpret_cast(&value), + 32, 1, true); } /* * Add characters to a string property value on a window. */ -void XAtom::addValue(Window win, Atom atom, std::string &value) const { - setValue(win, atom, XA_STRING, static_cast(value.c_str()), +void XAtom::addStringValue(Window win, Atom atom, std::string &value) const { + setValue(win, atom, XA_STRING, + const_cast + (reinterpret_cast + (value.c_str())), 8, value.size(), true); } @@ -276,52 +284,52 @@ bool XAtom::getValue(Window win, Atom atom, Atom type, unsigned long *nelements, /* * Gets a 32-bit Cardinal property's value from a window. */ -bool XAtom::getValue(Window win, Atom atom, unsigned long *nelements, +bool XAtom::getCardValue(Window win, Atom atom, unsigned long *nelements, long **value) const { return XAtom::getValue(win, atom, XA_CARDINAL, nelements, - static_cast(value), sizeof(long)); + reinterpret_cast(value), 32); } /* * Gets an Atom property's value from a window. */ -bool XAtom::getValue(Window win, Atom atom, unsigned long *nelements, +bool XAtom::getAtomValue(Window win, Atom atom, unsigned long *nelements, Atom **value) const { return XAtom::getValue(win, atom, XA_ATOM, nelements, - static_cast(value), sizeof(Atom)); + reinterpret_cast(value), 32); } /* * Gets an Window property's value from a window. */ -bool XAtom::getValue(Window win, Atom atom, unsigned long *nelements, +bool XAtom::getWindowValue(Window win, Atom atom, unsigned long *nelements, Window **value) const { return XAtom::getValue(win, atom, XA_WINDOW, nelements, - static_cast(value), sizeof(Window)); + reinterpret_cast(value), 32); } /* * Gets an Pixmap property's value from a window. */ -bool XAtom::getValue(Window win, Atom atom, unsigned long *nelements, +bool XAtom::getPixmapValue(Window win, Atom atom, unsigned long *nelements, Pixmap **value) const { return XAtom::getValue(win, atom, XA_PIXMAP, nelements, - static_cast(value), sizeof(Pixmap)); + reinterpret_cast(value), 32); } /* * Gets an string property's value from a window. */ -bool XAtom::getValue(Window win, Atom atom, unsigned long *nelements, +bool XAtom::getStringValue(Window win, Atom atom, unsigned long *nelements, std::string &value) const { unsigned char *data; bool ret = XAtom::getValue(win, atom, XA_STRING, nelements, &data, 8); if (ret) - value = data; + value = reinterpret_cast(data); return ret; } diff --git a/src/XAtom.h b/src/XAtom.h index 92291f69..424603ec 100644 --- a/src/XAtom.h +++ b/src/XAtom.h @@ -27,6 +27,7 @@ #include class XDisplay; +class XScreen; class XAtom { typedef std::vector SupportWindows; @@ -46,7 +47,7 @@ class XAtom { motif_wm_hints, openbox_attributes, openbox_change_attributes, - openbox_hints; + openbox_hints, // blackbox-protocol atoms (wm -> client) openbox_structure_messages, @@ -57,7 +58,7 @@ class XAtom { openbox_notify_current_workspace, openbox_notify_workspace_count, openbox_notify_window_raise, - openbox_notify_window_lower; + openbox_notify_window_lower, // blackbox-protocol atoms (client -> wm) openbox_change_workspace, openbox_change_window_focus, @@ -95,10 +96,10 @@ class XAtom { net_wm_ping; Atom getAtom(const char *name) const; - void setSupported(const XScreen *screen) const; + void setSupported(const XScreen *screen); - void setValue(Window win, Atom atom, Atom type, unsigned char *data, int size, - int nelements, bool append); + void setValue(Window win, Atom atom, Atom type, unsigned char *data, + int size, int nelements, bool append) const; bool getValue(Window win, Atom atom, Atom type, unsigned long *nelements, unsigned char **value, int size) const; @@ -107,34 +108,34 @@ class XAtom { XAtom& operator=(const XAtom&); public: - XAtom(XDisplay *display); + XAtom(const XDisplay *display); virtual ~XAtom(); - void setValue(Window win, Atom atom, long value) const; // a 32-bit CARDINAL - void setValue(Window win, Atom atom, Atom value) const; - void setValue(Window win, Atom atom, Window value) const; - void setValue(Window win, Atom atom, Pixmap value) const; - void setValue(Window win, Atom atom, std::string &value) const; + void setCardValue(Window win, Atom atom, long value) const; // 32-bit CARDINAL + void setAtomValue(Window win, Atom atom, Atom value) const; + void setWindowValue(Window win, Atom atom, Window value) const; + void setPixmapValue(Window win, Atom atom, Pixmap value) const; + void setStringValue(Window win, Atom atom, std::string &value) const; - void addValue(Window win, Atom atom, long value) const; // a 32-bit CARDINAL - void addValue(Window win, Atom atom, Atom value) const; - void addValue(Window win, Atom atom, Window value) const; - void addValue(Window win, Atom atom, Pixmap value) const; - void addValue(Window win, Atom atom, std::string &value) const; + void addCardValue(Window win, Atom atom, long value) const; // 32-bit CARDINAL + void addAtomValue(Window win, Atom atom, Atom value) const; + void addWindowValue(Window win, Atom atom, Window value) const; + void addPixmapValue(Window win, Atom atom, Pixmap value) const; + void addStringValue(Window win, Atom atom, std::string &value) const; // the 'value' is allocated inside the function and // delete [] value needs to be called when you are done with it. // teh 'value' array returned is null terminated, and has 'nelements' // elements in it plus the null. - bool getValue(Window win, Atom atom, unsigned long *nelements, - long **value) const; // a 32-bit CARDINAL - bool getValue(Window win, Atom atom, unsigned long *nelements, + bool getCardValue(Window win, Atom atom, unsigned long *nelements, + long **value) const; // 32-bit CARDINAL + bool getAtomValue(Window win, Atom atom, unsigned long *nelements, Atom **value) const; - bool getValue(Window win, Atom atom, unsigned long *nelements, + bool getWindowValue(Window win, Atom atom, unsigned long *nelements, Window **value) const; - bool getValue(Window win, Atom atom, unsigned long *nelements, + bool getPixmapValue(Window win, Atom atom, unsigned long *nelements, Pixmap **value) const; - bool getValue(Window win, Atom atom, unsigned long *nelements, + bool getStringValue(Window win, Atom atom, unsigned long *nelements, std::string &value) const; void eraseValue(Window win, Atom atom) const; diff --git a/src/XDisplay.cc b/src/XDisplay.cc index 48f19d76..8de6f138 100644 --- a/src/XDisplay.cc +++ b/src/XDisplay.cc @@ -19,7 +19,23 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -#include "Xdisplay.h" +#ifdef HAVE_CONFIG_H +# include "../config.h" +#endif + +#ifdef HAVE_UNNISTD_H +# include +#endif + +#ifdef HAVE_FCNTL_H +# include +#endif + +#ifdef SHAPE +# include +#endif + +#include "XDisplay.h" #include "XScreen.h" #include "Util.h" #include @@ -27,16 +43,22 @@ using std::cerr; -Xdisplay::Xdisplay(const char *dpyname) { +int XDisplay::XErrorHandler(Display *d, XErrorEvent *e) { + d=d;e=e; + return 0; +} + + +XDisplay::XDisplay(const char *dpyname) { _grabs = 0; _hasshape = false; - _display = XOpenDisplay(dpy_name); + _display = XOpenDisplay(dpyname); if (_display == NULL) { cerr << "Could not open display. Connection to X server failed.\n"; ::exit(2); } - if (-1 == fcntl(ConnectionNumber(display), F_SETFD, 1)) { + if (-1 == fcntl(ConnectionNumber(_display), F_SETFD, 1)) { cerr << "Could not mark display connection as close-on-exec.\n"; ::exit(2); } @@ -52,11 +74,11 @@ Xdisplay::Xdisplay(const char *dpyname) { const unsigned int scount = ScreenCount(_display); _screens.reserve(scount); for (unsigned int s = 0; s < scount; s++) - _screens.push_back(new XScreen(_display, s)); + _screens.push_back(new XScreen(this, s)); } -Xdisplay::~Xdisplay() { +XDisplay::~XDisplay() { std::for_each(_screens.begin(), _screens.end(), PointerAssassin()); XCloseDisplay(_display); } @@ -65,7 +87,7 @@ Xdisplay::~Xdisplay() { /* * Return information about a screen. */ -XScreen *Xdisplay::screen(unsigned int s) const { +XScreen *XDisplay::screen(unsigned int s) const { ASSERT(s < _screens.size()); return _screens[s]; } diff --git a/src/XDisplay.h b/src/XDisplay.h index b65d94c6..3b58003f 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; @@ -40,7 +42,7 @@ private: typedef std::vector XScreenList; XScreenList _screens; - int XErrorHandler(Display *d, XErrorEvent *e); + static int XErrorHandler(Display *d, XErrorEvent *e); // no copying!! XDisplay(const XDisplay &); @@ -50,18 +52,18 @@ protected: virtual void process_event(XEvent *) = 0; public: - Xdisplay(const char *dpyname = 0); - virtual ~Xdisplay(); + 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 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); diff --git a/src/XScreen.cc b/src/XScreen.cc index dbc48705..fc53385d 100644 --- a/src/XScreen.cc +++ b/src/XScreen.cc @@ -19,11 +19,13 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. +#include #include "XScreen.h" +#include "XDisplay.h" #include "Geometry.h" -XScreen::XScreen(const Display *display, const unsigned int number) { - _display = display; +XScreen::XScreen(const XDisplay *display, const unsigned int number) { + _display = display->_display; _number = number; _root = RootWindow(_display, _number); @@ -33,6 +35,10 @@ XScreen::XScreen(const Display *display, const unsigned int number) { } +XScreen::~XScreen() { +} + + /* * This sets up the _depth, _visual, and _colormap properties. */ @@ -58,7 +64,7 @@ void XScreen::setColorData() { } XFree(vinfo_return); } - if (visual) + if (_visual) _colormap = XCreateColormap(_display, _root, _visual, AllocNone); else { _visual = DefaultVisual(_display, _number); diff --git a/src/XScreen.h b/src/XScreen.h index 8626d9d7..6a6c6926 100644 --- a/src/XScreen.h +++ b/src/XScreen.h @@ -23,8 +23,9 @@ #define __XScreen_h #include +#include "Geometry.h" -class Size; +class XDisplay; class XScreen { private: @@ -33,7 +34,7 @@ private: Visual *_visual; Window _root; Colormap _colormap; - unsigned int _depth; + int _depth; Size _size; void setColorData(); @@ -43,7 +44,8 @@ private: XScreen& operator=(const XScreen&); public: - XScreen(const Display *display, const unsigned int number); + XScreen(const XDisplay *display, const unsigned int number); + virtual ~XScreen(); inline Visual *visual() const { return _visual; } inline Window rootWindow() const { return _root; }