diff --git a/src/chat_control.py b/src/chat_control.py index 511a21bbcb893612d8a12d46893795b42607e654..d3dfa6bc2755ba9cfa9d7e7426ef86d6f84e84dc 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -521,8 +521,12 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools): super(ChatControlBase, self).shutdown() # PluginSystem: removing GUI extension points connected with ChatControlBase # instance object - gajim.plugin_manager.remove_gui_extension_point('chat_control_base', self) - gajim.plugin_manager.remove_gui_extension_point('chat_control_base_draw_banner', self) + gajim.plugin_manager.remove_gui_extension_point('chat_control_base', + self) + gajim.plugin_manager.remove_gui_extension_point( + 'chat_control_base_draw_banner', self) + gajim.plugin_manager.remove_gui_extension_point('print_special_text', + self) gajim.ged.remove_event_handler('our-show', ged.GUI1, self._nec_our_status) diff --git a/src/conversation_textview.py b/src/conversation_textview.py index 12912f21441edeaa588a90533bf0af24113d055b..7de98f3175d5e562d7858d9168477a405dcc9ed2 100644 --- a/src/conversation_textview.py +++ b/src/conversation_textview.py @@ -1039,6 +1039,15 @@ class ConversationTextview(gobject.GObject): Is called by detect_and_print_special_text and prints special text (emots, links, formatting) """ + + + # PluginSystem: adding GUI extension point for ConversationTextview + self.plugin_modified = False + gajim.plugin_manager.gui_extension_point('print_special_text', self, + special_text, other_tags, graphics) + if self.plugin_modified: + return + tags = [] use_other_tags = True text_is_valid_uri = False diff --git a/src/plugins/pluginmanager.py b/src/plugins/pluginmanager.py index 5aed9edba470ed6ee816b36f4b27bed42a77ff67..18e4765c36ce62db9f76a767a151bdfc706e841f 100644 --- a/src/plugins/pluginmanager.py +++ b/src/plugins/pluginmanager.py @@ -215,9 +215,13 @@ class PluginManager(object): extension point name) to identify element to be removed. :type args: tuple ''' - if gui_extpoint_name in self.gui_extension_points: - self.gui_extension_points[gui_extpoint_name].remove(args) + extension_points = list(self.gui_extension_points[gui_extpoint_name]) + for ext_point in extension_points: + if args[0] in ext_point: + self.gui_extension_points[gui_extpoint_name].remove( + ext_point) + @log_calls('PluginManager') def _add_gui_extension_point_call_to_list(self, gui_extpoint_name, *args):