diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-09-19 12:43:42 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-09-19 12:43:42 (GMT) |
commit | ec0debdb303917aca1381af3ed5379598110bb5b (patch) | |
tree | 22652bc8ea80a3a44e15f02c3ac8e0ebde161434 | |
parent | 9ff192d0b3ab7ed3259e1f934eb4421e3ff9032d (diff) |
Do not hide the frame if menushell is active.
-rw-r--r-- | shell/view/frame/Frame.py | 17 | ||||
-rw-r--r-- | sugar/canvas/MenuShell.py | 20 |
2 files changed, 32 insertions, 5 deletions
diff --git a/shell/view/frame/Frame.py b/shell/view/frame/Frame.py index bd99b98..8ecf37f 100644 --- a/shell/view/frame/Frame.py +++ b/shell/view/frame/Frame.py @@ -75,7 +75,9 @@ class Frame: root = model.get_root_item() grid = shell.get_grid() - menu_shell = MenuShell(grid) + self._menu_shell = MenuShell(grid) + self._menu_shell.connect('activated', self._menu_shell_activated_cb) + self._menu_shell.connect('deactivated', self._menu_shell_deactivated_cb) bg = goocanvas.Rect(fill_color="#4f4f4f", line_width=0) grid.set_constraints(bg, 0, 0, 80, 60) @@ -87,12 +89,12 @@ class Frame: self._add_panel(model, 0, 55, 80, 5) - panel = TopPanel(shell, menu_shell) + panel = TopPanel(shell, self._menu_shell) root.add_child(panel) self._add_panel(model, 0, 0, 80, 5) - panel = RightPanel(shell, menu_shell) + panel = RightPanel(shell, self._menu_shell) grid.set_constraints(panel, 75, 5) root.add_child(panel) @@ -113,6 +115,12 @@ class Frame: self._windows.append(panel_window) + def _menu_shell_activated_cb(self, menu_shell): + self._cancel_hide() + + def _menu_shell_deactivated_cb(self, menu_shell): + self._hide_after(500) + def _enter_notify_cb(self, window, event): self._cancel_hide() @@ -121,7 +129,8 @@ class Frame: if event.state == gtk.gdk.BUTTON1_MASK: return - self._hide_after(500) + if not self._menu_shell.is_active(): + self._hide_after(500) def _event_frame_hover_cb(self, event_frame): self.show() diff --git a/sugar/canvas/MenuShell.py b/sugar/canvas/MenuShell.py index fad35f4..9b86902 100644 --- a/sugar/canvas/MenuShell.py +++ b/sugar/canvas/MenuShell.py @@ -1,9 +1,27 @@ -class MenuShell: +import gobject + +class MenuShell(gobject.GObject): + __gsignals__ = { + 'activated': (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, ([])), + 'deactivated': (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, ([])), + } + def __init__(self, grid): + gobject.GObject.__init__(self) self._menu_controller = None self._grid = grid + def is_active(self): + return (self._menu_controller != None) + def set_active(self, controller): + if controller == None: + self.emit('deactivated') + else: + self.emit('activated') + if self._menu_controller: self._menu_controller.popdown() self._menu_controller = controller |