From 52c788795ab8fba949c7e023fff55214f5320afb Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Wed, 28 Oct 2009 10:58:43 +0100 Subject: [PATCH] we can now drop in the middle of a metacontact. Fixes #4804 --- src/roster_window.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/roster_window.py b/src/roster_window.py index d0d2a5fe1..72b6ad969 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -4035,7 +4035,7 @@ class RosterWindow: path_dest, position = drop_info if position == gtk.TREE_VIEW_DROP_BEFORE and len(path_dest) == 2 \ - and path_dest[1] == 0: # dropped before the first group + and path_dest[1] == 0: # dropped before the first group return if position == gtk.TREE_VIEW_DROP_BEFORE and len(path_dest) == 2: # dropped before a group: we drop it in the previous group every time @@ -4175,19 +4175,29 @@ class RosterWindow: return # Is the contact we drag a meta contact? - accounts = (self.regroup and gajim.contacts.get_accounts()) or account_source - is_big_brother = gajim.contacts.is_big_brother(account_source, jid_source, accounts) + accounts = (self.regroup and gajim.contacts.get_accounts()) or \ + account_source + is_big_brother = gajim.contacts.is_big_brother(account_source, jid_source, + accounts) - # Contact drop on group row or between two contacts - if type_dest == 'group' or position == gtk.TREE_VIEW_DROP_BEFORE or \ - position == gtk.TREE_VIEW_DROP_AFTER: + drop_in_middle_of_meta = False + if type_dest == 'contact': + if position == gtk.TREE_VIEW_DROP_BEFORE and len(path_dest) == 4: + drop_in_middle_of_meta = True + if position == gtk.TREE_VIEW_DROP_AFTER and (len(path_dest) == 4 or \ + self.modelfilter.iter_has_child(iter_dest)): + drop_in_middle_of_meta = True + # Contact drop on group row or between two contacts that are + # not metacontacts + if (type_dest == 'group' or position in (gtk.TREE_VIEW_DROP_BEFORE, + gtk.TREE_VIEW_DROP_AFTER)) and not drop_in_middle_of_meta: self.on_drop_in_group(None, account_source, c_source, grp_dest, is_big_brother, context, etime, grp_source) return # Contact drop on another contact, make meta contacts if position == gtk.TREE_VIEW_DROP_INTO_OR_AFTER or \ - position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE: + position == gtk.TREE_VIEW_DROP_INTO_OR_BEFORE or drop_in_middle_of_meta: c_dest = gajim.contacts.get_contact_with_highest_priority(account_dest, jid_dest) if not c_dest: @@ -4211,8 +4221,6 @@ class RosterWindow: menu.connect('selection-done', gtkgui_helpers.destroy_widget) menu.show_all() menu.popup(None, None, None, 1, etime) -# self.on_drop_in_contact(treeview, account_source, c_source, -# account_dest, c_dest, is_big_brother, context, etime) ################################################################################ ### Everything about images and icons....