Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2009-11-25 12:48:06 (GMT)
committer Daniel Drake <dsd@laptop.org>2009-11-27 12:21:16 (GMT)
commita5e9b88892c6402bde5f72a73172e4fbfef0d2fe (patch)
treeb8cbffe01b8228773d4b33ecbe724fafae770219 /src
parentd83d3fce34c86a617cb6524e00c3383cece15222 (diff)
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).
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/frame/zoomtoolbar.py2
-rw-r--r--src/jarabe/model/shell.py11
-rw-r--r--src/jarabe/view/keyhandler.py8
3 files changed, 14 insertions, 7 deletions
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)