This commit switches the Frame to be a GObject. By doing this the gobject
property system can be used to notify interested parties when the frame
becomes fully visible. This is needed, so that the ActivitiesTray can
show the palette of an activity as soon as the frame is fully visible.
---
src/view/frame/frame.py | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/src/view/frame/frame.py b/src/view/frame/frame.py
index 6009e7f..9e5af71 100644
--- a/src/view/frame/frame.py
+++ b/src/view/frame/frame.py
@@ -89,12 +89,19 @@ class _KeyListener(object):
else:
self._frame.show(Frame.MODE_KEYBOARD)
-class Frame(object):
+class Frame(gobject.GObject):
MODE_MOUSE = 0
MODE_KEYBOARD = 1
MODE_NON_INTERACTIVE = 2
+ __gtype_name__ = "SugarFrame"
+ __gproperties__ = {
+ 'unobscured' : (bool, None, None, False,
+ gobject.PARAM_READABLE),
+ }
def __init__(self):
+ gobject.GObject.__init__(self)
+
self.mode = None
self._palette_group = palettegroup.get_group('frame')
@@ -106,6 +113,7 @@ class Frame(object):
self._bottom_panel = None
self.current_position = 0.0
+ self._unobscured = False
self._animator = None
self._event_area = EventArea()
@@ -248,6 +256,11 @@ class Frame(object):
self._move_panel(self._right_panel, self.current_position,
screen_w, 0, screen_w - self._right_panel.size, 0)
+ unobscured = (self.current_position == 1.0)
+ if unobscured != self._unobscured:
+ self._unobscured = unobscured
+ self.notify('unobscured')
+
def _size_changed_cb(self, screen):
self._update_position()
@@ -274,7 +287,11 @@ class Frame(object):
def _enter_corner_cb(self, event_area):
self._mouse_listener.mouse_enter()
-
+
+ def do_get_property(self, pspec):
+ if pspec.name == 'unobscured':
+ return self._unobscured
+
def notify_key_press(self):
self._key_listener.key_press()
_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar