Ticket #1580: 0001-Activate-windows-when-changing-to-activity-view.2.patch

File 0001-Activate-windows-when-changing-to-activity-view.2.patch, 3.7 KB (added by dsd, 14 years ago)

updated after irc review - propogate event times

  • src/jarabe/frame/zoomtoolbar.py

    From 6b99ef85e7abd50834597b87526b153a5fd197e8 Mon Sep 17 00:00:00 2001
    From: Daniel Drake <dsd@laptop.org>
    Date: Wed, 25 Nov 2009 12:48:06 +0000
    Subject: [PATCH] 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).
    ---
     src/jarabe/frame/zoomtoolbar.py |    2 +-
     src/jarabe/model/shell.py       |   11 +++++++++--
     src/jarabe/view/keyhandler.py   |    8 ++++----
     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 b class ZoomToolbar(gtk.Toolbar): 
    6969        if not button.get_active():
    7070            return
    7171
    72         shell.get_model().zoom_level = level
     72        shell.get_model().set_zoom_level(level)
    7373
    7474    def __zoom_level_changed_cb(self, **kwargs):
    7575        self._set_zoom_level(kwargs['new_level'])
  • src/jarabe/model/shell.py

    diff --git a/src/jarabe/model/shell.py b/src/jarabe/model/shell.py
    index de5a66f..ac2ef75 100644
    a b class ShellModel(gobject.GObject): 
    349349            self.zoom_level_changed.send(self, old_level=old_level,
    350350                                         new_level=new_level)
    351351
    352     def _set_zoom_level(self, new_level):
     352    def set_zoom_level(self, new_level, x_event_time=0):
    353353        old_level = self.zoom_level
    354354        if old_level == new_level:
    355355            return
    class ShellModel(gobject.GObject): 
    370370        show_desktop = new_level is not self.ZOOM_ACTIVITY
    371371        self._screen.toggle_showing_desktop(show_desktop)
    372372
     373        if new_level is self.ZOOM_ACTIVITY:
     374            # activate the window, in case it was iconified
     375            # (e.g. during sugar launch, the Journal starts in this state)
     376            window = self._active_activity.get_window()
     377            if window:
     378                window.activate(x_event_time or gtk.get_current_event_time())
     379
    373380    def _get_zoom_level(self):
    374381        return self._zoom_level
    375382
    376     zoom_level = property(_get_zoom_level, _set_zoom_level)
     383    zoom_level = property(_get_zoom_level)
    377384
    378385    def _get_activities_with_window(self):
    379386        ret = []
  • src/jarabe/view/keyhandler.py

    diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py
    index acbbb04..19a56bb 100644
    a b class KeyHandler(object): 
    146146        active_activity.get_window().close()
    147147
    148148    def handle_zoom_mesh(self, event_time):
    149         shell.get_model().zoom_level = ShellModel.ZOOM_MESH
     149        shell.get_model().set_zoom_level(ShellModel.ZOOM_MESH, event_time)
    150150
    151151    def handle_zoom_group(self, event_time):
    152         shell.get_model().zoom_level = ShellModel.ZOOM_GROUP
     152        shell.get_model().set_zoom_level(ShellModel.ZOOM_GROUP, event_time)
    153153
    154154    def handle_zoom_home(self, event_time):
    155         shell.get_model().zoom_level = ShellModel.ZOOM_HOME
     155        shell.get_model().set_zoom_level(ShellModel.ZOOM_HOME, event_time)
    156156
    157157    def handle_zoom_activity(self, event_time):
    158         shell.get_model().zoom_level = ShellModel.ZOOM_ACTIVITY
     158        shell.get_model().set_zoom_level(ShellModel.ZOOM_ACTIVITY, event_time)
    159159
    160160    def handle_volume_max(self, event_time):
    161161        self._change_volume(value=_VOLUME_MAX)