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.
This commit is contained in:
mathias 2005-06-18 13:47:36 +00:00
parent a8d7752804
commit 019da77c56
2 changed files with 14 additions and 16 deletions

View file

@ -1,6 +1,8 @@
(Format: Year/Month/Day) (Format: Year/Month/Day)
Changes for 0.9.14: Changes for 0.9.14:
*05/06/18: *05/06/18:
* Fixes #1116965, shadwd windows on restart (Mathias)
Window.cc
* little Fix for font effects (Mathias) * little Fix for font effects (Mathias)
FbTk/ThemeItems.cc FbTk/ThemeItems.cc
*05/06/15: *05/06/15:

View file

@ -504,19 +504,8 @@ void FluxboxWindow::init() {
} }
associateClientWindow(true, wattrib.x, wattrib.y, wattrib.width, wattrib.height); 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); applyDecorations(true);
grabButtons(); grabButtons();
restoreAttributes(); restoreAttributes();
if (m_workspace_number < 0 || m_workspace_number >= screen().getCount()) if (m_workspace_number < 0 || m_workspace_number >= screen().getCount())
@ -548,8 +537,6 @@ void FluxboxWindow::init() {
if (wattrib.height <= 0) if (wattrib.height <= 0)
wattrib.height = 1; wattrib.height = 1;
// if we're a transient then we should be on the same layer as our parent // if we're a transient then we should be on the same layer as our parent
if (m_client->isTransient() && if (m_client->isTransient() &&
m_client->transientFor()->fbwindow() && m_client->transientFor()->fbwindow() &&
@ -570,12 +557,9 @@ void FluxboxWindow::init() {
if (!place_window) if (!place_window)
moveResize(frame().x(), frame().y(), frame().width(), frame().height()); moveResize(frame().x(), frame().y(), frame().width(), frame().height());
screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window); screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window);
setWorkspace(m_workspace_number); setWorkspace(m_workspace_number);
if (shaded) { // start shaded if (shaded) { // start shaded
shaded = false; shaded = false;
shade(); shade();
@ -595,6 +579,10 @@ void FluxboxWindow::init() {
deiconify(); //we're omnipresent and visible 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(); sendConfigureNotify();
// no focus default // no focus default
setFocusFlag(false); setFocusFlag(false);
@ -3545,6 +3533,14 @@ void FluxboxWindow::restore(bool remap) {
#ifdef DEBUG #ifdef DEBUG
cerr<<"restore("<<remap<<")"<<endl; cerr<<"restore("<<remap<<")"<<endl;
#endif // DEBUG #endif // DEBUG
if (isShaded()) {
if (!isIconic())
setState(NormalState, false);
if (frame().isShaded())
frame().shade();
}
while (!clientList().empty()) { while (!clientList().empty()) {
restore(clientList().back(), remap); restore(clientList().back(), remap);
// deleting winClient removes it from the clientList // deleting winClient removes it from the clientList