summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-11-06 10:05:56 +0000
committerDana Jansens <danakj@orodu.net>2002-11-06 10:05:56 +0000
commit076d45d0cea0c9c2bac80c47b983d3872e7de470 (patch)
tree2e474688d83070621de30b8e332fafab21346e7e /src/client.cc
parent78a7593a46936e9495929ab4c4f8e8b98271d691 (diff)
read protocols too in OBClient
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/client.cc b/src/client.cc
index 9b26b3bf..5ecbb9ae 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -34,6 +34,7 @@ OBClient::OBClient(Window window)
getState();
getShaped();
+ updateProtocols();
updateNormalHints();
updateWMHints();
// XXX: updateTransientFor();
@@ -176,6 +177,7 @@ void OBClient::getArea()
assert(XGetWindowAttributes(otk::OBDisplay::display, _window, &wattrib));
_area.setRect(wattrib.x, wattrib.y, wattrib.width, wattrib.height);
+ _border_width = wattrib.border_width;
}
@@ -227,6 +229,29 @@ void OBClient::getShaped()
}
+void OBClient::updateProtocols() {
+ const otk::OBProperty *property = Openbox::instance->property();
+
+ Atom *proto;
+ int num_return = 0;
+
+ _focus_notify = false;
+
+ if (XGetWMProtocols(otk::OBDisplay::display, _window, &proto, &num_return)) {
+ for (int i = 0; i < num_return; ++i) {
+ if (proto[i] == property->atom(otk::OBProperty::wm_delete_window)) {
+ // XXX: do shit with this! let the window close, and show a close
+ // button
+ } else if (proto[i] == property->atom(otk::OBProperty::wm_take_focus))
+ // if this protocol is requested, then the window will be notified
+ // by the window manager whenever it receives focus
+ _focus_notify = true;
+ }
+ XFree(proto);
+ }
+}
+
+
void OBClient::updateNormalHints()
{
XSizeHints size;
@@ -351,7 +376,10 @@ void OBClient::update(const XPropertyEvent &e)
updateTitle();
else if (e.atom == property->atom(otk::OBProperty::wm_class))
updateClass();
+ else if (e.atom == property->atom(otk::OBProperty::wm_protocols))
+ updateProtocols();
// XXX: transient for hint
+ // XXX: strut hint
}