diff --git a/src/desktop/hotrecoll.py b/src/desktop/hotrecoll.py index 80f134e3..28cb7c35 100755 --- a/src/desktop/hotrecoll.py +++ b/src/desktop/hotrecoll.py @@ -13,31 +13,23 @@ import gtk import wnck import os import sys +from optparse import OptionParser def main(): - # We try to establish a timestamp for the calls to activate(), but - # usually fail (the event_peek() calls return None). - # - # Try to find a nice default value. The x server timestamp is - # millisecond from last reset, it wraps around in 49 days, half - # the space is set aside for the past So a value just below 2**31 - # should be most recent if the server is not too old? - # The right way to do this would probably be to create an unmapped - # window and arrange to receive some real event. - timestamp = 2**31 - 1 + parser = OptionParser() + parser.add_option("-m", "--move-away", action="store_true", default=False, + dest="clear_workspace", + help="iconify to other workspace to avoid crowding panel") + (options, args) = parser.parse_args() + screen = wnck.screen_get_default() while gtk.events_pending(): - event = gtk.gdk.event_peek() - if event != None and event.get_time() != 0: - timestamp = event.get_time() gtk.main_iteration() recollMain = "" recollwins = []; for window in screen.get_windows(): if window.get_class_group().get_name() == "Recoll": - # print "win name: [%s], class: [%s]" % \ - # (window.get_name(), window.get_class_group().get_name()) if window.get_name() == "Recoll": recollMain = window recollwins.append(window) @@ -47,13 +39,26 @@ def main(): sys.exit(0) # Check the main window state, and either activate or minimize all + # recoll windows. workspace = screen.get_active_workspace() if not recollMain.is_visible_on_workspace(workspace): for win in recollwins: win.move_to_workspace(workspace) - win.activate(timestamp) + if win != recollMain: + win.unminimize(gtk.get_current_event_time()) + recollMain.activate(gtk.get_current_event_time()) else: + otherworkspace = None + if options.clear_workspace: + # We try to minimize to another workspace + wkspcs = screen.get_workspaces() + for wkspc in wkspcs: + if wkspc.get_number() != workspace.get_number(): + otherworkspace = wkspc + break for win in recollwins: + if otherworkspace: + win.move_to_workspace(otherworkspace) win.minimize() if __name__ == '__main__':