diff options
author | Simon Schampijer <simon@schampijer.de> | 2008-05-11 09:52:11 (GMT) |
---|---|---|
committer | Simon Schampijer <simon@schampijer.de> | 2008-05-11 09:52:11 (GMT) |
commit | 1794bccf2a7befc3ff58cef4af685ffa89a31d92 (patch) | |
tree | 3bd87aed59c7ecb0d1dcfcb78b586615712d7536 | |
parent | 1ae800bda04c809dd15f8393e951f6b33de5cc60 (diff) |
Add delay to popup of frame for hot corners.
-rw-r--r-- | src/view/frame/eventarea.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/view/frame/eventarea.py b/src/view/frame/eventarea.py index 99f8c76..7716346 100644 --- a/src/view/frame/eventarea.py +++ b/src/view/frame/eventarea.py @@ -31,6 +31,8 @@ class EventArea(gobject.GObject): self._windows = [] self._hover = False + self._sids = {} + self._timeout = 1000 right = gtk.gdk.screen_width() - 1 bottom = gtk.gdk.screen_height() -1 @@ -53,8 +55,9 @@ class EventArea(gobject.GObject): def _create_invisible(self, x, y, width, height): invisible = gtk.Invisible() - invisible.connect('enter-notify-event', self._enter_notify_cb) - invisible.connect('leave-notify-event', self._leave_notify_cb) + if self._timeout >= 0: + invisible.connect('enter-notify-event', self._enter_notify_cb) + invisible.connect('leave-notify-event', self._leave_notify_cb) invisible.drag_dest_set(0, [], 0) invisible.connect('drag_motion', self._drag_motion_cb) @@ -79,9 +82,21 @@ class EventArea(gobject.GObject): self.emit('leave') def _enter_notify_cb(self, widget, event): + if widget in self._sids: + gobject.source_remove(self._sids[widget]) + self._sids[widget] = gobject.timeout_add(self._timeout, + self.__timeout_cb, + widget) + + def __timeout_cb(self, widget): + del self._sids[widget] self._notify_enter() + return False def _leave_notify_cb(self, widget, event): + if widget in self._sids: + gobject.source_remove(self._sids[widget]) + del self._sids[widget] self._notify_leave() def _drag_motion_cb(self, widget, drag_context, x, y, timestamp): |