X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=scripts%2Fhistoryplacement.py;h=8386e581043d1d8cd2ef49b4e4561ea69cec2766;hb=dbfdd0fefb9180334fd08b2a853e62d5356d71d4;hp=48755819b07840278dcfdb534ddfcbf7eb561e14;hpb=41a03629c9f166f7a1b427ed1634b44c6c38da6e;p=chaz%2Fopenbox diff --git a/scripts/historyplacement.py b/scripts/historyplacement.py index 48755819..8386e581 100644 --- a/scripts/historyplacement.py +++ b/scripts/historyplacement.py @@ -6,15 +6,18 @@ import windowplacement # fallback routines ############################################################################## -### Options for the historyplacement module: ### +### Options for the historyplacement module (Options in the ### +### windowplacement module also apply!): ### ### ### # fallback - The window placement algorithm that will be used when history ### ### placement does not have a place for the window. ### fallback = windowplacement.random ### -# ignore_requested_positions - When true, the history algorithm will ### -### attempt to place windows even when they ### -### request a position (like XMMS). ### -ignore_requested_positions = 0 ### +# confirm_callback - set this to a function to have the function called ### +### before attempting to place a window via history. If ### +### the function returns 'true' then an attempt will be ### +### made to place the window. If it returns 'false', the ### +### fallback method will be directly applied instead. ### +confirm_callback = 0 ### ### ### # filename - The name of the file where history data will be stored. The ### ### number of the screen is appended onto this filename. ### @@ -101,20 +104,26 @@ def _find(screen, state): def place(data): global _data if data.client: - if not ignore_requested_positions: + if not windowplacement.ignore_requested_positions: if data.client.positionRequested(): return state = _create_state(data) - print "looking for : " + state.appname + " : " + state.appclass + \ - " : " + state.role - - i = _find(data.screen, state) - if i >= 0: - coords = _data[data.screen][i] - print "Found in history ("+str(coords.x)+","+str(coords.y)+")" - data.client.move(coords.x, coords.y) - else: - print "No match in history" - if fallback: fallback(data) + try: + if not confirm_callback or confirm_callback(data): + print "looking for : " + state.appname + " : " + \ + state.appclass + " : " + state.role + + i = _find(data.screen, state) + if i >= 0: + coords = _data[data.screen][i] + print "Found in history ("+str(coords.x)+","+\ + str(coords.y)+")" + data.client.move(coords.x, coords.y) + return + else: + print "No match in history" + except TypeError: + pass + if fallback: fallback(data) def _save_window(data): global _data