diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-07-12 00:40:05 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-07-12 00:40:05 +0000 |
| commit | 0a9130b6c76bafb553e954feafa197897e6ecbdd (patch) | |
| tree | c1bef7740c3f90665aedddfdb0e83a044494970d /util/epist/window.cc | |
| parent | cf3d512a998151bd585906c7478b576d5d3877ff (diff) | |
now we know the state of windows
Diffstat (limited to 'util/epist/window.cc')
| -rw-r--r-- | util/epist/window.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/util/epist/window.cc b/util/epist/window.cc index ebe458d4..a366fc49 100644 --- a/util/epist/window.cc +++ b/util/epist/window.cc @@ -25,13 +25,40 @@ #endif // HAVE_CONFIG_H #include "window.hh" +#include "epist.hh" +#include "../../src/XAtom.hh" XWindow::XWindow(Window window) : _window(window) { + XSelectInput(_display, _window, PropertyChangeMask); + updateState(); } XWindow::~XWindow() { + XSelectInput(_display, _window, None); } +void XWindow::updateState() { + // set the defaults + _shaded = _iconic = _max_vert = _max_horz = false; + + unsigned long num = (unsigned) -1; + Atom *state; + if (! _xatom->getValue(_window, XAtom::net_wm_state, XAtom::atom, + num, &state)) + return; + for (unsigned long i = 0; i < num; ++i) { + if (state[i] == _xatom->getAtom(XAtom::net_wm_state_maximized_vert)) + _max_vert = true; + if (state[i] == _xatom->getAtom(XAtom::net_wm_state_maximized_horz)) + _max_horz = true; + if (state[i] == _xatom->getAtom(XAtom::net_wm_state_shaded)) + _shaded = true; + if (state[i] == _xatom->getAtom(XAtom::net_wm_state_hidden)) + _iconic = true; + } + + delete [] state; +} |
