diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-01-09 19:15:18 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-01-09 19:15:18 (GMT) |
commit | ac090fa8e710de347b7ce3721caf07fd810bca55 (patch) | |
tree | 98fa115e334e861c54a0710bd3cc96d308786b08 | |
parent | 5e7735cbae28d341cce67e64814f2ae9d0721fef (diff) |
Fix part 1 of #439. Also cleanup code a bit.
-rw-r--r-- | shell/view/frame/Frame.py | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/shell/view/frame/Frame.py b/shell/view/frame/Frame.py index aa22fc4..edf31bd 100644 --- a/shell/view/frame/Frame.py +++ b/shell/view/frame/Frame.py @@ -157,7 +157,7 @@ class Frame: def __init__(self, shell): self._windows = [] - self._active_menus = 0 + self._hover_frame = False self._shell = shell self._mode = Frame.INACTIVE @@ -256,25 +256,25 @@ class Frame: panel.connect('enter-notify-event', self._enter_notify_cb) panel.connect('leave-notify-event', self._leave_notify_cb) - menu_shell = panel.get_menu_shell() - menu_shell.connect('activated', self._menu_shell_activated_cb) - menu_shell.connect('deactivated', self._menu_shell_deactivated_cb) + self._menu_shell = panel.get_menu_shell() + self._menu_shell.connect('activated', + self._menu_shell_activated_cb) + self._menu_shell.connect('deactivated', + self._menu_shell_deactivated_cb) def _menu_shell_activated_cb(self, menu_shell): - self._active_menus += 1 self._timeline.goto('slide_in', True) def _menu_shell_deactivated_cb(self, menu_shell): - self._active_menus -= 1 - if self._mode != Frame.STICKY: + if self._mode != Frame.STICKY and not self._hover_frame: self._timeline.play('before_slide_out', 'slide_out') def _enter_notify_cb(self, window, event): - self._timeline.goto('slide_in', True) + self._enter_notify() logging.debug('Frame._enter_notify_cb ' + str(self._mode)) def _drag_motion_cb(self, window, context, x, y, time): - self._timeline.goto('slide_in', True) + self._enter_notify() logging.debug('Frame._drag_motion_cb ' + str(self._mode)) return True @@ -289,9 +289,14 @@ class Frame: self._leave_notify() logging.debug('Frame._leave_notify_cb ' + str(self._mode)) - + + def _enter_notify(self): + self._hover_frame = True + self._timeline.goto('slide_in', True) + def _leave_notify(self): - if self._active_menus == 0 and \ + self._hover_frame = False + if not self._menu_shell.is_active() and \ (self._mode == Frame.HIDE_ON_LEAVE or \ self._mode == Frame.AUTOMATIC): self._timeline.play('before_slide_out', 'slide_out') |