]> Dogcows Code - chaz/openbox/blobdiff - scripts/focus.py
rm debug prints
[chaz/openbox] / scripts / focus.py
index d12ae191ed6881f169aacbd6b2494f0a1e6c96c8..6bb6499283c13d2d659796dc4109b7ec7c376d83 100644 (file)
@@ -7,15 +7,15 @@
 ###                                                                     ###
 # cycle_raise - raise the window also when it is focused                ###
 cycle_raise = 1                                                         ###
-# avoid_skip_taskbar - don't focus windows which have requested to not  ###
-###                    be displayed in taskbars. you will still be able ###
+# avoid_skip_taskbar - Don't focus windows which have requested to not  ###
+###                    be displayed in taskbars. You will still be able ###
 ###                    to focus the windows, but not through cycling,   ###
-###                    they won't be focused as a fallback if           ###
+###                    and they won't be focused as a fallback if       ###
 ###                    'fallback' is enabled.                           ###
 avoid_skip_taskbar = 1                                                  ###
 # stacked_cycle_raise - raise as you cycle in stacked mode              ###
 stacked_cycle_raise = 0                                                 ###
-# stacked_cycle_popup_list - show a pop-up list of windows while
+# stacked_cycle_popup_list - show a pop-up list of windows while        ###
 ###                          cycling                                    ###
 stacked_cycle_popup_list = 1                                            ###
 # send focus somewhere when nothing is left with the focus, if possible ###
@@ -47,6 +47,13 @@ _clients = []
 # maintaint he current focused window
 _doing_stacked = 0
 
+def _focusable(client, desktop):
+    if not (avoid_skip_taskbar and client.skipTaskbar()) and \
+       (client.desktop() == desktop or client.desktop() == 0xffffffff) and \
+       client.normal() and (client.canFocus() or client.focusNotify()):
+        return 1
+    return 0
+
 def _new_win(data):
     global _clients
     global _doing_stacked
@@ -82,7 +89,7 @@ def _focused(data):
     global _clients
     global _doing_stacked
     global _cyc_w
-    
+
     if data.client:
         if not _doing_stacked: # only move the window when we're not cycling
             win = data.client.window()
@@ -92,15 +99,12 @@ def _focused(data):
         else: # if we are cycling, then update our pointer
             _cyc_w = data.client.window()
             _hilite_popup_list(data)
-    elif fallback: 
+    elif fallback:
         # pass around focus
         desktop = ob.openbox.screen(_cyc_screen).desktop()
         for w in _clients:
             client = ob.openbox.findClient(w)
-            if client and not (avoid_skip_taskbar and client.skipTaskbar()) \
-                   and (client.desktop() == desktop or
-                        client.desktop() == 0xffffffff) \
-                        and client.normal() and client.focus():
+            if client and _focusable(client, desktop) and client.focus():
                 break
         if _doing_stacked:
             _cyc_w = 0
@@ -131,9 +135,7 @@ def _do_stacked_cycle(data, forward):
     for w in clients:
         client = ob.openbox.findClient(w)
                    
-        if client and not (avoid_skip_taskbar and client.skipTaskbar()) and \
-               (client.desktop() == desktop or client.desktop() == 0xffffffff)\
-                and client.normal() and client.focus():
+        if client and _focusable(client, desktop) and client.focus():
             if stacked_cycle_raise:
                 ob.openbox.screen(data.screen).raiseWindow(client)
             return
@@ -150,9 +152,11 @@ def _focus_stacked_ungrab(data):
             ob.kungrab()
             ob.mungrab()
             _doing_stacked = 0;
-            if cycle_raise:
-                client = ob.openbox.findClient(_cyc_w)
-                if client:
+            client = ob.openbox.findClient(_cyc_w)
+            if client:
+                data.client = client
+                #_focused(data) # resort the list as appropriate
+                if cycle_raise:
                     ob.openbox.screen(data.screen).raiseWindow(client)
 
 _list_widget = 0
@@ -204,13 +208,10 @@ def _create_popup_list(data):
     font = style.labelFont()
     height = font.height()
     longest = 0
+    desktop = ob.openbox.screen(data.screen).desktop()
     for c in _clients:
         client = ob.openbox.findClient(c)
-        desktop = ob.openbox.screen(data.screen).desktop()
-        if client and not (avoid_skip_taskbar and client.skipTaskbar()) and \
-               (client.desktop() == desktop or client.desktop() == 0xffffffff)\
-               and client.normal() and (client.canFocus() or
-                                        client.focusNotify()):
+        if client and _focusable(client, desktop):
             t = client.title()
             if len(t) > 50: # limit the length of titles
                 t = t[:24] + "..." + t[-24:]
@@ -298,13 +299,10 @@ def focus_next(data, num=1, forward=1):
             else: target = count - 1
 
     t = target
-    curdesk = screen.desktop()
+    desktop = screen.desktop()
     while 1:
         client = screen.client(t)
-        if not (avoid_skip_taskbar and client.skipTaskbar()) and \
-               client.normal() and (client.desktop() == curdesk or
-                                    client.desktop() == 0xffffffff)\
-                                    and client.focus():
+        if client and _focusable(client, desktop) and client.focus():
             if cycle_raise:
                 screen.raiseWindow(client)
             return
This page took 0.022501 seconds and 4 git commands to generate.