aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormathias <mathias>2005-06-18 13:47:36 (GMT)
committermathias <mathias>2005-06-18 13:47:36 (GMT)
commit019da77c56f951793dfdcb4f04a2fe827f26a835 (patch)
tree7cd7ed6867e639c8c9db6bd48d2de70b15e0ff22 /src
parenta8d7752804bcf5ed21dd3df2464a153227391422 (diff)
downloadfluxbox_pavel-019da77c56f951793dfdcb4f04a2fe827f26a835.zip
fluxbox_pavel-019da77c56f951793dfdcb4f04a2fe827f26a835.tar.bz2
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.
Diffstat (limited to 'src')
-rw-r--r--src/Window.cc28
1 files changed, 12 insertions, 16 deletions
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() {
504 } 504 }
505 505
506 associateClientWindow(true, wattrib.x, wattrib.y, wattrib.width, wattrib.height); 506 associateClientWindow(true, wattrib.x, wattrib.y, wattrib.width, wattrib.height);
507
508
509 Fluxbox::instance()->attachSignals(*this);
510
511 // this window is managed, we are now allowed to modify actual state
512 m_initialized = true;
513
514
515
516 applyDecorations(true); 507 applyDecorations(true);
517
518 grabButtons(); 508 grabButtons();
519
520 restoreAttributes(); 509 restoreAttributes();
521 510
522 if (m_workspace_number < 0 || m_workspace_number >= screen().getCount()) 511 if (m_workspace_number < 0 || m_workspace_number >= screen().getCount())
@@ -548,8 +537,6 @@ void FluxboxWindow::init() {
548 if (wattrib.height <= 0) 537 if (wattrib.height <= 0)
549 wattrib.height = 1; 538 wattrib.height = 1;
550 539
551
552
553 // if we're a transient then we should be on the same layer as our parent 540 // if we're a transient then we should be on the same layer as our parent
554 if (m_client->isTransient() && 541 if (m_client->isTransient() &&
555 m_client->transientFor()->fbwindow() && 542 m_client->transientFor()->fbwindow() &&
@@ -570,12 +557,9 @@ void FluxboxWindow::init() {
570 if (!place_window) 557 if (!place_window)
571 moveResize(frame().x(), frame().y(), frame().width(), frame().height()); 558 moveResize(frame().x(), frame().y(), frame().width(), frame().height());
572 559
573
574
575 screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window); 560 screen().getWorkspace(m_workspace_number)->addWindow(*this, place_window);
576 setWorkspace(m_workspace_number); 561 setWorkspace(m_workspace_number);
577 562
578
579 if (shaded) { // start shaded 563 if (shaded) { // start shaded
580 shaded = false; 564 shaded = false;
581 shade(); 565 shade();
@@ -594,6 +578,10 @@ void FluxboxWindow::init() {
594 stick(); 578 stick();
595 deiconify(); //we're omnipresent and visible 579 deiconify(); //we're omnipresent and visible
596 } 580 }
581
582 Fluxbox::instance()->attachSignals(*this);
583 // this window is managed, we are now allowed to modify actual state
584 m_initialized = true;
597 585
598 sendConfigureNotify(); 586 sendConfigureNotify();
599 // no focus default 587 // no focus default
@@ -3545,6 +3533,14 @@ void FluxboxWindow::restore(bool remap) {
3545#ifdef DEBUG 3533#ifdef DEBUG
3546 cerr<<"restore("<<remap<<")"<<endl; 3534 cerr<<"restore("<<remap<<")"<<endl;
3547#endif // DEBUG 3535#endif // DEBUG
3536
3537 if (isShaded()) {
3538 if (!isIconic())
3539 setState(NormalState, false);
3540 if (frame().isShaded())
3541 frame().shade();
3542 }
3543
3548 while (!clientList().empty()) { 3544 while (!clientList().empty()) {
3549 restore(clientList().back(), remap); 3545 restore(clientList().back(), remap);
3550 // deleting winClient removes it from the clientList 3546 // deleting winClient removes it from the clientList