]> Dogcows Code - chaz/openbox/commitdiff
let the user remove client decorations.
authorDana Jansens <danakj@orodu.net>
Wed, 29 Jan 2003 22:10:28 +0000 (22:10 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 29 Jan 2003 22:10:28 +0000 (22:10 +0000)
src/client.cc
src/frame.cc

index e9136df4d0324c3294869e8af44d6cee9ef56af1..4637307767b3aa7bb8b2810f72c8216ee229db54 100644 (file)
@@ -51,6 +51,8 @@ Client::Client(int screen, Window window)
   _urgent = false;
   // not positioned unless specified
   _positioned = false;
+  // nothing is disabled unless specified
+  _disabled_decorations = 0;
   
   getArea();
   getDesktop();
@@ -306,6 +308,12 @@ void Client::setupDecorAndFunctions()
     _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 @@ void Client::updateStrut()
     _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 @@ void Client::propertyHandler(const XPropertyEvent &e)
     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 @@ void Client::propertyHandler(const XPropertyEvent &e)
   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
 }
 
 
index 20e65932273af6c37166d9b2bf134f722739e568..06b263d8fa783a471d6f89a922bddf4535755567 100644 (file)
@@ -128,7 +128,8 @@ void Frame::adjustSize()
   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 @@ void Frame::adjustSize()
     _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)
This page took 0.026007 seconds and 4 git commands to generate.