aboutsummaryrefslogtreecommitdiff
path: root/src/Window.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Window.cc')
-rw-r--r--src/Window.cc26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/Window.cc b/src/Window.cc
index c74f101..bbeb640 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: Window.cc,v 1.34 2002/03/19 14:30:42 fluxgen Exp $ 25// $Id: Window.cc,v 1.35 2002/03/23 15:14:45 fluxgen Exp $
26 26
27//use GNU extensions 27//use GNU extensions
28#ifndef _GNU_SOURCE 28#ifndef _GNU_SOURCE
@@ -411,9 +411,11 @@ FluxboxWindow::~FluxboxWindow(void) {
411 XUngrabPointer(display, CurrentTime); 411 XUngrabPointer(display, CurrentTime);
412 } 412 }
413 413
414 if (workspace_number != -1 && window_number != -1) 414 if (!iconic) {
415 screen->getWorkspace(workspace_number)->removeWindow(this); 415 Workspace *workspace = screen->getWorkspace(workspace_number);
416 else if (iconic) 416 if (workspace)
417 workspace->removeWindow(this);
418 } else //it's iconic
417 screen->removeIcon(this); 419 screen->removeIcon(this);
418 420
419 if (windowmenu) 421 if (windowmenu)
@@ -2022,9 +2024,9 @@ void FluxboxWindow::iconify(void) {
2022 2024
2023 2025
2024void FluxboxWindow::deiconify(bool reassoc, bool raise) { 2026void FluxboxWindow::deiconify(bool reassoc, bool raise) {
2025 if (iconic || reassoc) 2027 if (iconic || reassoc) {
2026 screen->reassociateWindow(this, -1, false); 2028 screen->reassociateWindow(this, screen->getCurrentWorkspace()->getWorkspaceID(), false);
2027 else if (workspace_number != screen->getCurrentWorkspace()->getWorkspaceID()) 2029 } else if (workspace_number != screen->getCurrentWorkspace()->getWorkspaceID())
2028 return; 2030 return;
2029 2031
2030 setState(NormalState); 2032 setState(NormalState);
@@ -2443,7 +2445,7 @@ void FluxboxWindow::stick(void) {
2443 stuck = false; 2445 stuck = false;
2444 2446
2445 if (! iconic) 2447 if (! iconic)
2446 screen->reassociateWindow(this, -1, true); 2448 screen->reassociateWindow(this, screen->getCurrentWorkspace()->getWorkspaceID(), true);
2447 2449
2448 2450
2449 } else { 2451 } else {
@@ -2712,8 +2714,8 @@ void FluxboxWindow::restoreAttributes(void) {
2712 current_state = save_state; 2714 current_state = save_state;
2713 } 2715 }
2714 2716
2715 if (((int) blackbox_attrib.workspace != screen->getCurrentWorkspaceID()) && 2717 if (( blackbox_attrib.workspace != screen->getCurrentWorkspaceID()) &&
2716 ((int) blackbox_attrib.workspace < screen->getCount())) { 2718 ( blackbox_attrib.workspace < screen->getCount())) {
2717 screen->reassociateWindow(this, blackbox_attrib.workspace, true); 2719 screen->reassociateWindow(this, blackbox_attrib.workspace, true);
2718 2720
2719 if (current_state == NormalState) current_state = WithdrawnState; 2721 if (current_state == NormalState) current_state = WithdrawnState;
@@ -3675,10 +3677,10 @@ void FluxboxWindow::changeBlackboxHints(BaseDisplay::BlackboxHints *net) {
3675 stick(); 3677 stick();
3676 3678
3677 if ((net->flags & BaseDisplay::ATTRIB_WORKSPACE) && 3679 if ((net->flags & BaseDisplay::ATTRIB_WORKSPACE) &&
3678 (workspace_number != (signed) net->workspace)) { 3680 (workspace_number != net->workspace)) {
3679 screen->reassociateWindow(this, net->workspace, true); 3681 screen->reassociateWindow(this, net->workspace, true);
3680 3682
3681 if (screen->getCurrentWorkspaceID() != (signed) net->workspace) 3683 if (screen->getCurrentWorkspaceID() != net->workspace)
3682 withdraw(); 3684 withdraw();
3683 else 3685 else
3684 deiconify(); 3686 deiconify();