getType();
// set the decorations and functions
+ _decorations = Decor_Titlebar | Decor_Handle | Decor_Border |
+ Decor_Iconify | Decor_Maximize;
+ _functions = Func_Resize | Func_Move | Func_Iconify | Func_Maximize;
switch (_type) {
case Type_Normal:
// normal windows retain all of the possible decorations and
// functionality
- _decorations = Decor_Titlebar | Decor_Handle | Decor_Border |
- Decor_Iconify | Decor_Maximize;
- _functions = Func_Resize | Func_Move | Func_Iconify | Func_Maximize;
case Type_Dialog:
// dialogs cannot be maximized
updateTitle();
updateIconTitle();
updateClass();
+ updateStrut();
calcLayer();
changeState();
}
+void OBClient::updateStrut()
+{
+ unsigned long num = 4;
+ unsigned long *data;
+ if (!Openbox::instance->property()->get(_window,
+ otk::OBProperty::net_wm_strut,
+ otk::OBProperty::Atom_Cardinal,
+ &num, &data))
+ return;
+
+ if (num == 4) {
+ _strut.left = data[0];
+ _strut.right = data[1];
+ _strut.top = data[2];
+ _strut.bottom = data[3];
+
+ Openbox::instance->screen(_screen)->updateStrut();
+ }
+
+ delete [] data;
+}
+
+
void OBClient::propertyHandler(const XPropertyEvent &e)
{
otk::OtkEventHandler::propertyHandler(e);
else if (e.atom == property->atom(otk::OBProperty::wm_protocols))
updateProtocols();
// XXX: transient for hint
+ else if (e.atom == property->atom(otk::OBProperty::net_wm_strut))
+ updateStrut();
// XXX: strut hint
}
}
+
+void OBClient::setStackLayer(int l)
+{
+ if (l == 0)
+ _above = _below = false; // normal
+ else if (l > 0) {
+ _above = true;
+ _below = false; // above
+ } else {
+ _above = false;
+ _below = true; // below
+ }
+ changeState();
+}
+
+
void OBClient::shade(bool shade)
{
if (shade == _shaded) return; // already done