From 019da77c56f951793dfdcb4f04a2fe827f26a835 Mon Sep 17 00:00:00 2001
From: mathias <mathias>
Date: Sat, 18 Jun 2005 13:47:36 +0000
Subject: Fixes #1116965, shadwd windows on restart:

shaded icons behaved badly on restart, they went into a real stupid state:
somehow shaded, but at the same time iconic, so you werent able to unshade,
resize them properly.

i fixed that by applying NormalState on shutdowntime (see
FluxboxWindow::restore(), unshading a shaded frame to get good
window dimensions and on init() i mark the window initialized and connect it
to Fluxbox::attachSignals() a bit later.
---
 ChangeLog     |  2 ++
 src/Window.cc | 28 ++++++++++++----------------
 2 files changed, 14 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 62d3d7e..34907bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 (Format: Year/Month/Day)
 Changes for 0.9.14:
 *05/06/18:
+  * Fixes #1116965, shadwd windows on restart (Mathias)
+    Window.cc
   * little Fix for font effects (Mathias)
     FbTk/ThemeItems.cc
 *05/06/15:
diff --git a/src/Window.cc b/src/Window.cc
index 2c7103b..59739a7 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -504,19 +504,8 @@ void FluxboxWindow::init() {
     }
 
     associateClientWindow(true, wattrib.x, wattrib.y, wattrib.width, wattrib.height);
-
-    
-    Fluxbox::instance()->attachSignals(*this);
-
-    // this window is managed, we are now allowed to modify actual state
-    m_initialized = true;
-
-
-
     applyDecorations(true);
-
     grabButtons();
-
     restoreAttributes();
 
     if (m_workspace_number < 0 || m_workspace_number >= screen().getCount())
@@ -548,8 +537,6 @@ void FluxboxWindow::init() {
     if (wattrib.height <= 0)
         wattrib.height = 1;
 
-
-
     // if we're a transient then we should be on the same layer as our parent
     if (m_client->isTransient() &&
         m_client->transientFor()->fbwindow() &&
@@ -570,12 +557,9 @@ void FluxboxWindow::init() {
     if (!place_window)
         moveResize(frame().x(), frame().y(), frame().width(), frame().height());
 
-
-
     screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window);
     setWorkspace(m_workspace_number);
 
-
     if (shaded) { // start shaded
         shaded = false;
         shade();
@@ -594,6 +578,10 @@ void FluxboxWindow::init() {
         stick();
         deiconify(); //we're omnipresent and visible
     }
+    
+    Fluxbox::instance()->attachSignals(*this);
+    // this window is managed, we are now allowed to modify actual state
+    m_initialized = true;
 
     sendConfigureNotify();
     // no focus default
@@ -3545,6 +3533,14 @@ void FluxboxWindow::restore(bool remap) {
 #ifdef DEBUG
     cerr<<"restore("<<remap<<")"<<endl;
 #endif // DEBUG
+
+    if (isShaded()) {
+        if (!isIconic())
+            setState(NormalState, false);
+        if (frame().isShaded())
+            frame().shade();
+    }
+    
     while (!clientList().empty()) {
         restore(clientList().back(), remap);
         // deleting winClient removes it from the clientList
-- 
cgit v0.11.2