Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco 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)
commitec0debdb303917aca1381af3ed5379598110bb5b (patch)
tree22652bc8ea80a3a44e15f02c3ac8e0ebde161434
parent9ff192d0b3ab7ed3259e1f934eb4421e3ff9032d (diff)
Do not hide the frame if menushell is active.
-rw-r--r--shell/view/frame/Frame.py17
-rw-r--r--sugar/canvas/MenuShell.py20
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