]> Dogcows Code - chaz/openbox/commitdiff
allow a callback to determine if a window should be history-placed
authorDana Jansens <danakj@orodu.net>
Sat, 1 Feb 2003 11:04:46 +0000 (11:04 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 1 Feb 2003 11:04:46 +0000 (11:04 +0000)
scripts/historyplacement.py

index 48755819b07840278dcfdb534ddfcbf7eb561e14..2ebd9a280886afdeabb50c32772bc96621de6bb7 100644 (file)
@@ -15,6 +15,12 @@ fallback = windowplacement.random                                          ###
 ###                            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.          ###
@@ -104,17 +110,23 @@ def place(data):
         if not 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
This page took 0.023172 seconds and 4 git commands to generate.