Ticket #4601: disactivate_function_keys.patch

File disactivate_function_keys.patch, 3.0 KB (added by godiard, 11 years ago)

Old dextrose patch to solve this issue

  • src/jarabe/controlpanel/gui.py

    commit dd5f5a280bf07a6fb799ac2595c41f8c47c04595
    Author: Ajay Garg <ajay@activitycentral.com>
    Date:   Wed Dec 12 14:45:39 2012 +0530
    
        sdxo#2687: Now, when we are in "My Settings" (or any section thereof), the function-keys (as present in src/jarabe/view/keyhandler.py) won't work.
    
    diff --git a/src/jarabe/controlpanel/gui.py b/src/jarabe/controlpanel/gui.py
    index a941faf..6b0f240 100644
    a b class ControlPanel(Gtk.Window): 
    365365        self._update(query)
    366366
    367367    def __stop_clicked_cb(self, widget):
     368        # Now, since we are exiting the "modal" "My Settings",
     369        # re-enable the Function-key-handlers.
     370        from jarabe.view.keyhandler import set_key_handlers_active
     371        set_key_handlers_active(True)
     372
    368373        self.destroy()
    369374
    370375    def __close_request_cb(self, widget, event=None):
  • src/jarabe/view/buddymenu.py

    diff --git a/src/jarabe/view/buddymenu.py b/src/jarabe/view/buddymenu.py
    index b117be9..71d7f0e 100644
    a b class BuddyMenu(Palette): 
    180180        frame = jarabe.frame.get_view()
    181181        frame.hide()
    182182
     183        # Now, since we are entering the "modal" "My Settings",
     184        # disable the Function-key-handlers.
     185        from jarabe.view.keyhandler import set_key_handlers_active
     186        set_key_handlers_active(False)
     187
    183188        # show the control panel
    184189        panel = ControlPanel()
    185190        panel.show()
  • src/jarabe/view/keyhandler.py

    diff --git a/src/jarabe/view/keyhandler.py b/src/jarabe/view/keyhandler.py
    index cb47d17..517f30b 100644
    a b class KeyHandler(object): 
    7474        self._key_pressed = None
    7575        self._keycode_pressed = 0
    7676        self._keystate_pressed = 0
     77        self._key_handlers_active = True
    7778
    7879        self._key_grabber = SugarExt.KeyGrabber()
    7980        self._key_grabber.connect('key-pressed',
    class KeyHandler(object): 
    163164        journalactivity.get_journal().show_journal()
    164165
    165166    def _key_pressed_cb(self, grabber, keycode, state, event_time):
     167        if not self._key_handlers_active:
     168            return
     169
    166170        key = grabber.get_key(keycode, state)
    167171        logging.debug('_key_pressed_cb: %i %i %s', keycode, state, key)
    168172        if key is not None:
    class KeyHandler(object): 
    197201        return False
    198202
    199203    def _key_released_cb(self, grabber, keycode, state, event_time):
     204        if not self._key_handlers_active:
     205            return
     206
    200207        logging.debug('_key_released_cb: %i %i', keycode, state)
    201208        if self._tabbing_handler.is_tabbing():
    202209            # We stop tabbing and switch to the new window as soon as the
    def setup(frame): 
    215222        del _instance
    216223
    217224    _instance = KeyHandler(frame)
     225
     226
     227def set_key_handlers_active(active):
     228    """
     229    The setup(frame) is already run at sugar-session startup.
     230    So, we can safely assume the "_instance" is fully-grown up.
     231    """
     232
     233    _instance._key_handlers_active = active