From 0d90a7b4e7b661891f68364d4949b249cb37d6a6 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 12 Mar 2007 16:22:03 +0100 Subject: [PATCH 1/2] More fixes to the hover logic.. --- shell/view/frame/frame.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/shell/view/frame/frame.py b/shell/view/frame/frame.py index a8e86e4f..d4f9bfee 100644 --- a/shell/view/frame/frame.py +++ b/shell/view/frame/frame.py @@ -125,6 +125,7 @@ class Frame(object): self._shell = shell self._current_position = 0.0 self._animator = None + self._hover = False self._event_frame = EventFrame() self._event_frame.connect('enter-corner', self._enter_corner_cb) @@ -286,15 +287,24 @@ class Frame(object): self._mouse_listener.mouse_enter() def _popup_context_deactivated_cb(self, popup_context): - if not self._is_hover(): + if not self._hover: self._mouse_listener.mouse_leave() def _enter_notify_cb(self, window, event): + if self._hover: + return + + self._hover = True self._mouse_listener.mouse_enter() def _leave_notify_cb(self, window, event): - if not self._popup_context.is_active(): - self._mouse_listener.mouse_leave() + if not self._hover: + return + + if not self._is_hover(): + self._hover = False + if not self._popup_context.is_active(): + self._mouse_listener.mouse_leave() def _drag_motion_cb(self, window, context, x, y, time): self._mouse_listener.mouse_enter() From 978965bfa8e042b9daa2b0d4a5bc28a758a355a6 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 12 Mar 2007 16:30:53 +0100 Subject: [PATCH 2/2] Fix a race --- shell/view/frame/frame.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/view/frame/frame.py b/shell/view/frame/frame.py index d4f9bfee..de375e60 100644 --- a/shell/view/frame/frame.py +++ b/shell/view/frame/frame.py @@ -55,7 +55,8 @@ class _MouseListener(object): self._hide_sid = 0 def mouse_enter(self): - if self._frame.mode == MODE_NONE: + if self._frame.mode == MODE_NONE or \ + self._frame.mode == MODE_MOUSE: self._show_frame() def mouse_leave(self):