From: Dana Jansens Date: Sat, 1 Jun 2002 17:18:55 +0000 (+0000) Subject: make all parents/transients that are related have the same sticky state. X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=4e0fde35ac60dcf36c3180b1606abba84ccace34;p=chaz%2Fopenbox make all parents/transients that are related have the same sticky state. --- diff --git a/src/Window.cc b/src/Window.cc index 80fe0816..d3369244 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -254,6 +254,11 @@ BlackboxWindow::BlackboxWindow(Blackbox *b, Window w, BScreen *s) { frame.rect.width(), frame.rect.height()); } + // get sticky state from our parent window if we've got one + if (isTransient() && client.transient_for != (BlackboxWindow *) ~0ul && + client.transient_for->isStuck() != flags.stuck) + stick(); + if (flags.shaded) { flags.shaded = False; shade(); @@ -1609,6 +1614,9 @@ void BlackboxWindow::shade(void) { } +/* + * (Un)Sticks a window and its relatives. + */ void BlackboxWindow::stick(void) { if (flags.stuck) { blackbox_attrib.flags ^= AttribOmnipresent; @@ -1628,6 +1636,16 @@ void BlackboxWindow::stick(void) { setState(current_state); } + // go up the chain + if (isTransient() && client.transient_for != (BlackboxWindow *) ~0ul && + client.transient_for->isStuck() != flags.stuck) + client.transient_for->stick(); + // go down the chain + BlackboxWindowList::iterator it; + const BlackboxWindowList::iterator end = client.transientList.end(); + for (it = client.transientList.begin(); it != end; ++it) + if ((*it)->isStuck() != flags.stuck) + (*it)->stick(); } diff --git a/src/Window.hh b/src/Window.hh index 038a58af..191e6592 100644 --- a/src/Window.hh +++ b/src/Window.hh @@ -331,7 +331,6 @@ public: void remaximize(void); void shade(void); void stick(void); - void unstick(void); void reconfigure(void); void updateFocusModel(void); void installColormap(bool install);