Do not risk invalidating child_model iters when redrawing a contact.
Move logic to update the family when the big brother has changed to an extra function.
ToDo:
* nearby_family code duplication
* totaly restructure and cleanup draw_contact
-When creating self-contact contact instance, store it with group 'self_contact', so it never goes in General
-Make general group not be seen visible because of self contact even if self.regroup
-Remove the self contact instance itself too when WE deconnect or when IT deconnect, so we will
not see it as offline if refilling roster (regroup account for example)
Sorry, it just wasn't maintainable. The problem is the current libotr
API. I'm sick of working around the strange libotr API, sick of getting
HTML messages, sick of losing messages. The final argument for
completely removing it was that we can't get the message ID of a sent
msg anymore - which we need. I tried to work around this as well, but
there seems to be no way to wait for a signal in glib the way I would
need it for the workaround (I wanted to emit a signal in inject_message
and then wait for it after the call to otr_message_fragment_and_send
so the signal can pass us the message id). And the last reason is that
we're heading towards a new release and thus want to stabilize the code,
thus don't have time to work around even more libotr API strangeness.
I will give feedback to the libotr developers, who are currently
planning a new API, so that we can hopefully see OTR support once again
as soon as libotr4 is released.
Kjell already announced that he will continue his branch:
https://code.launchpad.net/~afflux/gajim/otr
I really hope the libotr devs will provide a sane API with libotr4 so
we can integrate OTR support again.
Oh, and I added one more try/except block for OS X.
This code seems not necessary. But why does that created that problem ?
It seems for some reason, path is not good. Probably the iter itself is not good. So expand act on the wrong
group (I can proove that).
Someone completely broke it by trying to port it to native GTK.
However, that person didn't only break it with X11 GTK, with
native GTK it wasn't working correctly either.
Fixed it by adding lots of try/except blocks. Someone definitely
deserves to be slaughtered for completely breaking it on OS X…
* rename draw_roster to better express its functionality
* remove unnecessary call of refilter()
* directly remove groups when there is only one child left and we want to remove it
Note: in gtkTreeStore iters persist as long as the row isn't removed. Iters in Modelfilter persist as long as the model is unchanged.
* update documentation and fix indentation
* don't remove offline contacts from roster when we open the last pending, non chat message event
* store account and jid per event
Sorry, bct, but I think it is to early to merge that as it completely
breaks. It seems nobody in gajim@conference.gajim.org considers it
usable yet.
I don't know if you got asterix' ok for it and I'm sorry if I reverted
it now although you had his ok, but having broken trunk is very
contra-productive. I think it was just too early to merge.
* Fix helpers.py so URL is decoded correctly.
* Fix code in roster_window.py so the \0 that's alway the last file
on win32 is ignored.
This also fixes and closes#2398.
-redraw group expand state
-when removing last metacontact little brother, remove meta tag for big brother. Else that confuse when
moving via edit group.
Note that edit group is broken by http://trac.gajim.org/changeset/9551
-fix row not expanded when contact connected in group with no one online yet
-fix WHEN filter is done when contact disconnect/connect
-fix number of connected contacts not showed for new groups
-fix General created when moving a contact to another group
-restore call to _adjust_group_expand_collapse_state() even if not filtering in
on_model_row_has_child_toggled(). Is used.
-restore "# Draw the contact and its groups contact" removed in last changeset but
-change way to toogle self.starting so it works when add_account_contacts() is called from gajim.py too. One
useless call to draw_account() added, maybe.
-If showingOfflines, all contacts are visible, set visibility True FAST
-Always use self.modelfilter instead of self.tree.get_model()
-filter twice to show groups with no contacts inside in the correct expand state when showingOfflines. ( We
can't expand the group before we filter, and we need to filter to effectively show tree expand state in model )
-UNSURE : call _adjust_group_expand_collapse_state() only if filtering in on_model_row_has_child_toggled(). That
seems sufficient and when not filtering, it works better with :
-when contact change status, don't refilter, only adjust group row state. Steve-e, do we need to filter in a
case I don't see ?
-in visible_func : Don't initialize 'accounts' var if not needed
-Don't draw anything in add_contact(), that seems to be done somewhere else anyway
* Show all groups in merged accounts view that have online contacts. Fixes#3890
* Allow metacontacts over several accounts. Fixes#3889
* Fix on_drop_in_group when two accounts in merged view have the same contact
* Fix potential traceback when receiving a message
Moved newly created auto_join_bookmarks() to good source file.
Fix :
-when using bookmark auto from join dialog : Action rebuild now done; Add GC sorted in list
-when using gc_control->bookmark : Store password if any.
Contacts are now online hidden when they connect/reconnect and not completely removed/readded. Should come with a great speed improvement for people with big rosters.
There are still a few known problems but non that should dalay this patch any longer. Related bugs will be tracked with 'modelfilter' keyword.
See #1201
-Check if there are pending events and send offline even if we don't ask a status message (was a indentation
mistake I think)
- Really make unread and recent working according to 'notify_on_all_muc_messages' value
- be faster, hopefully
faster
- Stop adding pm chat messages received to unread messages. This is in addition to [8311], but
works also when chat win is already opened now.
- Automatically remove unread_message lines for messages older than a month, so we will clear this
table for everybody, and keep it quite clear. Specially because messages can still be blocked here
if it's from someone not in the roster and we don't open it during the session. This can be long
at first connection with this version, because we delete a lot of lines (nearly one per PMs you
received since a long time). Could also be a very little longer during one month.