]> Dogcows Code - chaz/openbox/commitdiff
split out the linear cycling into focuscycle.py.
authorDana Jansens <danakj@orodu.net>
Tue, 4 Feb 2003 09:34:17 +0000 (09:34 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 4 Feb 2003 09:34:17 +0000 (09:34 +0000)
some better comments about what options can be used.

scripts/Makefile.am
scripts/focus.py
scripts/focuscycle.py [new file with mode: 0644]
scripts/stackedcycle.py

index 16a61f133a922781fe969cacd920378437939768..b4d8138cd94483c3b4ac072ae2e1aed28b3a3532 100644 (file)
@@ -2,7 +2,7 @@ scriptdir = $(libdir)/openbox/python
 MAINTAINERCLEANFILES = Makefile.in
 script_DATA = config.py defaults.py focus.py callbacks.py \
               focusmodel.py windowplacement.py behavior.py motion.py \
-              historyplacement.py stackedcycle.py
+              historyplacement.py stackedcycle.py focuscycle.py
 EXTRA_DIST = $(script_DATA)
 
 distclean-local:
index 03c50f41a450957411397a7db1e509c1be2a5402..970300131051137b1690c0d01bf58c0ee629dfa2 100644 (file)
@@ -9,21 +9,10 @@ avoid_skip_taskbar = 1
 """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, and
    they won't be focused as a fallback if 'fallback' is enabled."""
-raise_window = 1
-"""When cycling focus, raise the window chosen as well as focusing it. This
-   does not affect fallback focusing behavior."""
 fallback = 0
 """Send focus somewhere when nothing is left with the focus, if possible."""
 ###########################################################################
 
-def next(data, num=1):
-    """Focus the next window."""
-    _cycle(data, num, 1)
-
-def previous(data, num=1):
-    """Focus the previous window."""
-    _cycle(data, num, 0)
-
 ###########################################################################
 ###########################################################################
 
@@ -31,7 +20,6 @@ def previous(data, num=1):
 ###      Internal stuff, should not be accessed outside the module.     ###
 ###########################################################################
 
-import otk
 import ob
 
 # maintain a list of clients, stacked in focus order
@@ -78,46 +66,4 @@ ob.ebind(ob.EventAction.NewWindow, _newwindow)
 ob.ebind(ob.EventAction.CloseWindow, _closewindow)
 ob.ebind(ob.EventAction.Focus, _focused)
 
-def _cycle(data, num, forward):
-    global avoid_skip_taskbar
-    
-    screen = ob.openbox.screen(data.screen)
-    count = screen.clientCount()
-
-    if not count: return # no clients
-    
-    target = 0
-    if data.client:
-        client_win = data.client.window()
-        found = 0
-        r = range(count)
-        if not forward:
-            r.reverse()
-        for i in r:
-            if found:
-                target = i
-                found = 2
-                break
-            elif screen.client(i).window() == client_win:
-                found = 1
-        if found == 1: # wraparound
-            if forward: target = 0
-            else: target = count - 1
-
-        t = target
-        desktop = screen.desktop()
-        while 1:
-            client = screen.client(t)
-            if client and _focusable(client, desktop) and client.focus():
-                if cycle_raise:
-                    screen.raiseWindow(client)
-                return
-            if forward:
-                t += num
-                if t >= count: t -= count
-            else:
-                t -= num
-                if t < 0: t += count
-            if t == target: return # nothing to focus
-            
 print "Loaded focus.py"
diff --git a/scripts/focuscycle.py b/scripts/focuscycle.py
new file mode 100644 (file)
index 0000000..36354af
--- /dev/null
@@ -0,0 +1,72 @@
+###########################################################################
+### Functions for cycling focus (in a 'linear' order) between windows.  ###
+###########################################################################
+
+###########################################################################
+###     Options that affect the behavior of the focuscycle module.      ###
+###########################################################################
+raise_window = 1
+"""When cycling focus, raise the window chosen as well as focusing it. This
+   does not affect fallback focusing behavior."""
+# See focus.avoid_skip_taskbar
+###########################################################################
+
+def next(data, num=1):
+    """Focus the next window."""
+    _cycle(data, num, 1)
+
+def previous(data, num=1):
+    """Focus the previous window."""
+    _cycle(data, num, 0)
+
+###########################################################################
+###########################################################################
+
+###########################################################################
+###      Internal stuff, should not be accessed outside the module.     ###
+###########################################################################
+
+import ob
+import focus
+
+def _cycle(data, num, forward):
+    screen = ob.openbox.screen(data.screen)
+    count = screen.clientCount()
+
+    if not count: return # no clients
+    
+    target = 0
+    if data.client:
+        client_win = data.client.window()
+        found = 0
+        r = range(count)
+        if not forward:
+            r.reverse()
+        for i in r:
+            if found:
+                target = i
+                found = 2
+                break
+            elif screen.client(i).window() == client_win:
+                found = 1
+        if found == 1: # wraparound
+            if forward: target = 0
+            else: target = count - 1
+
+        t = target
+        desktop = screen.desktop()
+        while 1:
+            client = screen.client(t)
+            if client and focus._focusable(client, desktop) and client.focus():
+                if raise_window:
+                    screen.raiseWindow(client)
+                return
+            if forward:
+                t += num
+                if t >= count: t -= count
+            else:
+                t -= num
+                if t < 0: t += count
+            if t == target: return # nothing to focus
+            
+print "Loaded focuscycle.py"
index 4c549d66045c4b6c7bcbe6de7a2271ab4684fc40..5731a56456b82f641687d393d63ea48c18d9d6eb 100644 (file)
@@ -4,7 +4,6 @@
 
 ###########################################################################
 ###    Options that affect the behavior of the stackedcycle module.     ###
-###              Also see the options in the focus module.              ###
 ###########################################################################
 include_all_desktops = 0
 """If this is non-zero then windows from all desktops will be included in
@@ -22,6 +21,8 @@ title_size_limit = 80
 activate_while_cycling = 1
 """If this is non-zero then windows will be activated as they are
    highlighted in the cycling list (except iconified windows)."""
+# See focus.avoid_skip_taskbar
+# See focuscycle.raise_window
 ###########################################################################
 
 def next(data):
@@ -48,6 +49,7 @@ def previous(data):
 import otk
 import ob
 import focus
+import focuscycle
 
 class cycledata:
     def __init__(self):
@@ -166,7 +168,7 @@ class cycledata:
         
         # send a net_active_window message for the target
         if final or not client.iconic():
-            if final: r = focus.raise_window
+            if final: r = focuscycle.raise_window
             else: r = 0
             ob.send_client_msg(self.screeninfo.rootWindow(),
                                otk.Property_atoms().openbox_active_window,
@@ -235,3 +237,5 @@ ob.ebind(ob.EventAction.NewWindow, _newwindow)
 ob.ebind(ob.EventAction.CloseWindow, _closewindow)
 
 _o = cycledata()
+
+print "Loaded stackedcycle.py"
This page took 0.02836 seconds and 4 git commands to generate.