Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Narvaez <dwnarvaez@gmail.com>2012-11-06 12:43:04 (GMT)
committer Simon Schampijer <simon@laptop.org>2012-11-06 20:05:54 (GMT)
commit5c8af547b22e392f1e147afab6b75bdc607ad4f5 (patch)
tree9eaed402350dbecd56625226677ce5adb7611b4b
parent0e854281f1c4e51b6a73129b4c4aaee93f5a0285 (diff)
Listen on a IntroWindow done signal instead of blocking
Creating multiple non-nested mainloops in gtk 3.6 breaks at least accessibility. See https://bugzilla.gnome.org/show_bug.cgi?id=685453 Signed-off-by: Daniel Narvaez <dwnarvaez@gmail.com> Acked-by: Simon Schampijer <simon@laptop.org>
-rwxr-xr-xbin/sugar-session38
-rw-r--r--src/jarabe/intro/window.py6
2 files changed, 27 insertions, 17 deletions
diff --git a/bin/sugar-session b/bin/sugar-session
index 5c72ff2..6d2435e 100755
--- a/bin/sugar-session
+++ b/bin/sugar-session
@@ -253,6 +253,22 @@ def set_theme():
settings.set_property('gtk-theme-name', sugar_theme)
settings.set_property('gtk-icon-theme-name', 'sugar')
+def start_home():
+ from jarabe.desktop import homewindow
+
+ start_ui_service()
+ start_session_manager()
+
+ # open homewindow before window_manager to let desktop appear fast
+ home_window = homewindow.get_instance()
+ home_window.show()
+
+ screen = Wnck.Screen.get_default()
+ screen.connect('window-manager-changed', __window_manager_changed_cb)
+ _check_for_window_manager(screen)
+
+def intro_window_done_cb(window):
+ start_home()
def main():
try:
@@ -275,7 +291,6 @@ def main():
gettext.bindtextdomain('sugar-toolkit', config.locale_path)
gettext.textdomain('sugar')
- from jarabe.desktop import homewindow
from jarabe.model import sound
from jarabe import intro
from jarabe.intro.window import IntroWindow
@@ -303,14 +318,6 @@ def main():
if subprocess.call('echo $DISPLAY; xsetroot -cursor_name left_ptr', shell=True):
logging.warning('Can not reset cursor')
- if not intro.check_profile():
- win = IntroWindow()
- win.show_all()
- Gtk.main()
-
- start_ui_service()
- start_session_manager()
-
sound.restore()
sys.path.append(config.ext_path)
@@ -318,13 +325,12 @@ def main():
icons_path = os.path.join(config.data_path, 'icons')
Gtk.IconTheme.get_default().append_search_path(icons_path)
- # open homewindow before window_manager to let desktop appear fast
- home_window = homewindow.get_instance()
- home_window.show()
-
- screen = Wnck.Screen.get_default()
- screen.connect('window-manager-changed', __window_manager_changed_cb)
- _check_for_window_manager(screen)
+ if not intro.check_profile():
+ win = IntroWindow()
+ win.connect("done", intro_window_done_cb)
+ win.show_all()
+ else:
+ start_home()
try:
Gtk.main()
diff --git a/src/jarabe/intro/window.py b/src/jarabe/intro/window.py
index 252870d..1f6e0fa 100644
--- a/src/jarabe/intro/window.py
+++ b/src/jarabe/intro/window.py
@@ -261,6 +261,10 @@ class _IntroBox(Gtk.VBox):
class IntroWindow(Gtk.Window):
__gtype_name__ = 'SugarIntroWindow'
+ __gsignals__ = {
+ 'done': (GObject.SignalFlags.RUN_FIRST, None, ([])),
+ }
+
def __init__(self):
Gtk.Window.__init__(self)
@@ -280,7 +284,7 @@ class IntroWindow(Gtk.Window):
def _create_profile_cb(self, name, color):
create_profile(name, color)
- Gtk.main_quit()
+ self.emit("done")
return False