From a5e9b88892c6402bde5f72a73172e4fbfef0d2fe Mon Sep 17 00:00:00 2001 From: Daniel Drake Date: Wed, 25 Nov 2009 12:48:06 +0000 Subject: Activate windows when changing to activity view This patch fixes a bug where pressing F4 immediately after starting Sugar does not switch to the Journal. This happened because the Journal has not yet been activated, so when the desktop is hidden in response to pressing F4, there is no active window to take over the display. The journal starts in iconified state. We also have to be careful about propogating correct X event times for the F4 keypress case (this is not an event that GTK+ handles, it comes from KeyGrabber). --- (limited to 'src') diff --git a/src/jarabe/frame/zoomtoolbar.py b/src/jarabe/frame/zoomtoolbar.py index c168e97..2ed3c54 100644 --- a/src/jarabe/frame/zoomtoolbar.py +++ b/src/jarabe/frame/zoomtoolbar.py @@ -69,7 +69,7 @@ class ZoomToolbar(gtk.Toolbar): if not button.get_active(): return - shell.get_model().zoom_level = level + shell.get_model().set_zoom_level(level) def __zoom_level_changed_cb(self, **kwargs): self._set_zoom_level(kwargs['new_level']) diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py index de5a66f..ac2ef75 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -349,7 +349,7 @@ class ShellModel(gobject.GObject): self.zoom_level_changed.send(self, old_level=old_level, new_level=new_level) - def _set_zoom_level(self, new_level): + def set_zoom_level(self, new_level, x_event_time=0): old_level = self.zoom_level if old_level == new_level: return @@ -370,10 +370,17 @@ class ShellModel(gobject.GObject): show_desktop = new_level is not self.ZOOM_ACTIVITY self._screen.toggle_showing_desktop(show_desktop) + if new_level is self.ZOOM_ACTIVITY: + # activate the window, in case it was iconified + # (e.g. during sugar launch, the Journal starts in this state) + window = self._active_activity.get_window() + if window: + window.activate(x_event_time or gtk.get_current_event_time()) + def _get_zoom_level(self): return self._zoom_level - zoom_level = property(_get_zoom_level, _set_zoom_level) + zoom_level = property(_get_zoom_level) def _get_activities_with_window(self): ret = [] diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py index acbbb04..19a56bb 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -146,16 +146,16 @@ class KeyHandler(object): active_activity.get_window().close() def handle_zoom_mesh(self, event_time): - shell.get_model().zoom_level = ShellModel.ZOOM_MESH + shell.get_model().set_zoom_level(ShellModel.ZOOM_MESH, event_time) def handle_zoom_group(self, event_time): - shell.get_model().zoom_level = ShellModel.ZOOM_GROUP + shell.get_model().set_zoom_level(ShellModel.ZOOM_GROUP, event_time) def handle_zoom_home(self, event_time): - shell.get_model().zoom_level = ShellModel.ZOOM_HOME + shell.get_model().set_zoom_level(ShellModel.ZOOM_HOME, event_time) def handle_zoom_activity(self, event_time): - shell.get_model().zoom_level = ShellModel.ZOOM_ACTIVITY + shell.get_model().set_zoom_level(ShellModel.ZOOM_ACTIVITY, event_time) def handle_volume_max(self, event_time): self._change_volume(value=_VOLUME_MAX) -- cgit v0.9.1