]> Dogcows Code - chaz/openbox/commitdiff
make all parents/transients that are related have the same sticky state.
authorDana Jansens <danakj@orodu.net>
Sat, 1 Jun 2002 17:18:55 +0000 (17:18 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 1 Jun 2002 17:18:55 +0000 (17:18 +0000)
src/Window.cc
src/Window.hh

index 80fe08169fd3f4519117e20b245729afc9e4ff7b..d33692449329e071432702f8407d03f3a5b6288a 100644 (file)
@@ -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();
 }
 
 
index 038a58affc578613e8ab3cdfbe6c28d0942d70b2..191e65923f5f6568b8ce591b4164c8f0613d610b 100644 (file)
@@ -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);
This page took 0.030399 seconds and 4 git commands to generate.