all repos — openbox @ 98f05a5c962c1f0a4d418d30f45f219ef4d9c200

openbox fork - make it a bit more like ryudo

let the user remove client decorations.
Dana Jansens danakj@orodu.net
commit

98f05a5c962c1f0a4d418d30f45f219ef4d9c200

parent

6236b523e87e8bc4f013844f52170cc415e2093c

2 files changed, 16 insertions(+), 9 deletions(-)

jump to
M src/client.ccsrc/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.ccsrc/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)