diff --git a/geometry.cpp b/geometry.cpp index 1e1729ca3b..59bfaa8f42 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2015,11 +2015,20 @@ void Client::setGeometry( int x, int y, int w, int h, ForceGeometry_t force ) // SELI TODO won't this be too expensive? sendSyntheticConfigureNotify(); updateWindowRules(); + + // keep track of old maximize mode + // to detect changes + MaximizeMode old_mode( max_mode ); checkMaximizeGeometry(); workspace()->checkActiveScreen( this ); workspace()->updateStackingOrder(); workspace()->checkUnredirect(); - if( resized ) + + // need to regenerate decoration pixmaps when either + // - size is changed + // - maximize mode is changed to MaximizeRestore, when size unchanged + // which can happen when untabbing maximized windows + if( resized || ( old_mode != max_mode && max_mode == MaximizeRestore ) ) { discardWindowPixmap(); if( scene != NULL )