]> Dogcows Code - chaz/openbox/blobdiff - scripts/focus.py
better skipping of focus events while stackedcycling, fixes bug where esc would still...
[chaz/openbox] / scripts / focus.py
index 5e7c0d28dbdf900b65053c70b11654c915167562..de426c720a2484d05d869242bedd7e88fcaabc33 100644 (file)
@@ -24,11 +24,12 @@ import ob
 
 # maintain a list of clients, stacked in focus order
 _clients = []
-_disable = 0
+_skip = 0
 
 def _focusable(client, desktop):
     if not client.normal(): return 0
     if not (client.canFocus() or client.focusNotify()): return 0
+    if client.iconic(): return 0
     if AVOID_SKIP_TASKBAR and client.skipTaskbar(): return 0
 
     desk = client.desktop()
@@ -49,11 +50,17 @@ def _remove(client):
 def _focused(data):
     global _clients
 
-    if _disable: return
+    if _skip:
+        global _skip
+        _skip -= 1
+        return
 
     if data.client:
+        print data.client.window()
         # move it to the top
-        _remove(data.client)
+        try:
+            _remove(data.client)
+        except ValueError: pass # happens if _focused comes before _newwindow
         _clients.insert(0, data.client)
     elif FALLBACK:
         # pass around focus
@@ -63,6 +70,11 @@ def _focused(data):
                 break
 
 def _newwindow(data):
+    # make sure its not already in the list
+    win = data.client.window()
+    for i in range(len(_clients)):
+        if _clients[i].window() == win:
+            return
     _clients.append(data.client)
         
 def _closewindow(data):
This page took 0.023044 seconds and 4 git commands to generate.