###########################################################################
### 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):
import otk
import ob
import focus
+import focuscycle
class cycledata:
def __init__(self):
oldpos = self.menupos
self.menupos = -1
- # get the list of clients
+ # 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: self.clients.append(c)
+ if c:
+ if c.iconic(): iconic_clients.append(c)
+ else: self.clients.append(c)
+ self.clients.extend(iconic_clients)
font = self.style.labelFont()
longest = 0
# 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,
# popup disappears, screwing up the focus
ob.mgrab(self.screen.number())
+ if not len(self.clients): return # don't both doing anything
+
self.menuwidgets[self.menupos].unfocus()
if forward:
self.menupos += 1
def grabfunc(self, data):
done = 0
+ notreverting = 1
# 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":
+ elif data.action == ob.KeyAction.Press and data.key == "Escape":
done = 1
+ notreverting = 0
# revert
self.menupos = 0
if done:
self.cycling = 0
focus._disable = 0
- self.activatetarget(1) # activate, and deiconify/unshade/raise
+ # activate, and deiconify/unshade/raise
+ self.activatetarget(notreverting)
self.destroypopup()
ob.kungrab()
ob.mungrab()
ob.ebind(ob.EventAction.CloseWindow, _closewindow)
_o = cycledata()
+
+print "Loaded stackedcycle.py"