From 9876f57bb48a9b9d4d978f2a6c26ac5d4a399bce Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Sat, 10 Nov 2012 10:14:55 +0000 Subject: Frame Palette interaction cleanup - add a 'done' signal to the CurrentActivityPalette that is emitted when on item in the Palette is selected, when received in the ActivitiesTray we do hide the Frame - call 'popdown_all' on the PaletteGroup when the Frame is hidden, this makes sure that all the Palettes are popped down in that case - Journal Palette: remove the popdown call when 'show content' is selected, this introduced a race - this fixes as well SL #4171 Signed-off-by: Simon Schampijer Acked-by: Manuel QuiƱones --- diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py index 5fb1826..f8e15c9 100644 --- a/src/jarabe/frame/activitiestray.py +++ b/src/jarabe/frame/activitiestray.py @@ -84,11 +84,11 @@ class ActivityButton(RadioToolButton): palette = JournalPalette(self._home_activity) else: palette = CurrentActivityPalette(self._home_activity) - palette.connect('popdown', self.__palette_popped_down_cb) + palette.connect('done', self.__palette_item_selected_cb) palette.set_group_id('frame') self.set_palette(palette) - def __palette_popped_down_cb(self, widget): + def __palette_item_selected_cb(self, widget): frame = jarabe.frame.get_view() frame.hide() diff --git a/src/jarabe/frame/frame.py b/src/jarabe/frame/frame.py index 410e08b..44293bb 100644 --- a/src/jarabe/frame/frame.py +++ b/src/jarabe/frame/frame.py @@ -113,6 +113,7 @@ class Frame(object): if self._animator: self._animator.stop() + palettegroup.popdown_all() self._animator = animator.Animator(0.5) self._animator.add(_Animation(self, 0.0)) self._animator.start() diff --git a/src/jarabe/view/palettes.py b/src/jarabe/view/palettes.py index 8e77ea3..34944f3 100644 --- a/src/jarabe/view/palettes.py +++ b/src/jarabe/view/palettes.py @@ -22,6 +22,7 @@ import logging from gi.repository import GConf import glib from gi.repository import Gtk +from gi.repository import GObject from sugar3 import env from sugar3.graphics.palette import Palette @@ -71,6 +72,13 @@ class BasePalette(Palette): class CurrentActivityPalette(BasePalette): + + __gsignals__ = { + 'done': (GObject.SignalFlags.RUN_FIRST, + None, + ([])), + } + def __init__(self, home_activity): self._home_activity = home_activity BasePalette.__init__(self, home_activity) @@ -108,20 +116,20 @@ class CurrentActivityPalette(BasePalette): self.menu_box.show_all() def __resume_activate_cb(self, menu_item): - self.popdown(immediate=True) self._home_activity.get_window().activate(Gtk.get_current_event_time()) + self.emit('done') def __view_source__cb(self, menu_item): - self.popdown(immediate=True) setup_view_source(self._home_activity) shell_model = shell.get_model() if self._home_activity is not shell_model.get_active_activity(): self._home_activity.get_window().activate( \ Gtk.get_current_event_time()) + self.emit('done') def __stop_activate_cb(self, menu_item): - self.popdown(immediate=True) self._home_activity.get_window().close(1) + self.emit('done') class ActivityPalette(Palette): @@ -207,7 +215,6 @@ class JournalPalette(BasePalette): self.connect('popup', self.__popup_cb) def __open_activate_cb(self, menu_item): - self.popdown(immediate=True) self._home_activity.get_window().activate(Gtk.get_current_event_time()) def __popup_cb(self, palette): -- cgit v0.9.1