summaryrefslogtreecommitdiff
path: root/src/tabs
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2015-06-22 00:54:43 +0200
committermathieui <mathieui@mathieui.net>2015-06-22 00:55:21 +0200
commit79644da690c0255d286ebeee1e2792f3018ff568 (patch)
treed334d418e415e9615693775f1b035a5781786597 /src/tabs
parent0627a85483ae9e1dc8e90561202691fda3020026 (diff)
downloadpoezio-79644da690c0255d286ebeee1e2792f3018ff568.tar.gz
poezio-79644da690c0255d286ebeee1e2792f3018ff568.tar.bz2
poezio-79644da690c0255d286ebeee1e2792f3018ff568.tar.xz
poezio-79644da690c0255d286ebeee1e2792f3018ff568.zip
Improve the performance of the userlist refresh
Also only run one regex on search_for_color()
Diffstat (limited to 'src/tabs')
-rw-r--r--src/tabs/muctab.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/tabs/muctab.py b/src/tabs/muctab.py
index bb0f51d9..6c961874 100644
--- a/src/tabs/muctab.py
+++ b/src/tabs/muctab.py
@@ -10,12 +10,12 @@ user list, and updates private tabs when necessary.
import logging
log = logging.getLogger(__name__)
+import bisect
import curses
import os
import random
import re
from datetime import datetime
-from functools import reduce
from . import ChatTab, Tab
@@ -1089,7 +1089,7 @@ class MucTab(ChatTab):
and typ != "unavailable"):
new_user = User(from_nick, affiliation, show,
status, role, jid, deterministic, color)
- self.users.append(new_user)
+ bisect.insort_left(self.users, new_user)
self.core.events.trigger('muc_join', presence, self)
if '110' in status_codes or self.own_nick == from_nick:
# second part of the condition is a workaround for old
@@ -1200,7 +1200,7 @@ class MucTab(ChatTab):
affiliation, role, show, status)
if self.core.current_tab() is self:
self.text_win.refresh()
- self.user_win.refresh(self.users)
+ self.user_win.refresh_if_changed(self.users)
self.info_header.refresh(self, self.text_win)
self.input.refresh()
self.core.doupdate()
@@ -1230,7 +1230,7 @@ class MucTab(ChatTab):
deterministic = config.get_by_tabname('deterministic_nick_colors', self.name)
user = User(from_nick, affiliation,
show, status, role, jid, deterministic, color)
- self.users.append(user)
+ bisect.insort_left(self.users, user)
hide_exit_join = config.get_by_tabname('hide_exit_join',
self.general_jid)
if hide_exit_join != 0:
@@ -1277,6 +1277,8 @@ class MucTab(ChatTab):
self.name)
user.change_color(color, deterministic)
user.change_nick(new_nick)
+ self.users.remove(user)
+ bisect.insort_left(self.users, user)
if config.get_by_tabname('display_user_color_in_join_part',
self.general_jid):
@@ -1698,8 +1700,7 @@ class MucTab(ChatTab):
return color
nick_color_aliases = config.get_by_tabname('nick_color_aliases', self.name)
if nick_color_aliases:
- nick_alias = re.sub('^_*', '', nick)
- nick_alias = re.sub('_*$', '', nick_alias)
+ nick_alias = re.sub('^_*(.*?)_*$', '\\1', nick)
color = config.get_by_tabname(nick_alias, 'muc_colors')
return color