let the user remove client decorations.
Dana Jansens danakj@orodu.net
2 files changed,
16 insertions(+),
9 deletions(-)
M
src/client.cc
→
src/client.cc
@@ -51,6 +51,8 @@ // default to not urgent
_urgent = false; // not positioned unless specified _positioned = false; + // nothing is disabled unless specified + _disabled_decorations = 0; getArea(); getDesktop();@@ -306,6 +308,12 @@ if (_disabled_decorations & Decor_Close)
_decorations &= ~Decor_Close; changeAllowedActions(); + + if (frame) { + frame->adjustSize(); // change the decors on the frame + frame->adjustPosition(); // with more/less decorations, we may need to be + // moved + } }@@ -624,8 +632,11 @@ _strut.left = data[0];
_strut.right = data[1]; _strut.top = data[2]; _strut.bottom = data[3]; - - openbox->screen(_screen)->updateStrut(); + + // updating here is pointless while we're being mapped cuz we're not in + // the screen's client list yet + if (frame) + openbox->screen(_screen)->updateStrut(); } delete [] data;@@ -695,7 +706,6 @@ updateTransientFor();
getType(); calcLayer(); // type may have changed, so update the layer setupDecorAndFunctions(); - frame->adjustSize(); // this updates the frame for any new decor settings } else if (e.atom == otk::Property::atoms.net_wm_name || e.atom == otk::Property::atoms.wm_name)@@ -708,7 +718,6 @@ updateClass();
else if (e.atom == otk::Property::atoms.wm_protocols) { updateProtocols(); setupDecorAndFunctions(); - frame->adjustSize(); // update the decorations } else if (e.atom == otk::Property::atoms.net_wm_strut) updateStrut();@@ -1343,8 +1352,6 @@ void Client::disableDecorations(DecorationFlags flags)
{ _disabled_decorations = flags; setupDecorAndFunctions(); - if (frame) - frame->adjustSize(); // change the decors on the frame }
M
src/frame.cc
→
src/frame.cc
@@ -128,7 +128,8 @@ bool tit_i = false, tit_m = false, tit_s = false, tit_c = false;
int width; // the width of the client and its border int bwidth; // width to make borders int cbwidth; // width of the inner client border - int butsize=0; // width and height of the titlebar buttons + int fontheight = _style->labelFont()->height(); // height of the font + int butsize = fontheight - 2; // width and height of the titlebar buttons const int bevel = _style->bevelWidth(); if (_decorations & Client::Decor_Border) {@@ -157,9 +158,8 @@ _style->labelFont()->height() + (bevel * 2));
_innersize.top += _titlebar.height() + bwidth; // set the label size - _label.setGeometry(0, bevel, width, _style->labelFont()->height()); + _label.setGeometry(0, bevel, width, fontheight); // set the buttons sizes - butsize = _label.height() - 2; if (_decorations & Client::Decor_Iconify) _button_iconify.setGeometry(0, bevel + 1, butsize, butsize); if (_decorations & Client::Decor_Maximize)