Philipp Hörist pushed to branch master at gajim / gajim
Commits:
8afca1d1 by lovetox at 2020-09-03T07:21:01+02:00
ChatControlBase: Delete objects later
Fixes #10255
- - - - -
1 changed file:
- gajim/chat_control_base.py
Changes:
=====================================
gajim/chat_control_base.py
=====================================
@@ -653,6 +653,14 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper):
menu.show_all()
def shutdown(self):
+ # remove_gui_extension_point() is called on shutdown, but also when
+ # a plugin is getting disabled. Plugins don’t know the difference.
+ # Plugins might want to remove their widgets on
+ # remove_gui_extension_point(), so delete the objects only afterwards.
+ app.plugin_manager.remove_gui_extension_point('chat_control_base', self)
+ app.plugin_manager.remove_gui_extension_point(
+ 'chat_control_base_update_toolbar', self)
+
for i in list(self.handlers.keys()):
if self.handlers[i].handler_is_connected(i):
self.handlers[i].disconnect(i)
@@ -668,12 +676,6 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper):
del self.xml
- # PluginSystem: removing GUI extension points
- # connected with ChatControlBase instance object
- app.plugin_manager.remove_gui_extension_point('chat_control_base', self)
- app.plugin_manager.remove_gui_extension_point(
- 'chat_control_base_update_toolbar', self)
-
self.unregister_events()
def on_msg_textview_populate_popup(self, _textview, menu):
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/8afca1d1c98ab53550aeb9f631f380dc…
--
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/8afca1d1c98ab53550aeb9f631f380dc…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
f4a732b5 by lovetox at 2020-09-02T22:04:53+02:00
ChatControlBase: Remove unused extension point
- - - - -
e5112592 by lovetox at 2020-09-02T22:05:19+02:00
Settings: Remove show_avatar_in_chat setting
- - - - -
47efd936 by lovetox at 2020-09-02T22:05:27+02:00
Controls: Unify method name for updating avatar
- - - - -
7 changed files:
- gajim/chat_control.py
- gajim/chat_control_base.py
- gajim/common/config.py
- gajim/common/setting_values.py
- gajim/data/gui/groupchat_control.ui
- gajim/groupchat_control.py
- gajim/privatechat_control.py
Changes:
=====================================
gajim/chat_control.py
=====================================
@@ -141,7 +141,7 @@ class ChatControl(ChatControlBase):
self.update_toolbar()
self.update_all_pep_types()
- self.show_avatar()
+ self._update_avatar()
# Hook up signals
widget = self.xml.location_eventbox
@@ -673,7 +673,7 @@ class ChatControl(ChatControlBase):
@event_filter(['account', 'jid'])
def _on_update_roster_avatar(self, obj):
- self.show_avatar()
+ self._update_avatar()
def _nec_ping(self, event):
if self.contact != event.contact:
@@ -838,7 +838,7 @@ class ChatControl(ChatControlBase):
# The name banner is drawn here
ChatControlBase.update_ui(self)
self.update_toolbar()
- self.show_avatar()
+ self._update_avatar()
def draw_banner_text(self):
"""
@@ -1159,10 +1159,7 @@ class ChatControl(ChatControlBase):
return
on_yes(self)
- def show_avatar(self):
- if not app.settings.get('show_avatar_in_chat'):
- return
-
+ def _update_avatar(self):
scale = self.parent_win.window.get_scale_factor()
surface = app.contacts.get_avatar(self.account,
self.contact.jid,
=====================================
gajim/chat_control_base.py
=====================================
@@ -344,9 +344,6 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper):
Derived types MAY implement this.
"""
self.draw_banner_text()
- self._update_banner_state_image()
- app.plugin_manager.gui_extension_point('chat_control_base_draw_banner',
- self)
def update_toolbar(self):
"""
@@ -373,11 +370,6 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper):
"""
self.draw_banner()
- def _update_banner_state_image(self):
- """
- Derived types MAY implement this
- """
-
def _update_toolbar(self):
"""
Derived types MAY implement this
@@ -679,8 +671,6 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper):
# PluginSystem: removing GUI extension points
# connected with ChatControlBase instance object
app.plugin_manager.remove_gui_extension_point('chat_control_base', self)
- app.plugin_manager.remove_gui_extension_point(
- 'chat_control_base_draw_banner', self)
app.plugin_manager.remove_gui_extension_point(
'chat_control_base_update_toolbar', self)
=====================================
gajim/common/config.py
=====================================
@@ -194,7 +194,6 @@ class Config:
#always, never, peracct, pertype should not be translated
_('Controls the window where new messages are placed.\n\'always\' - All messages are sent to a single window.\n\'always_with_roster\' - Like \'always\' but the messages are in a single window along with the contact list.\n\'never\' - All messages get their own window.\n\'peracct\' - Messages for each account are sent to a specific window.\n\'pertype\' - Each message type (e.g. chats vs. group chats) is sent to a specific window.')],
'show_roster_on_startup':[opt_str, 'always', _('Show contact list window on startup.\n\'always\' - Always show contact list window.\n\'never\' - Never show contact list window.\n\'last_state\' - Restore last state of the contact list window.')],
- 'show_avatar_in_chat': [opt_bool, True, _('If enabled, Gajim displays the avatar in the chat window.')],
'escape_key_closes': [opt_bool, False, _('If enabled, pressing Esc closes a tab/window.')],
'hide_groupchat_banner': [opt_bool, False, _('Hides the banner in a group chat window.')],
'hide_chat_banner': [opt_bool, False, _('Hides the banner in a 1:1 chat window.')],
=====================================
gajim/common/setting_values.py
=====================================
@@ -131,7 +131,6 @@ APP_SETTINGS = {
'notification_timeout': 5,
'one_message_window': 'always',
'show_roster_on_startup': 'always',
- 'show_avatar_in_chat': True,
'escape_key_closes': False,
'hide_groupchat_banner': False,
'hide_chat_banner': False,
@@ -426,7 +425,6 @@ ADVANCED_SETTINGS = {
'roster_window_skip_taskbar': _('Don\'t show contact list window in the system taskbar.'),
'use_urgency_hint': _('If enabled, Gajim makes the window flash (the default behaviour in most Window Managers) when holding pending events.'),
'notification_timeout': '',
- 'show_avatar_in_chat': _('If enabled, Gajim displays the avatar in the chat window.'),
'escape_key_closes': _('If enabled, pressing Esc closes a tab/window.'),
'hide_groupchat_banner': _('Hides the banner in a group chat window.'),
'hide_chat_banner': _('Hides the banner in a 1:1 chat window.'),
=====================================
gajim/data/gui/groupchat_control.ui
=====================================
@@ -161,7 +161,7 @@
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
- <object class="GtkImage" id="gc_banner_status_image">
+ <object class="GtkImage" id="avatar_image">
<property name="width_request">48</property>
<property name="height_request">48</property>
<property name="visible">True</property>
=====================================
gajim/groupchat_control.py
=====================================
@@ -166,6 +166,8 @@ class GroupchatControl(ChatControlBase):
lambda *args: self.show_roster())
self.xml.banner_actionbar.pack_end(self.hide_roster_button)
+ self._update_avatar()
+
# Holds CaptchaRequest widget
self._captcha_request = None
@@ -808,14 +810,14 @@ class GroupchatControl(ChatControlBase):
AvatarSize.ROSTER,
self.scale_factor)
- def _update_banner_state_image(self):
+ def _update_avatar(self):
surface = app.interface.avatar_storage.get_muc_surface(
self.account,
self.contact.jid,
AvatarSize.CHAT,
self.scale_factor)
- self.xml.gc_banner_status_image.set_from_surface(surface)
+ self.xml.avatar_image.set_from_surface(surface)
def draw_banner_text(self):
"""
@@ -826,7 +828,7 @@ class GroupchatControl(ChatControlBase):
@event_filter(['jid=room_jid'])
def _on_update_room_avatar(self, event):
- self._update_banner_state_image()
+ self._update_avatar()
@event_filter(['account'])
def _on_bookmarks_received(self, _event):
@@ -1187,8 +1189,6 @@ class GroupchatControl(ChatControlBase):
self.is_connected = True
ChatControlBase.got_connected(self)
- # We don't redraw the whole banner here, because only icon change
- self._update_banner_state_image()
if self.parent_win:
self.parent_win.redraw_tab(self)
@@ -1224,8 +1224,6 @@ class GroupchatControl(ChatControlBase):
# Update Roster
app.interface.roster.draw_contact(self.room_jid, self.account)
- # We don't redraw the whole banner here, because only icon change
- self._update_banner_state_image()
if self.parent_win:
self.parent_win.redraw_tab(self)
=====================================
gajim/privatechat_control.py
=====================================
@@ -181,7 +181,7 @@ class PrivateChatControl(ChatControl):
def _on_update_gc_avatar(self, event):
if event.contact != self.gc_contact:
return
- self.show_avatar()
+ self._update_avatar()
def send_message(self, message, xhtml=None, process_commands=True,
attention=False):
@@ -215,10 +215,7 @@ class PrivateChatControl(ChatControl):
else:
self.got_connected()
- def show_avatar(self):
- if not app.settings.get('show_avatar_in_chat'):
- return
-
+ def _update_avatar(self):
scale = self.parent_win.window.get_scale_factor()
surface = self.gc_contact.get_avatar(AvatarSize.CHAT,
scale,
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/78e4e2bab4da4de283dc23b6797a21e…
--
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/78e4e2bab4da4de283dc23b6797a21e…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
1eff95f7 by lovetox at 2020-09-02T13:23:43+02:00
MessageWindow: Remove controls on destroy
- - - - -
1 changed file:
- gajim/message_window.py
Changes:
=====================================
gajim/message_window.py
=====================================
@@ -397,7 +397,7 @@ class MessageWindow(EventHelper):
return True # halt the delete for the moment
def _on_window_destroy(self, win):
- for ctrl in self.controls():
+ for ctrl in self.remove_all_controls():
ctrl.shutdown()
self._controls.clear()
# Clean up handlers connected to the parent window, this is important since
@@ -571,6 +571,7 @@ class MessageWindow(EventHelper):
fctrl = self.get_control(fjid, ctrl.account)
bctrl = self.get_control(jid, ctrl.account)
+
# keep last_message_time around unless this was our last control with
# that jid
if not fctrl and not bctrl and \
@@ -758,6 +759,12 @@ class MessageWindow(EventHelper):
for ctrl in list(jid_dict.values()):
yield ctrl
+ def remove_all_controls(self):
+ for _account, control_dict in self._controls.items():
+ for contact in list(control_dict.keys()):
+ yield control_dict[contact]
+ del control_dict[contact]
+
def get_nb_controls(self):
return sum(len(jid_dict) for jid_dict in self._controls.values())
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/1eff95f7c08ce42b90700d7057d0e1ca…
--
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/1eff95f7c08ce42b90700d7057d0e1ca…
You're receiving this email because of your account on dev.gajim.org.