From ede76ec58158c64740a4d7c4c987015d9c943f05 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). [dsd: backport. in 0.84, matchbox doesn't seem so fussy about x key events so theres no need to backport/rebuild the sugar-toolkit keygrabber patch which propogates X event times from keypresses - makes things easier] --- diff --git a/src/jarabe/frame/zoomtoolbar.py b/src/jarabe/frame/zoomtoolbar.py index 43cc358..a459f76 100644 --- a/src/jarabe/frame/zoomtoolbar.py +++ b/src/jarabe/frame/zoomtoolbar.py @@ -67,7 +67,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 709eb03..11a5d03 100644 --- a/src/jarabe/model/shell.py +++ b/src/jarabe/model/shell.py @@ -350,7 +350,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 @@ -365,10 +365,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 08856c0..1da1f6a 100644 --- a/src/jarabe/view/keyhandler.py +++ b/src/jarabe/view/keyhandler.py @@ -172,16 +172,16 @@ class KeyHandler(object): active_activity.get_window().close() def handle_zoom_mesh(self): - shell.get_model().zoom_level = ShellModel.ZOOM_MESH + shell.get_model().set_zoom_level(ShellModel.ZOOM_MESH) def handle_zoom_group(self): - shell.get_model().zoom_level = ShellModel.ZOOM_GROUP + shell.get_model().set_zoom_level(ShellModel.ZOOM_GROUP) def handle_zoom_home(self): - shell.get_model().zoom_level = ShellModel.ZOOM_HOME + shell.get_model().set_zoom_level(ShellModel.ZOOM_HOME) def handle_zoom_activity(self): - shell.get_model().zoom_level = ShellModel.ZOOM_ACTIVITY + shell.get_model().set_zoom_level(ShellModel.ZOOM_ACTIVITY) def handle_brightness_max(self): self._change_brightness(value=_BRIGHTNESS_MAX) -- cgit v0.9.1