Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Drake <dsd@laptop.org>2009-11-25 12:48:06 (GMT)
committer Daniel Drake <dsd@laptop.org>2009-12-01 17:57:28 (GMT)
commitede76ec58158c64740a4d7c4c987015d9c943f05 (patch)
tree048915ecc51750601d012869b8f6290fcab3f433
parentefdb96ee6584c7d63043fff2f9dcf7552a1ff896 (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). [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]
-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 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)