diff --git a/src/gajim.py b/src/gajim.py index ed69f496f..acc603837 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1787,23 +1787,27 @@ class Interface: gajim.block_signed_in_notifications[account] = True self.roster.set_actions_menu_needs_rebuild() self.roster.draw_account(account) - if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \ - gajim.connections[account].connected in (2, 3): + state = self.sleeper.getState() + connected = gajim.connections[account].connected + if state != common.sleepy.STATE_UNKNOWN and connected in (2, 3): # we go online or free for chat, so we activate auto status gajim.sleeper_state[account] = 'online' - else: + elif not ((state == common.sleepy.STATE_AWAY and connected == 4) or \ + (state == common.sleepy.STATE_XA and connected == 5)): + # If we are autoaway/xa and come back after a disconnection, do nothing + # Else disable autoaway gajim.sleeper_state[account] = 'off' invisible_show = gajim.SHOW_LIST.index('invisible') # We cannot join rooms if we are invisible if gajim.connections[account].connected == invisible_show: return # join already open groupchats - for gc_control in self.msg_win_mgr.get_controls(message_control.TYPE_GC) + \ - self.minimized_controls[account].values(): + for gc_control in self.msg_win_mgr.get_controls(message_control.TYPE_GC) \ + + self.minimized_controls[account].values(): if account != gc_control.account: continue room_jid = gc_control.room_jid - if room_jid in gajim.gc_connected[account] and\ + if room_jid in gajim.gc_connected[account] and \ gajim.gc_connected[account][room_jid]: continue nick = gc_control.nick