quick_frontend, primitivus: fixes a couple of issues:

- chat: notification was raising an error when you just entered the room and self.nick is None
    - quick_widget: deleting a widget was modifying a dict while looping on it + unselect widget when it's being deleted
This commit is contained in:
souliane 2015-04-16 17:17:28 +02:00
commit 2203e6aa52
4 changed files with 12 additions and 2 deletions

View file

@ -41,6 +41,7 @@ media_dir=~/sat/media/destination/path
### end sat.conf ###
Of course, replace ~/sat/media/destination/path with the actual path you want to use.
Check the wiki for more information about this configuration file: http://wiki.goffi.org/wiki/Configuration/en
You should now be able to launch sat:
- to launch the backend, enter

View file

@ -365,7 +365,7 @@ class Chat(PrimitivusWidget, QuickChat):
if not self.host.x_notify.hasFocus():
if self.type == C.CHAT_ONE2ONE:
self.host.x_notify.sendNotification(_("Primitivus: %s is talking to you") % from_jid)
elif self.nick.lower() in msg.lower():
elif self.nick is not None and self.nick.lower() in msg.lower():
self.host.x_notify.sendNotification(_("Primitivus: %(user)s mentioned you in room '%(room)s'") % {'user': from_jid, 'room': self.target})
# MENU EVENTS #

View file

@ -249,6 +249,9 @@ class QuickContactList(QuickWidget):
self._cache.clear()
self._groups.clear()
self._specials.clear()
self._special_extras.clear()
self._roster.clear()
self._alerts.clear()
self.update()
def setContact(self, entity, groups=None, attributes=None, in_roster=False):

View file

@ -232,9 +232,12 @@ class QuickWidgetsManager(object):
widget_to_delete.onDelete()
for widget_map in self._widgets.itervalues():
to_delete = set()
for hash_, widget in widget_map.iteritems():
if widget_to_delete is widget:
del widget_map[hash_]
to_delete.add(hash_)
for hash_ in to_delete:
del widget_map[hash_]
class QuickWidget(object):
@ -308,3 +311,6 @@ class QuickWidget(object):
def onDelete(self):
"""Called when a widget is deleted"""
log.debug(u"deleting widget {}".format(self)) # Must be implemented by frontends
if self.host.selected_widget == self:
self.host.selected_widget = None