###########################################################################
### 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
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):
"""Focus the next window."""
+ if not data.state:
+ raise RuntimeError("stackedcycle.next must be bound to a key" +
+ "combination with at least one modifier")
_o.cycle(data, 1)
def previous(data):
"""Focus the previous window."""
+ if not data.state:
+ raise RuntimeError("stackedcycle.previous must be bound to a key" +
+ "combination with at least one modifier")
_o.cycle(data, 0)
###########################################################################
import otk
import ob
import focus
+import focuscycle
class cycledata:
def __init__(self):
# 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,
self.activatetarget(0) # activate, but dont deiconify/unshade/raise
def grabfunc(self, data):
- if data.action == ob.KeyAction.Release:
- # have all the modifiers this started with been released?
- if not self.state & data.state:
- self.cycling = 0
- focus._disable = 0
- self.activatetarget(1) # activate, and deiconify/unshade/raise
- self.destroypopup()
- ob.kungrab()
- ob.mungrab()
+ done = 0
+ # have all the modifiers this started with been released?
+ if (data.action == ob.KeyAction.Release and
+ not self.state & data.state):
+ done = 1
+ # has Escape been pressed?
+ if data.action == ob.KeyAction.Press and data.key == "Escape":
+ done = 1
+ # revert
+ self.menupos = 0
+ if done:
+ self.cycling = 0
+ focus._disable = 0
+ self.activatetarget(1) # activate, and deiconify/unshade/raise
+ self.destroypopup()
+ ob.kungrab()
+ ob.mungrab()
def _newwindow(data):
if _o.cycling: _o.populatelist()
ob.ebind(ob.EventAction.CloseWindow, _closewindow)
_o = cycledata()
+
+print "Loaded stackedcycle.py"