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:
parent
a8d7752804
commit
019da77c56
2 changed files with 14 additions and 16 deletions
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue