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
}