]> Dogcows Code - chaz/openbox/blobdiff - src/client.cc
clean up transient's parent's reference in destructor
[chaz/openbox] / src / client.cc
index b4015aae63227c877d492dffac86f4cb03d87799..b77eb8f075cb579d5f6c2d12bfc3a20336ce72c0 100644 (file)
@@ -72,6 +72,10 @@ OBClient::~OBClient()
 {
   const otk::OBProperty *property = Openbox::instance->property();
 
+  // clean up parents reference to this
+  if (_transient_for)
+    _transient_for->_transients.remove(this); // remove from old parent
+  
   if (Openbox::instance->state() != Openbox::State_Exiting) {
     // these values should not be persisted across a window unmapping/mapping
     property->erase(_window, otk::OBProperty::net_wm_desktop);
@@ -237,7 +241,7 @@ void OBClient::getMwmHints()
                      (unsigned long **)&hints))
     return;
   
-  if (num == MwmHints::elements) {
+  if (num >= MwmHints::elements) {
     // retrieved the hints
     _mwmhints.flags = hints[0];
     _mwmhints.functions = hints[1];
@@ -608,6 +612,7 @@ void OBClient::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 == property->atom(otk::OBProperty::net_wm_name) ||
            e.atom == property->atom(otk::OBProperty::wm_name))
This page took 0.02284 seconds and 4 git commands to generate.