]> Dogcows Code - chaz/openbox/blobdiff - scripts/historyplacement.py
capitalization
[chaz/openbox] / scripts / historyplacement.py
index 48755819b07840278dcfdb534ddfcbf7eb561e14..9bee5a6b856743a95c329cfbf24f38e176efc8b4 100644 (file)
@@ -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,27 @@ def _find(screen, state):
 def place(data):
     global _data
     if data.client:
-        if not ignore_requested_positions:
+        if not (windowplacement.ignore_requested_positions and
+                data.client.normal()):
             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.022073 seconds and 4 git commands to generate.