def _register_atspi_focus_listeners(self, register): if "Atspi" not in globals(): return if self._focus_listeners_registered != register: if register: self.atspi_connect("_listener_focus", "focus", self._on_atspi_global_focus) self.atspi_connect("_listener_object_focus", "object:state-changed:focused", self._on_atspi_object_focus) # private asynchronous events for name in self._async_event_names: handler = "_on_" + name.replace("-", "_") EventSource.connect(self, name, getattr(self, handler)) else: self.atspi_disconnect("_listener_focus", "focus") self.atspi_disconnect("_listener_object_focus", "object:state-changed:focused") for name in self._async_event_names: handler = "_on_" + name.replace("-", "_") EventSource.disconnect(self, name, getattr(self, handler)) self._focus_listeners_registered = register
def disconnect(self, event_name, callback): had_listeners = self.has_listeners(self._event_names) EventSource.disconnect(self, event_name, callback) self._update_listeners() # help debugging disconnecting events on exit if had_listeners and not self.has_listeners(self._event_names): _logger.info("all listeners disconnected")
def end_mapping(self): if self._grab_event_source: EventSource.disconnect(self._grab_event_source, "button-release", self._on_xi_button_release) self._grab_event_source.grab_xi_pointer(False) self._grab_event_source = None if self._osk_cm: if self._osk_cm.click_type == self.CLICK_TYPE_SINGLE: self._osk_cm.restore_pointer_buttons() self._osk_cm.button = self.PRIMARY_BUTTON self._osk_cm.click_type = self.CLICK_TYPE_SINGLE else: self._set_next_mouse_click(self.PRIMARY_BUTTON, self.CLICK_TYPE_SINGLE)
def disconnect(self, event_name, callback): EventSource.disconnect(self, event_name, callback) self._update_listeners()