]> Dogcows Code - chaz/openbox/commitdiff
added the X classes to the build process though they aren't sued by anything else...
authorDana Jansens <danakj@orodu.net>
Thu, 16 May 2002 18:39:03 +0000 (18:39 +0000)
committerDana Jansens <danakj@orodu.net>
Thu, 16 May 2002 18:39:03 +0000 (18:39 +0000)
src/Makefile.am
src/XAtom.cc
src/XAtom.h
src/XDisplay.cc
src/XDisplay.h
src/XScreen.cc
src/XScreen.h

index 980acc6e547f241331c75790a8dba7611fd0b0e8..57af9dfe1d6f39f58b8e781960d1d740a2cd81a5 100644 (file)
@@ -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 \
index febb9dbce1aaf2f6a2dba00be42e2b22db5d3364..5f5fa9edbfcfa5e204c84c0a4c5b07afd1f84b16 100644 (file)
 
 #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<unsigned char*>(&value),
-           sizeof(long), 1, false);
+void XAtom::setCardValue(Window win, Atom atom, long value) const {
+  setValue(win, atom, XA_CARDINAL, reinterpret_cast<unsigned char*>(&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<unsigned char*>(&value),
-           sizeof(Atom), 1, false);
+void XAtom::setAtomValue(Window win, Atom atom, Atom value) const {
+  setValue(win, atom, XA_ATOM, reinterpret_cast<unsigned char*>(&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<unsigned char*>(&value),
-           sizeof(Window), 1, false);
+void XAtom::setWindowValue(Window win, Atom atom, Window value) const {
+  setValue(win, atom, XA_WINDOW, reinterpret_cast<unsigned char*>(&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<unsigned char*>(&value),
-           sizeof(Pixmap), 1, false);
+void XAtom::setPixmapValue(Window win, Atom atom, Pixmap value) const {
+  setValue(win, atom, XA_PIXMAP, reinterpret_cast<unsigned char*>(&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<unsigned char*>(value.c_str()),
+void XAtom::setStringValue(Window win, Atom atom, std::string &value) const {
+  setValue(win, atom, XA_STRING,
+           const_cast<unsigned char*>
+           (reinterpret_cast<const unsigned char*>(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<unsigned char*>(&value),
-           sizeof(long), 1, true);
+void XAtom::addCardValue(Window win, Atom atom, long value) const {
+  setValue(win, atom, XA_CARDINAL, reinterpret_cast<unsigned char*>(&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<unsigned char*>(&value),
-           sizeof(Atom), 1, true);
+void XAtom::addAtomValue(Window win, Atom atom, Atom value) const {
+  setValue(win, atom, XA_ATOM, reinterpret_cast<unsigned char*>(&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<unsigned char*>(&value),
-           sizeof(Window), 1, true);
+void XAtom::addWindowValue(Window win, Atom atom, Window value) const {
+  setValue(win, atom, XA_WINDOW, reinterpret_cast<unsigned char*>(&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<unsigned char*>(&value),
-           sizeof(Pixmap), 1, true);
+void XAtom::addPixmapValue(Window win, Atom atom, Pixmap value) const {
+  setValue(win, atom, XA_PIXMAP, reinterpret_cast<unsigned char*>(&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<unsigned char*>(value.c_str()),
+void XAtom::addStringValue(Window win, Atom atom, std::string &value) const {
+  setValue(win, atom, XA_STRING,
+           const_cast<unsigned char*>
+           (reinterpret_cast<const unsigned char *>
+            (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<unsigned char **>(value), sizeof(long));
+                  reinterpret_cast<unsigned char **>(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<unsigned char **>(value), sizeof(Atom));
+                  reinterpret_cast<unsigned char **>(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<unsigned char **>(value), sizeof(Window));
+                  reinterpret_cast<unsigned char **>(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<unsigned char **>(value), sizeof(Pixmap));
+                  reinterpret_cast<unsigned char **>(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<char*>(data);
   return ret;
 }
 
index 92291f698ea208981ae443b08e8f1d4856a7d613..424603eccb5b7998a5fbe93737e1a35376a125f4 100644 (file)
@@ -27,6 +27,7 @@
 #include <vector>
 
 class XDisplay;
+class XScreen;
 
 class XAtom {
   typedef std::vector<Window> 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; // 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;
index 48f19d76ae4caf24334d03e9887fb236fc717f2a..8de6f138f4d9fa517d536248d008373ff7625180 100644 (file)
 // 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 <unistd.h>
+#endif
+
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef SHAPE
+# include <X11/extensions/shape.h>
+#endif
+
+#include "XDisplay.h"
 #include "XScreen.h"
 #include "Util.h"
 #include <iostream>
 
 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];
 }
index b65d94c67ce7c517d2a15b1873afbc5069d1a19d..3b58003f5522c8df032d7341d1db832bde1b99bd 100644 (file)
 #include <X11/Xlib.h>
 #include <string>
 #include <vector>
+#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<XScreen*> 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);
index dbc487057707c653e9a4891fc7965a2fe92ebaf8..fc53385da0213a7888b564b45dee72e197ecbd8e 100644 (file)
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 // DEALINGS IN THE SOFTWARE.
 
+#include <X11/Xutil.h>
 #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);
index 8626d9d77f0d90b63f8807f860a82e38eecfeb5f..6a6c692605e375080a6662d64136394e0a5a7ae5 100644 (file)
@@ -23,8 +23,9 @@
 #define   __XScreen_h
 
 #include <X11/Xlib.h>
+#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; }
This page took 0.040448 seconds and 4 git commands to generate.