all repos — fluxbox @ 019da77c56f951793dfdcb4f04a2fe827f26a835

custom fork of the fluxbox windowmanager

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.
mathias mathias
commit

019da77c56f951793dfdcb4f04a2fe827f26a835

parent

a8d7752804bcf5ed21dd3df2464a153227391422

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

jump to
M ChangeLogChangeLog

@@ -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:
M src/Window.ccsrc/Window.cc

@@ -504,19 +504,8 @@ decorations.tab = false; //no tab for this window

} 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 @@ wattrib.width = 1;

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() &&

@@ -569,13 +556,10 @@

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 @@ stuck = false;

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 @@ return;

#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