add DONT_DUPLICATE option

This commit is contained in:
Dana Jansens 2003-02-10 04:01:04 +00:00
parent 544bc20a84
commit a5ea4b0480

View file

@ -10,9 +10,14 @@ import windowplacement # fallback routines
### windowplacement module also apply!) ### ### windowplacement module also apply!) ###
############################################################################## ##############################################################################
IGNORE_REQUESTED_POSITIONS = 0 IGNORE_REQUESTED_POSITIONS = 0
"""When true, the placement algorithm will attempt to place windows even """When non-zero, the placement algorithm will attempt to place windows even
when they request a position (like XMMS). Note this only applies to when they request a position (like XMMS). Note this only applies to normal
normal windows, not to special cases like desktops and docks.""" windows, not to special cases like desktops and docks."""
DONT_DUPLICATE = 1
"""When non-zero, if 2 copies of the same match in history are to be placed
before one of them is closed (so it would be placed over-top of the last
one), this will cause the second window to not be placed via history, and
the FALLBACK will be used instead."""
FALLBACK = windowplacement.random FALLBACK = windowplacement.random
"""The window placement algorithm that will be used when history placement """The window placement algorithm that will be used when history placement
does not have a place for the window.""" does not have a place for the window."""
@ -20,7 +25,7 @@ CONFIRM_CALLBACK = 0
"""Set this to a function to have the function called before attempting to """Set this to a function to have the function called before attempting to
place a window via history. If the function returns a non-zero, then an place a window via history. If the function returns a non-zero, then an
attempt will be made to place the window. If it returns zero, the attempt will be made to place the window. If it returns zero, the
fallback method will be directly applied instead.""" FALLBACK method will be directly applied instead."""
FILENAME = 'historydb' FILENAME = 'historydb'
"""The name of the file where history data will be stored. The number of """The name of the file where history data will be stored. The number of
the screen is appended onto this filename.""" the screen is appended onto this filename."""
@ -51,6 +56,7 @@ class _state:
self.role = role self.role = role
self.x = x self.x = x
self.y = y self.y = y
self.placed = 0
def __eq__(self, other): def __eq__(self, other):
if self.appname == other.appname and \ if self.appname == other.appname and \
self.appclass == other.appclass and \ self.appclass == other.appclass and \
@ -128,8 +134,12 @@ def _place(data):
coords = _data[data.screen][i] coords = _data[data.screen][i]
print "Found in history ("+str(coords.x)+","+\ print "Found in history ("+str(coords.x)+","+\
str(coords.y)+")" str(coords.y)+")"
data.client.move(coords.x, coords.y) if not (DONT_DUPLICATE and coords.placed):
return data.client.move(coords.x, coords.y)
coords.placed = 1
return
else:
print "Already placed another window there"
else: else:
print "No match in history" print "No match in history"
except TypeError: except TypeError: