#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");
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");
*/
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();
}
}
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);
* 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);
/*
* 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);
}
/*
* 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);
}
/*
* 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;
}
#include <vector>
class XDisplay;
+class XScreen;
class XAtom {
typedef std::vector<Window> SupportWindows;
motif_wm_hints,
openbox_attributes,
openbox_change_attributes,
- openbox_hints;
+ openbox_hints,
// blackbox-protocol atoms (wm -> client)
openbox_structure_messages,
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,
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;
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;