all repos — openbox @ cb5eb0d560759cebce3279cb28d942166e0e9a7a

openbox fork - make it a bit more like ryudo

store pointers instead of window id's. this lets us use them directly instead of having to look them all up all the time. this is possible now because we watch for new/close window events.
Dana Jansens danakj@orodu.net
commit

cb5eb0d560759cebce3279cb28d942166e0e9a7a

parent

76525992cdf5cf7a5db8b98dd21c1df375d72fc5

2 files changed, 19 insertions(+), 15 deletions(-)

jump to
M scripts/focus.pyscripts/focus.py

@@ -36,31 +36,37 @@ if not (desk == 0xffffffff or desk == desktop): return 0

return 1 +def _remove(client): + """This function exists because Swig pointers don't define a __eq__ + function, so list.remove(ptr) does not work.""" + win = client.window() + for i in range(len(_clients)): + if _clients[i].window() == win: + _clients.pop(i) + return + raise ValueError("_remove(x): x not in _clients list.") + def _focused(data): global _clients if _disable: return if data.client: - win = data.client.window() # move it to the top - _clients.remove(win) - _clients.insert(0, win) + _remove(data.client) + _clients.insert(0, data.client) elif FALLBACK: # pass around focus desktop = ob.openbox.screen(data.screen).desktop() - for w in _clients: - client = ob.openbox.findClient(w) - if client and _focusable(client, desktop) and client.focus(): + for c in _clients: + if _focusable(c, desktop) and c.focus(): break def _newwindow(data): - _clients.append(data.client.window()) + _clients.append(data.client) def _closewindow(data): - try: - _clients.remove(data.client.window()) - except ValueError: pass + _remove(data.client) ob.ebind(ob.EventAction.NewWindow, _newwindow) ob.ebind(ob.EventAction.CloseWindow, _closewindow)
M scripts/stackedcycle.pyscripts/stackedcycle.py

@@ -96,11 +96,9 @@

# 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: - if c.iconic(): iconic_clients.append(c) - else: self.clients.append(c) + for c in focus._clients: + if c.iconic(): iconic_clients.append(c) + else: self.clients.append(c) self.clients.extend(iconic_clients) font = self.style.labelFont()