]> Dogcows Code - chaz/openbox/commitdiff
store pointers instead of window id's. this lets us use them directly instead of...
authorDana Jansens <danakj@orodu.net>
Tue, 4 Feb 2003 11:44:48 +0000 (11:44 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 4 Feb 2003 11:44:48 +0000 (11:44 +0000)
scripts/focus.py
scripts/stackedcycle.py

index b1b169e1487e034e5d52318da5e5506cd939479c..5e7c0d28dbdf900b65053c70b11654c915167562 100644 (file)
@@ -36,31 +36,37 @@ def _focusable(client, desktop):
 
     return 1
 
+def _remove(client):
+    """This function exists because Swig pointers don't define a __eq__
+       function, so list.remove(ptr) does not work."""
+    win = client.window()
+    for i in range(len(_clients)):
+        if _clients[i].window() == win:
+            _clients.pop(i)
+            return
+    raise ValueError("_remove(x): x not in _clients list.")
+
 def _focused(data):
     global _clients
 
     if _disable: return
 
     if data.client:
-        win = data.client.window()
         # move it to the top
-        _clients.remove(win)
-        _clients.insert(0, win)
+        _remove(data.client)
+        _clients.insert(0, data.client)
     elif FALLBACK:
         # pass around focus
         desktop = ob.openbox.screen(data.screen).desktop()
-        for w in _clients:
-            client = ob.openbox.findClient(w)
-            if client and _focusable(client, desktop) and client.focus():
+        for c in _clients:
+            if _focusable(c, desktop) and c.focus():
                 break
 
 def _newwindow(data):
-    _clients.append(data.client.window())
+    _clients.append(data.client)
         
 def _closewindow(data):
-    try:
-        _clients.remove(data.client.window())
-    except ValueError: pass
+    _remove(data.client)
 
 ob.ebind(ob.EventAction.NewWindow, _newwindow)
 ob.ebind(ob.EventAction.CloseWindow, _closewindow)
index 9c60c1b9c66a25a9c7ccc5f3c0f5d13ee40a9e91..49ac6848c6c0d0d3b93be98baf7d1df7e453f1c3 100644 (file)
@@ -96,11 +96,9 @@ class _cycledata:
         # get the list of clients, keeping iconic windows at the bottom
         self.clients = []
         iconic_clients = []
-        for i in focus._clients:
-            c = ob.openbox.findClient(i)
-            if c:
-                if c.iconic(): iconic_clients.append(c)
-                else: self.clients.append(c)
+        for c in focus._clients:
+            if c.iconic(): iconic_clients.append(c)
+            else: self.clients.append(c)
         self.clients.extend(iconic_clients)
 
         font = self.style.labelFont()
This page took 0.024031 seconds and 4 git commands to generate.