X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=otk%2Fproperty.cc;h=ad9eacc90736ce6a7ec1cb96c2f6676f5f79562e;hb=8f8acc24933830d4f5784616b9b0c5896bde0b93;hp=5425f8df81e3e604056c310ed45be4b64d6d9d73;hpb=d2c380fb54a29a586b97ab6421370e7acdcf28e5;p=chaz%2Fopenbox diff --git a/otk/property.cc b/otk/property.cc index 5425f8df..ad9eacc9 100644 --- a/otk/property.cc +++ b/otk/property.cc @@ -4,18 +4,20 @@ # include "../config.h" #endif // HAVE_CONFIG_H +#include "property.hh" +#include "display.hh" + extern "C" { #include } -#include "property.hh" -#include "display.hh" +#include namespace otk { -OBProperty::OBProperty() +Property::Property() { - assert(OBDisplay::display); + assert(Display::display); // make sure asserts fire if there is a problem memset(_atoms, 0, sizeof(_atoms)); @@ -27,9 +29,7 @@ OBProperty::OBProperty() _atoms[Atom_String] = XA_STRING; _atoms[Atom_Utf8] = create("UTF8_STRING"); -#ifdef HAVE_GETPID - _atoms[blackbox_pid] = create("_BLACKBOX_PID"); -#endif // HAVE_GETPID + _atoms[openbox_pid] = create("_OPENBOX_PID"); _atoms[wm_colormap_windows] = create("WM_COLORMAP_WINDOWS"); _atoms[wm_protocols] = create("WM_PROTOCOLS"); @@ -40,6 +40,7 @@ OBProperty::OBProperty() _atoms[wm_name] = create("WM_NAME"); _atoms[wm_icon_name] = create("WM_ICON_NAME"); _atoms[wm_class] = create("WM_CLASS"); + _atoms[wm_window_role] = create("WM_WINDOW_ROLE"); _atoms[motif_wm_hints] = create("_MOTIF_WM_HINTS"); _atoms[blackbox_hints] = create("_BLACKBOX_HINTS"); _atoms[blackbox_attributes] = create("_BLACKBOX_ATTRIBUTES"); @@ -130,6 +131,7 @@ OBProperty::OBProperty() _atoms[net_wm_action_close] = create("_NET_WM_ACTION_CLOSE"); _atoms[net_wm_state_modal] = create("_NET_WM_STATE_MODAL"); + _atoms[net_wm_state_sticky] = create("_NET_WM_STATE_STICKY"); _atoms[net_wm_state_maximized_vert] = create("_NET_WM_STATE_MAXIMIZED_VERT"); _atoms[net_wm_state_maximized_horz] = create("_NET_WM_STATE_MAXIMIZED_HORZ"); _atoms[net_wm_state_shaded] = create("_NET_WM_STATE_SHADED"); @@ -137,6 +139,8 @@ OBProperty::OBProperty() _atoms[net_wm_state_skip_pager] = create("_NET_WM_STATE_SKIP_PAGER"); _atoms[net_wm_state_hidden] = create("_NET_WM_STATE_HIDDEN"); _atoms[net_wm_state_fullscreen] = create("_NET_WM_STATE_FULLSCREEN"); + _atoms[net_wm_state_above] = create("_NET_WM_STATE_ABOVE"); + _atoms[net_wm_state_below] = create("_NET_WM_STATE_BELOW"); _atoms[kde_net_system_tray_windows] = create("_KDE_NET_SYSTEM_TRAY_WINDOWS"); _atoms[kde_net_wm_system_tray_window_for] = @@ -149,7 +153,7 @@ OBProperty::OBProperty() /* * clean up the class' members */ -OBProperty::~OBProperty() +Property::~Property() { } @@ -157,9 +161,11 @@ OBProperty::~OBProperty() /* * Returns an atom from the Xserver, creating it if necessary. */ -Atom OBProperty::create(const char *name) const +Atom Property::create(const char *name) const { - return XInternAtom(OBDisplay::display, name, False); + Atom a = XInternAtom(Display::display, name, False); + assert(a); + return a; } @@ -168,14 +174,14 @@ Atom OBProperty::create(const char *name) const * Sets a window property on a window, optionally appending to the existing * value. */ -void OBProperty::set(Window win, Atom atom, Atom type, +void Property::set(Window win, Atom atom, Atom type, unsigned char* data, int size, int nelements, bool append) const { assert(win != None); assert(atom != None); assert(type != None); assert(nelements == 0 || (nelements > 0 && data != (unsigned char *) 0)); assert(size == 8 || size == 16 || size == 32); - XChangeProperty(OBDisplay::display, win, atom, type, size, + XChangeProperty(Display::display, win, atom, type, size, (append ? PropModeAppend : PropModeReplace), data, nelements); } @@ -184,7 +190,7 @@ void OBProperty::set(Window win, Atom atom, Atom type, /* * Set a 32-bit property value on a window. */ -void OBProperty::set(Window win, Atoms atom, Atoms type, +void Property::set(Window win, Atoms atom, Atoms type, unsigned long value) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -197,7 +203,7 @@ void OBProperty::set(Window win, Atoms atom, Atoms type, /* * Set an array of 32-bit properties value on a window. */ -void OBProperty::set(Window win, Atoms atom, Atoms type, +void Property::set(Window win, Atoms atom, Atoms type, unsigned long value[], int elements) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -210,7 +216,7 @@ void OBProperty::set(Window win, Atoms atom, Atoms type, /* * Set an string property value on a window. */ -void OBProperty::set(Window win, Atoms atom, StringType type, +void Property::set(Window win, Atoms atom, StringType type, const std::string &value) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -231,7 +237,7 @@ void OBProperty::set(Window win, Atoms atom, StringType type, /* * Set an array of string property values on a window. */ -void OBProperty::set(Window win, Atoms atom, StringType type, +void Property::set(Window win, Atoms atom, StringType type, const StringVect &strings) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -264,7 +270,7 @@ void OBProperty::set(Window win, Atoms atom, StringType type, * property did not exist on the window, or has a different type/size format * than the user tried to retrieve. */ -bool OBProperty::get(Window win, Atom atom, Atom type, +bool Property::get(Window win, Atom atom, Atom type, unsigned long *nelements, unsigned char **value, int size) const { @@ -280,7 +286,7 @@ bool OBProperty::get(Window win, Atom atom, Atom type, bool ret = False; // try get the first element - result = XGetWindowProperty(OBDisplay::display, win, atom, 0l, 1l, + result = XGetWindowProperty(Display::display, win, atom, 0l, 1l, False, AnyPropertyType, &ret_type, &ret_size, nelements, &ret_bytes, &c_val); ret = (result == Success && ret_type == type && ret_size == size && @@ -298,7 +304,7 @@ bool OBProperty::get(Window win, Atom atom, Atom type, int remain = (ret_bytes - 1)/sizeof(long) + 1 + 1; if (remain > size/8 * (signed)maxread) // dont get more than the max remain = size/8 * (signed)maxread; - result = XGetWindowProperty(OBDisplay::display, win, atom, 0l, + result = XGetWindowProperty(Display::display, win, atom, 0l, remain, False, type, &ret_type, &ret_size, nelements, &ret_bytes, &c_val); ret = (result == Success && ret_type == type && ret_size == size && @@ -323,7 +329,7 @@ bool OBProperty::get(Window win, Atom atom, Atom type, /* * Gets a 32-bit property's value from a window. */ -bool OBProperty::get(Window win, Atoms atom, Atoms type, +bool Property::get(Window win, Atoms atom, Atoms type, unsigned long *nelements, unsigned long **value) const { @@ -337,7 +343,7 @@ bool OBProperty::get(Window win, Atoms atom, Atoms type, /* * Gets a single 32-bit property's value from a window. */ -bool OBProperty::get(Window win, Atoms atom, Atoms type, +bool Property::get(Window win, Atoms atom, Atoms type, unsigned long *value) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -356,7 +362,7 @@ bool OBProperty::get(Window win, Atoms atom, Atoms type, /* * Gets an string property's value from a window. */ -bool OBProperty::get(Window win, Atoms atom, StringType type, +bool Property::get(Window win, Atoms atom, StringType type, std::string *value) const { unsigned long n = 1; @@ -369,7 +375,7 @@ bool OBProperty::get(Window win, Atoms atom, StringType type, } -bool OBProperty::get(Window win, Atoms atom, StringType type, +bool Property::get(Window win, Atoms atom, StringType type, unsigned long *nelements, StringVect *strings) const { assert(atom >= 0 && atom < NUM_ATOMS); @@ -413,10 +419,10 @@ bool OBProperty::get(Window win, Atoms atom, StringType type, /* * Removes a property entirely from a window. */ -void OBProperty::erase(Window win, Atoms atom) const +void Property::erase(Window win, Atoms atom) const { assert(atom >= 0 && atom < NUM_ATOMS); - XDeleteProperty(OBDisplay::display, win, _atoms[atom]); + XDeleteProperty(Display::display, win, _atoms[atom]); } }