[kupfer: 16/31] Use both gtk and keybinder event time



commit ff52634ef3368f34facddde675e89eb01c9f4523
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Wed Dec 30 07:37:05 2009 +0100

    Use both gtk and keybinder event time
    
    In the launch module, use "both" the gtk event time and the keybinder
    event time to get correct behavior on trigger/keybinding activation of
    applications.

 kupfer/keybindings.py |    8 ++++++++
 kupfer/launch.py      |    8 ++++++--
 2 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/kupfer/keybindings.py b/kupfer/keybindings.py
index 2d0bcbd..0b3f914 100644
--- a/kupfer/keybindings.py
+++ b/kupfer/keybindings.py
@@ -34,6 +34,14 @@ gobject.signal_new("keybinding", KeyboundObject, gobject.SIGNAL_RUN_LAST,
 
 _currently_bound = {}
 
+def get_current_event_time():
+	"Return current event time as given by keybinder"
+	try:
+		import keybinder
+	except ImportError:
+		return 0
+	return keybinder.get_current_event_time()
+
 def _register_bound_key(keystr, target):
 	_currently_bound[target] = keystr
 
diff --git a/kupfer/launch.py b/kupfer/launch.py
index 11f827b..a88bbdd 100644
--- a/kupfer/launch.py
+++ b/kupfer/launch.py
@@ -7,6 +7,7 @@ import gobject
 
 from kupfer import pretty, config
 from kupfer import scheduler
+from kupfer import keybindings
 
 try:
 	import wnck
@@ -61,6 +62,9 @@ def application_id(app_info):
 		app_id = app_id[:-len(".desktop")]
 	return app_id
 
+def _current_event_time():
+	return gtk.get_current_event_time() or keybindings.get_current_event_time()
+
 def launch_application(app_info, files=(), uris=(), paths=(), track=True, activate=True):
 	"""
 	Launch @app_info correctly, using a startup notification
@@ -86,7 +90,7 @@ def launch_application(app_info, files=(), uris=(), paths=(), track=True, activa
 		workspace = wnck.screen_get_default().get_active_workspace()
 		nbr = workspace.get_number() if workspace else -1
 		ctx.set_desktop(nbr)
-	ctx.set_timestamp(gtk.get_current_event_time())
+	ctx.set_timestamp(_current_event_time())
 
 	if track:
 		app_id = application_id(app_info)
@@ -232,7 +236,7 @@ class ApplicationsMatcherService (pretty.OutputMixin):
 			return False
 
 		# for now, just take any window
-		evttime = gtk.get_current_event_time()
+		evttime = _current_event_time()
 		for w in application_windows:
 			# we special-case the desktop
 			# only show desktop if it's the only window of this app



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]